`
yzd
  • 浏览: 1826723 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

what if 让我来安排大学本科的课程

 
阅读更多

现在都快毕业了,读了3年大学,学院的教学一直让我诟病,感觉除了坑爹,还是坑爹,特别是专业的方向--嵌入式,我都不想提了。当初刚入学,人家还问我,为什么报嵌入式方向?我那时觉得又能搞软件又能搞点硬件还不错,那时还幻想能整个机器人什么的,结果上完嵌入式,彻底摧毁你的兴趣。实验室那些都不知是什么鸟开发机。

不过,既然你说它不好,你就应该提出一个更好的解决方案。那好,现在让我来构建一个乌托邦。

现在来安排一个大学本科的计算机类专业教学计划吧。

先列举我的基本原则吧。

  1. 笔试的话,原则上采用开卷考,因为我觉得,靠背诵,靠查书就能解决的问题就不是问题,人是用来思考、分析问题的,背诵的话,交给机器就行。其他笔试的话,像不少公司的笔试题那种,我觉得就应该闭卷,因为都是很基础的东西,一些很基础的东西还去查书?我觉得说不过去。所以总结一下,有些知识要静态链接到程序,有些需要的时候动态加载就行。
  2. 分数采用等级制,也就是ABC。我不觉得考99分的就比98分的强,但我觉得如果学得好的话,拿A应该没问题,对分数看得太功利我觉得会让学生变得猥琐。
  3. 重内容,轻形式。实验报告什么的,能少写就少写。这东西没少写过,有没有用我心里清楚的很。要布置些有用的东西,而不是为了打包给学院存档。当然,文档也是重要的能力,但我不觉得写这东西有鸟用,还不如写写博客,总结心得什么的。
  4. 取消选修学分值。自己觉得喜欢学点啥就去学吧,学校的课不爽,去整点开源项目什么的也是不错的选择。课程安排也可以弱化,不要用课程制,用主题实验室的方式或者兴趣小组都不错,给学生最大自由。
对于教学课程,我的打算是大课程化!相关的课程合并到一起,消除课程间的割裂,加强课程间的联系。具体的课程安排:
  1. 算法与数据结构。课程包括c语言,离散数学,数据结构,算法。编程语言的话,我还是会选择c,当然这里的c泛指c/c++(不包括面向对象部分)。据说国外的大学有用java,python教学的,但我觉得吧,用c语言目前还是具有一定的靠谱性,因为搞acm主要还是用c,嘿嘿。课程的话,一定要强调动手能力,基本就靠机试来考察吧,平时作业你爱抄什么的随便。
  2. 数理逻辑基础。高等数学,线性代数,概率统计,数论,具体数学什么的吧。当年高数没学好,很惭愧。数理逻辑是很重要的素养,这些课的话,联系不是特别紧密,就可以分开上,不过我觉得要跟编程结合起来一起上,比如线性代数,好像跟图形学联系很紧密(我没上过这一块的课,不敢妄言)。我想起大学前那些理科不好的学生,一直有这样的抱怨,数学学来干嘛,有计算机就行了啊。我想,学校除了上课,最好把为什么要上这门课的原因交代清楚,毕竟不是所有学生都悟性那么高,而且人一遇到困难就容易给自己找借口开脱。这种课我想有不少学生都会抱怨学完有什么用,所以最直接的办法就是联系具体应用,把数学的power展示给学生看。
  3. 面向对象与软件工程。语言c++/java任选,注意跟自己以后职业规划match。虽然我觉得语言只是工具,并不重要,但是面试java岗位的时候面试官问你java的问题,你说你只会c++,会让大家觉得很为难的,现实有无奈的地方。语言安排学生自学就行。课程完成一个相对大型的project,先用面向过程写,然后改写成面向对象,最后再加上设计模式。大学的c++课还是停留在“要把代码写到类里面”的程度,然后举一些扯蛋的创建类例子,比如人,汽车,动物什么的乱七八糟的派生,上完表示对面向对象还是一头雾水(难怪还没有对象,^_^)。人类对事物有一个认识的过程,我认为人为地割裂开不科学,所以安排了2个工程改写的过程,目的就是让学生了解整个发展过程。为什么要用面向对象?肯定是因为面向过程有不足。我觉得这是个重要的问题,是应该重点对比清楚的问题。至于软件工程这课,现在觉得唯一比较有用的就是介绍了版本管理软件的使用。没有一定的工程经验,跟你谈软件工程,这本身就是扯蛋。还有那《系统分析与设计》恶心的分析寄存箱作业,现在想起来还是觉得蛋疼。
  4. 深入了解计算机系统。课程包括计算机科学概论,计算机组成原理,操作系统,linux编程(APUE)。课程最后写个小型的操作系统,差不多啦
  5. 网络应用课。学院大三才上网络课,而且上完还是什么都不懂,坑爹。实验课更是傻B无比。买了一套网络的书,等研究下。
    感觉这样的作业不错啊,就是后面的“提交详细实验报告”感觉比较恶心。
  6. 数据库。企业关注的锁,存储过程,高并发,性能,跟教学的关注点好像都搭不上。

选修课?

  1. 乐高魔方机器人。应该蛮好玩。
  2. 编译原理。学院那个实现一个编程语言还蛮不错,可惜那时候大三下学期没时间做,等有空再做做,编译原理是个好东西,感觉放到必修不错。跟webkit结合起来好像不错。
  3. 与反。太敏感,我觉得学院肯定不敢开这课。
  4. 黑客攻防战。目标可以是自己学校的网站,嘿。
  5. 游戏开发。引擎,图形学那种。不是我们学院那个老头开的吹水课那种。
  6. 开源项目的研究。
  7. 等等。。。


找工作?

之前看到的说法,大学本科是基础教育,不是职业教育(北大青鸟?)。那本科出来找工作不就是坑爹吗?不管如何,工作还是要找的,作为学院我觉得还是得为学生以后就业在课程安排上提供一些引导,而不是在就业推荐表这种傻B玩意盖个章就了事。学院是有分专业方向的,不过现在看来,应该是失败的(不同意可以来探讨下)。我觉得吧,现在入学时大方向统招是趋势(先打完基础再说),然后根据岗位提供一些对应的选修课系列供大家选择更靠谱(分测试,运维,开发等,而不是什么计应,通软之类不靠谱的玩意。BTW,当年上了软测的课,表示很坑爹)。大学四年,说白了就只有3年,好短啊。哎,哥现在后悔都来不及了,哎,不说这个桑心事了。


最后再吐槽一下学院的学费和招生吧,软件学院学费出名贵,我觉得这是一个相当不好的行业规则。另外中大软件调剂的学生太多,一来耽误这些学生的前程,二来也影响其他想学的学生(大作业,组队,想想就恶心)。

多反思,多总结,是好事。现在回想起来,大学基本过得比较失败,浪费了不少时间在一些不知所谓的课程上,大学的课程,从安排和内容上看,肯定是有问题的。像有些人,只顾自己编程,挂了很多课,最后也牛B哄哄的;有些人,分数考得很高,动手写个程序都写不好。。。


鄙人才疏学浅,欢迎大家交流探讨。





分享到:
评论
1 楼 evasiu 2012-02-17  
表示很赞同楼主的想法。特别是分数等级制以及大课程化这两点想法,不过问题可能出在师资上面吧。后来发现很多老师原来是被赶鸭子上架地安排去上某些课的,如此一来,很难为课程提供大视野。
不过即使学校做不到,这篇文章还是能给学计算机的童鞋一些启发的,呵呵。

相关推荐

Global site tag (gtag.js) - Google Analytics