为什么计算机系的老师教不好软件工程水平的编程?
参考了这个讨论,结合我们所处的环境,发表一下自己对计算机系软工教学的思考。
就我们系来说,在学习软件工程这么课之前,好像一直都处于理论学习的阶段,平时的作业都只是一些简单的练习。甚至有些课程,现在都还不知道自己该在什么地方去应用它们,感觉真是白学了。
记得大二时的Java课,虽然说是选修课,可大部分人都不知道老师讲了些什么。最后大作业的时候还得自己按平时写作业的方法编写一个完整的项目。在我看来,这种没有方法的编程,根本锻炼不了我们写程序的能力。更要命的是,不能团队合作,害怕有的人会偷懒。在真实的项目中,工作分配肯定也是不均匀的,但这也是我们要学会解决的问题之一啊。
其他课程也差不多,就像这学期的编译课,完全把课程设计当成了一个作业,而不是让大家组队合作来做一个可行有用的编译器。因为在老师看来,课程设计是为了帮助我们理解编译原理这门课程所学的理论知识,至于你以后能不能写出有用的东西,那就是你自己的问题了。作业一交,任务完成了,你以后爱干嘛干嘛去吧……
从中我们也可以看出一个共同点,编程在这种教育模式下只不过是我们学习的一个工具。老师只要求我们会编程,而不是教我们怎样去编程。
所以在我看来:
这根本不是“计算机科学”,应为它根本就不科学。
那么,为毛计算机系的老师教不好软件工程水平的编程呢?
1、所谓的培养计划。大概领导是这么想的吧:作为我航计算机科学与技术系的,不把你们培养成计算机科学家怎么行呢?在他们看来,计算机科学与软件工程半毛钱关系都没有。想成为软件工程师?门都没有!
也许这是一个借口,又或许他们失算了。
所以向我们大量灌输理论知识,仿佛是理所当然的。当然,没有老师们彻彻底底的贯彻,显然这个目标也是无法达成的。所以呢,呵呵……让我这种不想成为一个计算机科学家的人情何以堪?让那些以后不想从事计算机行业的人情何以堪啊……
2、老师的态度。
无论是计算机科学,还是软件工程。或许他们就没想过要把我们教好。
我完成学校的任务就行了,对吧……其他事等着我呢。
3、一句话。
可能有点为难了。
以上都是基于我们的教育情况来说的。我想在这种情况下,无论是培养一个真正的计算机科学家,还是一个软件工程师,概率都太低了。而讨论中说的CS 是否等于 SE,我想在这说也没什么意义了。