我所在的本科学校和研究生学校都有计算机科学专业和软件工程专业。具体的教学计划无从获得,因此此状况无从对比,可是我从本科教务处网站找到了计算机科学专业和软件工程专业有关专业方面的课程,现列表以下。算法
表格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 proofs【1】,计算机科学方面的特色就是干净,每个方面都被清楚地定义,每个结果都是创建在早期的证实,是具备很轻的逻辑性和很清楚的因果关系的。然而软件工程确实一门常常用“一般”、“通常来讲”这些不肯定性的字眼来描述内容。
其次,计算机科学的关注点更多的在算法、复杂程度、以及各类理论性、科学性的问题,而这些问题是不受人为因素的影响的。软件工程有不少方面是会考虑到“人”的因素的,如与软件工程相关的可用性,这个方面并非说有什么标准,而是依靠用户的使用结果,用户认为可用性不佳,则结果可能就会不理想,可能就须要从新设计。
这些就是我暂时能想到的有关计算机科学和软件工程的区别,可是我以为他们两个相对于区别来讲,相互间的紧密联系则是更加剧要的,计算机科学的快速发展能够知足软件工程中不少的技术问题,而软件工程中遇到的困难也为了计算机科学提供了新的课题,也是计算机科学不断发展,不断进步的动力,二者不断进步,才能够为咱们创造出一个更加便捷温馨的生活。
参考文献: