对大学 IT 专业教育培训的反馈

发表于:2013-02-26来源:SoftwareTeacher作者:SoftwareTeacher点击数: 标签:教育
[这是2009 年 写的文章, 一部分收集到 这本书里了。 这两天看到软件学院同学对教学的反馈, 看来好些问题都没有得到解决。 教育部门时不时会开教学研讨会, 去世界有名的大学, 公司参观, 他们还要参观多少年? 他们会请已经毕业的学生来提意见么? 学生要年复

  中国的大学生教育体系中,大约有10% 的学生属于 IT 相关的专业 (计算机科学,软件,MIS,电子工程, 软件工程,等)。 这些学生毕业之后,就成为IT 产业的从业者或用户,他们是IT 行业的希望。 这些学生在接受了 4-6 年的教育之后,对这个教育系统有什么反馈呢? 我问了一些刚刚毕业的软件专业的同学,软件教育迫切要改变的做法是什么? 下面是一些回答:

  *** 同学们想说什么 ***

  a) 实践! 软件教育离不开实践,不要太强调闭卷考试, 老师一定要让学生实践,实习。给一个真实的客户做项目和自己幻想一个需求来做项目是有很大区别的。自己从头写程序和维护别人写的代码是有很大区别的。 没有真实的需求,没有软件的增量开发,没有团队合作,程序设计和软件工程中的大部分理论都沦为空谈。

  b) 讲为什么! 学生上了很多课,反而觉得很迷茫,这些课的意义是什么? 为什么有这么多的原理,数据结构, 红的树,黑的树,模式和算法? 不知道我学的东西有什么用,怎么用。老师似乎不想告诉我们这些课程在实践中的意义 (或者他们也没实践过? )。学生只有死记硬背来应付考试,考试后全忘记。

  c) 打好基础,其他自学! 好好学基础课,特别是算法, 数据结构, 编译原理,操作系统 。 其他课的内容用到了自己学就可以了。

  d) IT 教育不光是代码! 软件教育不是孤立体,希望在软件教育中把文科的知识联系进来,和设计联系起来; 把软件/IT 行业有趣的发展历史放进来 (讲讲图灵,冯·诺依曼,讲讲Smalltalk, 各种语言的源和流)。培养学生对这个行业的兴趣、热情和敏感。 提倡互动,介绍同学上相关的论坛,网站,开拓视野。

  [建议大家看 《浪潮之巅》]

  *** 我看到的现象 ***

  由于工作的关系,我在过去的几年中访问了十多所软件学院或计算机学院,和不少老师,学生座谈过。我在微软亚洲研究院里也接触了来自各个学校的学生,谈得多了,就有下面的一些想法。这里我主要谈计算机软件的教育。

  想来的人来不了

  学校里都是按照高考/考研的成绩决定专业去向,我听到一些喜欢玩游戏的学生特别想来软件学院,但是由于成绩不够好,来不了。 一些成绩挺好的学生优先选择了软件专业,因为大家都说这个专业好找工作。 但是到了快毕业的时候才发现 不对劲, 于是有人后悔: “其实我不喜欢写程序,我想转行。” 咳,如果你的位置留给当初那些喜欢玩游戏的学生该多好。

  教务处的规定

  老师反映说,本来想锻炼同学的团队协作精神,期末大作业让同学们分组合作完成一个项目,但是没想到教务处不同意。 教务处坚持大作业必须每个同学单独做,不能搞团队协作,其理由是团队协作之后,有人就会偷懒!

  其实,让学生一个人去做,他/她也有可能去糊弄,抄袭。 而且正因为缺少协作,一个人不能完成很高质量的软件,单干的同学更有可能去抄。 最后老师争不过教务处,只好让每个同学单独做一个项目了事,一个普通学生很难做完一个项目,怎么办? 那只好 “参考” 别人的东西,有人负责测试么? 没有。这也是每个班的四五十个学生作业只有4-5 个版本的原因之一。这么多项目,老师能一一仔细审阅么? 显然也不行。 但是这事教务处的规定,就这么糊弄过去吧。 据说在一些学校里,教务处非常强势,能决定老师的绩效考核。

  知识和技能

  很多人认为,大学是传授知识的地方。很多知识 (Knowledge)可以讲授,同学们也可以自己查找,学习。 例如程序设计语言的一些边边角角的规定,在工作中如果忘了,那就现查资料,或者写一个测试程序验证一下。 但是技能 (Skill) 则要通过实际的反复训练,才能获得,并优化。 我看到同学们经常能够背诵 “在设计中应该高内聚,低耦合”, 但是在实际中根本不知道如何应用。 就如同大家都可以在理论上掌握如何下围棋 - “要让每一步占领全局最有价值的要点”, 但是在实战中下的棋却支离破碎,溃不成军。

  我们在考试的时候,能不能少考一些死的知识,而多考一些技能? 学校里能练习什么技能呢?很多:

  自己学习的能力 (能不能自己学习一门语言,然后应用? 为什么非得先要老师讲解?)

  理解别人的意思和动机 (inter-personal awareness)

  表达自己想法的能力 (不妨从做 PPT 演示开始)

  说服,影响同伴的能力 (大家一起合作,如何能让团队按自己的想法前进?)

  制定计划,并执行计划的能力 (是自己的计划,而不是老师给订的计划)

  总结,改进的能力 (一个项目之后,能否心平气和地总结,改进?)

  更多关于知识, 技能, 和技能的反面:

  技能的反面 - 魔方和模仿

  基础知识很扎实 - 但是面试就是做不出来, 怎么办?

  学校教育的目的

  有一年, 我教的一个班是大三的学生, 他们反映课程压力很大 (同时上编译原理, 数据库等), 我跟系里建议是否把软件工程挪到大四去上, 这样他们学的数据库知识能更好地用上. 系里的老师列出了很多担心, 其中最重要的一点是 - 学生们大四的时候要考研, 所以不能上太累的课, 要让他们有时间为考研复习! 我们谈论了许久, 我终于明白系里面在选择“让学生上有意义的课” 和 "让学生有时间准备考研" 两者之间, 选择了后者。 其实天朝学校的目的大抵如此 - 让学生顺利地升入下一个阶段, 就完事儿了。 在这种思想指导下:

  小学六年级开始复习, 准备小升初;

  初三开始复习, 准备升高中;

  高三开始复习, 准备升大学;

  大四开始复习, 准备考研;

  有些同学还要花很多时间准备考一个 “国考”.

原文转自:http://www.cnblogs.com/xinz/archive/2011/12/03/2274445.html