第一章-第五题(你所在的学校有计算机科学专业和软件工程专业么?相关专业的教学计划和毕业出路有什么不同?阅读有关软件工程和计算机科学的区别的文章,谈谈你的看法。)--By 侯伟婷

时间:2023-03-08 17:48:22

  我所在的本科学校和研究生学校都有计算机科学专业和软件工程专业。具体的教学计划无从得到,所以此情况无从对比,但是我从本科教务处网站找到了计算机科学专业和软件工程专业有关专业方面的课程,现列表如下。

            表格1 计算机科学和软件工程专业与专业相关课程

计算机科学专业

软件工程专业

程序设计基础(C语言)

计算机编程引论(C语言)

计算机导论

Java程序设计

面向对象程序设计(C++)

逻辑与数字系统

数据结构

VB.NET程序设计

电路原理

面向对象程序设计

计算理论

计算机组成原理

汇编语言程序设计

C++程序设计

电子技术

用户界面设计与评测

算法设计与分析

计算机网络

可视化程序设计技术基础(双语)

HTML与JavaScript技术

接口技术

操作系统

编译原理

数据结构

计算机网络

数据库原理

数字系统设计

数学建模

计算机组成原理

软件创新方法与实例

Java语言及程序设计

通信概论

计算机图形学

Linux操作系统

数字系统设计

移动互联导论

信息安全基础

软件体系结构与设计模式

计算机体系结构

编译方法

软件工程

软件工程

人工智能

主机系统导论

操作系统

算法分析与设计

嵌入式系统及其应用

分布式系统导论

文本智能处理技术

Java框架与组件技术

软件建模技术

软件需求分析与设计

信息安全基础

分布式组件与Web服务

计算机体系结构

混沌分形导论

网络编程技术

COBOL语言程序设计

多媒体技术

语义Web导论

Linux操作系统分析

主机CICS交易系统

智能数据与知识工程

嵌入式软件开发技术

人工智能导论

云计算核心技术

分布式组件与Web服务

移动应用开发技术

软件测试技术

高性能计算导论

企业级服务器系统导论

服务工程方法论

软件服务与云计算案例分析

信息检索

新技术讲座

服务工程方法论

电信行业市场营销管理

主机数据库管理系统

图像与多媒体新技术

传感技术与应用

合同法与知识产权法

软件过程改进与项目管理

  从表格中可以看出软件工程的课程很多,但是由于具体的教学计划无法得到,所以不能具体说明,但是从我本人了解得到其中涉及到了很多专业选修课程和很多方向性课程,所以难免数量会多出很多。但是比较一下学院给同学设置的预期选修课程和学院鼓励同学走向的专业道路上,还是可以看出些许不同的。计算机科学专业和软件工程专业中教学计划中包含了很多相同的计算机基础的课程,如操作系统、计算机网络等。但是也存在很多不同,如计算机科学专业设置的课程中有软件工程专业涉及较少的硬件方面的课程,如电路原理、电子技术等,然后也在很多方面更加注重了“技术”的教学。而从软件工程专业来说,首先是编程语言和计算机基础课程的教授,使得学生有一定的编程基础和能力,但是教学方向侧重的确是与“人”、“对象”有关的内容。

  这两个专业毕业后的出路基本可分为出国、读研和工作,但是出国和读研的话,这两个专业就可能要针对具体情况具体来说了,因为和研究方向、导师情况都有很大的关系。而我了解到的有关计算机科学专业的工作方面的内容也不太多,就我身边软件工程专业的人来说,毕业之后工作的进入的都是一些软件公司,如蘑菇街、网易、完美世界等,进行技术部编程或者成为产品经理等。计算机科学专业的话,可能会相对而言对于算法等的了解程度相对较深,程序部门也会十分欢迎此专业的人才,但是由于他们专业也教授到了硬件课程,所以以后的就业面在硬件和编程相结合的公司应该也会是他们的选择之一。

  提到计算机科学和软件工程的区别,坦白来说,其实我自己还没有思考过这个问题,在本科的时候觉得可能也就是名字不太一样,毕业之后应该也都是差不多的程序猿,读过此篇文章之后,我才了解到,原来两者之间还是有很大区别的,下面讲述一下我的看法,很可能会不够全面,观点肤浅,还望见谅。

  单单看待名字的话,计算机科学重点是在“科学”,软件工程重点是在“工程”,正如那篇文章的作者提到的,The field is wonderfully clean, with each concept clearly defined, and each result building on earlier proofs1,计算机科学方面的特点就是干净,每一个方面都被清楚地定义,每一个结果都是建立在早期的证明,是具有很轻的逻辑性和很清楚的因果关系的。然而软件工程确实一门经常用“通常”、“一般来说”这些不确定性的字眼来描述内容。

  其次,计算机科学的关注点更多的在算法、复杂程度、以及各种理论性、科学性的问题,而这些问题是不受人为因素的影响的。软件工程有很多方面是会考虑到“人”的因素的,如与软件工程相关的可用性,这个方面并不是说有什么标准,而是依靠用户的使用结果,用户认为可用性不佳,则结果可能就会不理想,可能就需要重新设计。

  这些就是我暂时能想到的有关计算机科学和软件工程的区别,但是我觉得他们两个相对于区别来说,相互间的紧密联系则是更加重要的,计算机科学的快速发展可以满足软件工程中很多的技术问题,而软件工程中遇到的困难也为了计算机科学提供了新的课题,也是计算机科学不断发展,不断进步的动力,两者不断进步,才可以为我们创造出一个更加便捷舒适的生活。

  参考文献:

  1. Software Engineering ≠ Computer Science. http://www.drdobbs.com/architectureand-design/software-engineering-computer-science/217701907