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

            表格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

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

  1. 04373 C++程序设计 2019版 第一章习题五、程序设计题

    题目: 1.编写一个程序,将从键盘输入的n个字符串保存在一个一维数组A中.在输入字符串之前,先输入n的值.要求,数组A需要动态申请空间,程序运行结束前再释放掉. #include <iostre ...

  2. 第一章-第七题( 有人认为,“中文编程”, 是解决中国程序员编程效率一个秘密武器,请问它是一个 “银弹” 么? )--By 侯伟婷

    首先,“银弹”在百度百科中的解释是银色的子弹,我们更熟知的“银弹”一词,应该是在<人月神话>中提到的.银弹原本应该是指某种策略.技术或者技巧可以极大地提高程序员的生产力[1].此题目中关于 ...

  3. NHibernate.3.0.Cookbook第一章第五节Setting up a base entity class

    Setting up a base entity class设置一个实体类的基类 在这节中,我将给你展示怎么样去为我们的实体类设置一个通用的基类. 准备工作 完成前面三节的任务 如何去做 1.在Ent ...

  4. C和指针第七章第五题

    实现一个简化的printf函数,能够处理%d,%f,%s,%c等格式. /*************************************************************** ...

  5. 第一章-第十三题(该游戏团队, 有很好的软件,但是商业模式和其他软件之外的因素有没有考虑到?)--By梁旭晖

    这款软件无疑是一个好软件,软件的开发者是有相当水平的,可以说是优秀的软件编写人员,但是也只是优秀的软件人员,术业有专攻,他们在其他方面我觉得是有很大的欠缺的. 我觉得,他们并没有抓住消费者的心理,首先 ...

  6. 第一章-第十一题(请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人)--By 侯伟婷

    从邹欣老师的<构建执法:现代软件工程>一书中,我们得到有关这些名词的起源的信息是软件工程的概念是1968年第一次提出的[1].而在一篇专访Margaret Hamilton的报道中,我们通 ...

  7. 第一章-第六题(帮人抢票,帮人选课这些软件是否合法 你怎么看?)--By梁旭晖

    我觉得这些软件是合法的,符合道德规范的. 计算机当初设计的初衷就是简化甚至替代人类的工作.而软件作为计算机硬件的驱动着,其设计就是体现这些原则. 现在互联网上的订票,选课类型的网站还是有很多的,比如: ...

  8. 第一章-第四题(ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么?软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看?这个游戏团队, 有很好的软件,但是商业模式和其他软件之外的因素呢?有没有考虑到)--By梁旭晖

    引用 http://baike.baidu.com/link?url=z_phkcEO4_HjFG_Lt163dGFAubdb68IbfcfzWscTOrrZ55WbJEQKzyMQ5eMQKyatD ...

  9. 第一章-第三题(目前流行的源程序版本管理软件和项目管理软件优缺点)--By梁旭晖

    引用自:http://www.cnblogs.com/WJ1234/p/5285595.htmlhttp://blog.163.com/yuyang_tech/blog/static/21605008 ...

随机推荐

  1. 【阮一峰】深入研究URL编码问题及JavaScript相应的解决方案

    作者: 阮一峰 日期: 2010年2月11日 一.问题的由来 URL就是网址,只要上网,就一定会用到. 一般来说,URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和符号.比如,世界上 ...

  2. ASP.NET Core--基于授权的资源

    翻译如下: 通常授权取决于正在访问的资源. 例如,文档可以具有作者属性. 将只允许文档作者对其进行更新,因此必须在进行授权评估之前从文档存储库加载资源. 这不能使用Authorize属性来完成,因为属 ...

  3. PHP array 操作函数

    array_map 函数的介绍 将数组的每个单元使用回调函数格式: array_map(callback, array) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  4. php 操作数组 (合并,拆分,追加,查找,删除等)

    1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加.其形式为: array array_merg ...

  5. Unity3D代码旋转

    subGameObject.transform.Rotate (,,,Space.Self); 一行代码

  6. twemproxy explore,redis和memcache代理服务器

    twemproxy,也叫nutcraker.是一个twtter开源的一个redis和memcache代理服务器. redis作为一个高效的缓存服务器,非常具有应用价值.但是当使用比较多的时候,就希望可 ...

  7. Path

    <Path Data="M17.5,16.5 L17.5,18.5 19.5,18.5 19.5,16.5 z M11.5,16.5 L11.5,18.5 13.5,18.5 13.5 ...

  8. asp.net mvc5 伪静态

    asp.net mvc5 伪静态 WebForm Mvc4和5通用 1.背景:老项目WebForm开发 需要 融合到新项目Mvc5开发 2.需求:Url地址TruckDetail.aspx?id=45 ...

  9. 开发ios的语言

    iOS发展这么多年了,很多第三方语言都向开发一种自己的iOS,于是多种跨平台诞生了! Object-c.swift: 当然是开发iOS的首先,毕竟是苹果自己的东西,也是最流行.最适合开发ios的,无论 ...

  10. 你真的了解iOS代理设计模式吗?

    在项目中我们经常会用到代理的设计模式,这是iOS中一种消息传递的方式,也可以通过这种方式来传递一些参数.这篇文章会涵盖代理的使用技巧和原理,以及代理的内存管理等方面的知识.我会通过这些方面的知识,带大 ...