Software Engineering vs. CS, how to teach SE

  1. 1.   软件工程和计算机科学的有区别么?

自我印象里,软件工程与计算机科学是不同的,这点从进入大学前报考志愿起好像就有这样一个模糊的界定,那就是软件工程更接近于实践,即:如何更好地使用现有的计算机科学编写出更好的软件从而更好地为社会服务,而计算机科学更侧重于如何通过研究去去突破现有科学技术从而创造出有更高效或者说高级的造福于社会的潜能的发明创造。

读完“软件工程≠计算机科学”(http://blog.sina.com.cn/s/blog_553f355101017g6l.html)后,我则更加深刻全面的理解了软件工程和计算机科学的不同。

诚如文章所说,不同之处大概有以下几点:

1) 计算机科学思路清晰而且严谨,软件工程则似乎有点不靠谱:

a)   几年前,我学习了算法和复杂性。令人惊奇的是这个领域出奇的思路清晰,每个概念都有明确的定义,每个结论都是建立在前人证明基础上的。当你理解了这个领域的每一个事实,你可以把它放到银行里,因为数学与其有不一致的地方,以推翻你刚才了解到的、学到的知识。即使是不完美的结果,如逼近和概率算法,对自己的不完美的算法有着严格的分析。计算机科学的其他学科,如网络拓扑和加密学,还可以享受类似的令人满意的状态。

b)   现在我的工作在软件工程领域,相对而言这个领域令人感到有点不靠谱。许多东西没有明确的概念界定。结果的描述都是“一般”或“大致”。今天的研究可能会或可能不会,有助于明天的工作。新的方法常常推翻旧的方法,当一种新方法闪亮登场的一瞬间觉得如何如何的时尚,然而过了不多久其局限性又出现了。

2) 我们需要的软件,是设计者所期望做的,把在一个适当时间内,有一个合理的成本价,也可能在运行时出现一些错误的那个东西;

而计算机科学则不是那么限定恰当的时间(即使是想追求效率,但是研究不是说什么时候研究出来什么东西就一定能出来的问题),也不会太计较成本价,也绝不可能容忍会有错误,即使是存在错误也会去尝试着去把错误当做是一个新的问题去研究并解决;

3) 软件工程直接涉及人类活动,而计算机科学的结果可能被人类所用,但是它们的结果不会直接影响到人类;

4) 经典的计算机科学是有助于软件工程,但这永远不是它的全部。良好的软件工程还包括创意,远见,多学科思维,和人文学科。

软件工程需要一个交叉学科的融合,而经典的计算机科学只是其中一种帮助软件工程实现的具体工具等。

                   所以说,软件工程和计算机科学是不同的。

  1. 怎样才能教好软件工程?

见:http://www.cnblogs.com/DOOM-scse/archive/2012/12/12/2814237.html

  1. 北航的计算机教育如何?有什么可以改进的部分?

我觉得虽然北航计算机系虽然处在全国前几名的位置,但是它的教育仍有商榷或者说是有待提高的地方。

比如:

1) 身为一个计算机系的学生,是否有必要在大二期间设置大学物理实验这门投入产出过于不平衡的学科;

2) 大学四年的培养计划是否需要调整,大二的学习压力过大;

3) 动手实践和阅读量的比例是否需要加大

以这学期的数据库、编译和软工为例,数据库和编译是传统的教学模式,先是老师讲授基础知识,然后写个大作业(一个写烂了的类似图书管理系统类的作业),缺乏真正的沟通交流、去接触最新的技术和大量阅读学习的机会,而反之作为实验课的软工则很好的做到了这一点,希望以后可以多一些想这学期的软工这样的课程。

 

posted @ 2012-12-12 11:59  DOOM_buaascse  阅读(279)  评论(7编辑  收藏  举报