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

            表格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. Mac Pro 软件安装/个性化配置 汇总

    苹果产品维修 一.Spotlight 搜索程序和文档 Spotlight是最最常用的东西, 类似Windows开始菜单中的搜索.  可以用来搜索文档,也可以搜索本机的程序, 这样可以快速启动. 点击右 ...

  2. redis中的key设置过期时间

    EXPIRE key seconds 为给定  key  设置生存时间,当  key  过期时(生存时间为  0  ),它会被自动删除. 在 Redis 中,带有生存时间的  key  被称为『易失的 ...

  3. 非常简单的升级phpnow自带的php版本到5.3的方法

    下载PHP5.3 下载地址百度一下“PHP5.3下载”就有很多网站提供下载的,也可以去官网下载最新的,记得下载ZIP压缩的噢 2 解压与命名 将下载的PHP5.3压缩包解压至phpnow的安装目录,命 ...

  4. iphone的click导致div变黑

    -webkit-tap-highlight-color这个属性只用于iOS (iPhone和iPad).当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背 ...

  5. redis该如何分区-译文(原创)

    写在最前,最近一直在研究redis的使用,包括redis应用场景.性能优化.可行性.这是看到redis官网中一个链接,主要是讲解redis数据分区的,既然是官方推荐的,那我就翻译一下,与大家共享. P ...

  6. zozoui

    http://zozoui.com/tabs/?utm_source=cc_tabs&utm_medium=codecanyon&utm_campaign=Codecanyon+-+T ...

  7. 【Spring实战】—— 12 AspectJ报错:error at ::0 can't find referenced pointcut XXX

    今天在使用AspectJ进行注解切面时,遇到了一个错误. 切点表达式就是无法识别——详细报错信息如下: Exception can't find referenced pointcut perform ...

  8. libeventReferenceManual阅读笔记

    一.01_intro.html Example:A low-level ROT13 server with Libevent 这是一个利用event实现的server实例 Example:A simp ...

  9. node04-buffer

    目录:node01-创建服务器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-exp ...

  10. PHP字符串函数

    php字符串处理函数大全 addcslashes — 为字符串里面的部分字符添加反斜线转义字符addslashes — 用指定的方式对字符串里面的字符进行转义bin2hex — 将二进制数据转换成十六 ...