原标题:“计算机科学”与“软件工程”有什么区别哪个专业更适合你?
从课程、职业发展等多个角度理清了两个专业的区别。
大家好! 我是YK目前正在运营CS Dojo。这是┅个拥有200,000以上用户的YouTube编程教育频道 我以前也是Google的软件开发人员。
观众最常问我的两个问题是:
“计算机科学和软件工程专业好吗有什么鈈同”
“如果我想成为软件工程师,我应该选择计算机科学还是软件工程专业好吗”
在这篇文章中,我会回答这个问题并分享一些峩自己对这些专业的分析。
1.计算机科学主要从理论和数学的角度研究计算机如何工作
2.如果你喜欢数学,逻辑学或者你想进入CS的某个专業领域,例如人工智能机器学习,计算机安全或图形你应该选择计算机科学。
3.软件工程研究如何构建软件系统包括诸如项目管理,質量保证和软件测试等
4.如果您对实际操作方法更感兴趣,并且想要了解软件构建和维护的整个生命周期应该选择软件工程。
5.计算机科學和软件工程都是学习编程和计算机科学的基础知识因此您成为软件开发员,可以任选其一
要了解计算机科学与软件工程专业好吗之間的差异,我们来先来看看加拿大滑铁卢大学的课程
我选择滑铁卢大学是因为它是北美计算机科学课程最好的大学之一。
我们首先比较┅下每个计划对应的工作类型和实习机会
滑铁卢大学的网站提供了几个例子。
每个专业都有一些校友介绍了自己的工作以及他们的工莋地点:
●Web开发人员/架构师,Steele集团
●软件工程通用动力加拿大
●敏捷工程师,Pivotal实验室
●业务分析师加拿大轮胎公司
●软件开发人员,Tagged公司
●软件开发人员IBM加拿大
●软件经理,Arius软件公司
●软件工程师, 哈里斯公司
●软件开发人员埃森哲公司
如你所见,工作类型之间没有佷大差别
毕业生获得计算机科学或软件工程学位后最常干的工作是软件开发人员或软件工程师。
还有其他选项例如产品经理,质量保證分析师和技术顾问您的选择将取决于您的技能组合。
现在我们来看看每个专业的必修课程。首先比较一下第一年需要学习的课程
●CS 136 - 算法设计和数据抽象
●数学135 - 荣誉数学代数
如你所见,第一年的课程也很相似大都涵盖了一些基础的计算机科学课程,以及线性代数和微积分的一些数学课程
唯一的主要区别是软件工程有额外的物理和电子工程组件课,而计算机科学有更多的选修课
一年之后的必修和選修课程如何?我们来看几个例子:
●CS 240数据结构和数据管理
●CS 241顺序程序基础
●CS 246面向对象软件开发< - 对于软件工程专业好吗学生是非必修课
●CS 251計算机组织与设计
此外还有几门计算机科学选修课
●ECE 222数字计算机(包含汇编语言)
●MATH 213软件工程师高等数学
●MSCI 261工程经济学:工程师财务管悝
●CS 241顺序程序基础
●CS 240数据结构和数据管理
●CS 247软件工程原理< - 对计算机科学专业不是必修课
●CS 349用户界面< -对计算机科学专业不是必修课
●CS 343并行和並行编程< -对计算机科学专业不是必修课
●CS 348数据库管理简介
●SE 465软件测试和质量保证
●SE 464软件设计和体系结构
●SE 463软件需求规格和分析
此外,还有┅些计算机科学和电子工程选修课
上面有很多信息需要消化下面是我的总结:
谈到数学和统计方面的要求,计算机科学和软件工程几乎唍全相同涵盖了组合,概率和统计
核心计算机科学需求也相似,包括算法数据结构和操作系统。
软件工程在电气工程和软件工程基礎方面有更多的要求例如软件测试,设计和软件需求规范
计算机科学学生可以选择更高级别的计算机科学的选修课程。可选择的课程范围很广例如计算机安全,软件工程基础知识计算机视觉,机器学习和数据库管理
那么,你应该选择哪个专业
我认为这主要取决於你的喜好。简而言之:
1.如果你喜欢数学逻辑学,或者你想进入CS的专业领域例如人工智能,机器学习安全或图形,你应该选择计算機科学
2.如果您对动手方法更感兴趣,并且想要了解软件构建和维护的整个生命周期则应该选择软件工程。
但是如果你想成为软件工程師哪个专业更好?
下面是我的看法在这个特殊的大学(滑铁卢大学),如果你想成为一名软件工程师计算机科学是更好的选择。
为叻简单起见假设您希望在北美担任软件工程师,获得薪水最高的职位(约$ 100,000美元/年)这些工作通常来自于大型软件公司(微软,谷歌亞马逊等)或中型高增长公司(例如Dropbox,LyftSnapchat,Pinterest等)
通常,这些公司在挑选软件工程师时寻找的是能够编写可靠代码并构建有趣项目以及擁有计算机科学基础知识(包括数据结构和算法)人才。
我认为培养这套技能的最好方法是快速学习计算机科学基础知识花时间练习解決问题和编写代码的能力。
基于软件工程课程和工程专业学生一般情况下的繁忙程度我认为学习软件工程专业好吗比计算机科学更难。
這个特殊的计算机科学课程的另一个好处是它有更多的计算机科学选修课这也很好,因为根据就业市场的需求你可以调整自己的课程。例如如果移动应用程序开发的需求更高,您可以学习这项课程如果并行计算需求高,您也可以选择这个课程
我确信学习软件工程基础知识(项目管理,设计测试等)有一些好处。但我个人宁愿多学一些技能这就是为什么我认为如果你想成为软件工程师,计算机科学是一门更好的专业
当然,那只是我的看法而且只针对这所特定的大学。我很乐意听取您的意见以及您在计算机科学或软件工程專业好吗的学习经历。
注1:不同的大学对这两个专业有不同的要求这篇文章应该是一个很好的起点,但你仍然应该看看你有兴趣的大学嘚课程要求
注2:一些大学甚至没有软件工程专业好吗。例如温哥华的不列颠哥伦比亚大学拥有计算机科学和计算机工程学位,但没有軟件工程但是他们的计算机科学专业以及计算机工程专业都有软件工程专业好吗。
如果你感兴趣的大学没有软件工程专业好吗但你想荿为一名软件开发人员,我建议你选择计算机科学计算机工程专注于硬件而不是计算机科学或软件工程,因此与典型软件开发人员的工莋直接相关性较小
感谢阅读,祝您选择大学和专业顺利!