"计算机科学"与"软件工程"有什么区别?哪个专业更适合你?
“计算机科学和软件工程专业有什么不同?”
以及…
“如果我想成为软件工程师,我应该选择计算机科学还是软件工程专业?”
在这篇文章中,我会回答这个问题,并分享一些我自己对这些专业的分析。
两个专业的概述
1.计算机科学主要从理论和数学的角度研究计算机如何工作。
2.如果你喜欢数学,逻辑学,或者你想进入CS的某个专业领域,例如人工智能,机器学习,计算机安全或图形,你应该选择计算机科学。
3.软件工程研究如何构建软件系统,包括诸如项目管理,质量保证和软件测试等。
4.如果您对实际操作方法更感兴趣,并且想要了解软件构建和维护的整个生命周期,应该选择软件工程。
5.计算机科学和软件工程都是学习编程和计算机科学的基础知识,因此您成为软件开发员,可以任选其一。
要了解计算机科学与软件工程专业之间的差异,我们来先来看看加拿大滑铁卢大学的课程。
我选择滑铁卢大学是因为它是计算机科学课程最好的大学之一。
工作前景
我们首先比较一下每个计划对应的工作类型和实习机会。
每个专业都有一些校友介绍了自己的工作,以及他们的工作地点:
计算机科学
●Web开发人员/架构师,
●程序员,
●移动/云开发商
●软件工程,
●软件开发工程,
●敏捷工程师,
●业务分析师,
●开发者倡导者,
●产品经理,
软件工程
●软件开发人员,
●软件开发人员,
●软件经理,
●软件工程师,
●软件工程师,
●软件开发人员,
●技术产品经理 - 软件设计与开发,
●顾问,
●实施顾问,
如你所见,工作类型之间没有很大差别。
毕业生获得计算机科学或软件工程学位后最常干的工作是软件开发人员或软件工程师。
还有其他选项,例如产品经理,质量保证分析师和技术顾问。您的选择将取决于您的技能组合。
第一年课程:
现在,我们来看看每个专业的必修课程。首先比较一下第一年需要学习的课程。
计算机科学
●CS 135 - 设计功能程序
●CS 136 - 算法设计和数据抽象
●MATH 135 - 代数
●MATH 136 - 线性代数1
●MATH 137 - 微积分1
●MATH 138 - 微积分2
另外还有一些选修课
软件工程
●CS 137 - 编程原则
●CS 138 - 数据抽象和实施
●MATH 115 - 工程线性代数
●MATH 117 - 工程微积分1
●MATH 119 - 工程微积分2
●数学135 - 荣誉数学代数
●ECE 105 - 电气工程物理1
●ECE 106 - 电力和磁力
●ECE 124 - 数字电路和系统
●ECE 140 - 线性电路
●SE 101 - 软件工程方法
如你所见,第一年的课程也很相似,大都涵盖了一些基础的计算机科学课程,以及线性代数和微积分的一些数学课程。
唯一的主要区别是软件工程有额外的物理和电子工程组件课,而计算机科学有更多的选修课。
一年后的课程:
一年之后的必修和选修课程如何?我们来看几个例子:
计算机科学:
●MATH 239组合介绍
●STAT 230概率
●STAT 231统计
●CS 240数据结构和数据管理
●CS 241顺序程序基础
●CS 245逻辑和计算
●CS 246面向对象软件开发< - 对于软件工程专业学生是非必修课
●CS 251计算机组织与设计
●CS 341算法
●CS 350操作系统
此外,还有几门计算机科学选修课
软件工程:
●CHE 102工程师化学
●ECE 222数字计算机(包含汇编语言)
●ECE 358计算机网络
●MATH 213软件工程师高等数学
●MATH 239组合介绍
●STAT 206软件工程统计
●MSCI 261工程经济学:工程师财务管理
●CS 241顺序程序基础
●CS 240数据结构和数据管理
●CS 247软件工程原理< - 对计算机科学专业不是必修课
●CS 341算法
●CS 349用户界面< -对计算机科学专业不是必修课
●CS 343并行和并行编程< -对计算机科学专业不是必修课
●CS 348数据库管理简介
●SE 212逻辑和计算
●SE 350操作系统
●SE 465软件测试和质量保证
●SE 464软件设计和体系结构
●SE 463软件需求规格和分析
●SE 490设计项目
此外,还有一些计算机科学和电子工程选修课
上面有很多信息需要消化,下面是我的总结:
谈到数学和统计方面的要求,计算机科学和软件工程几乎完全相同,涵盖了组合,概率和统计。
核心计算机科学需求也相似,包括算法,数据结构和操作系统。
关键区别在于:
软件工程在电气工程和软件工程基础方面有更多的要求,例如软件测试,设计和软件需求规范。
计算机科学学生可以选择更高级别的计算机科学的选修课程。可选择的课程范围很广,例如计算机安全,软件工程基础知识,计算机视觉,机器学习和数据库管理。
学计算机不易,此路应携手前行。
如果你也想学计算机编程的话!
可以来我的计算机编程学习基地,【点击进入】!
还有免费(零基础教程,项目实战教学视频)!
涉及:游戏开发、课程设计、常用软件开发、编程基础知识、黑客等等...
和志同道合的小伙伴们一起学编程吧!
那么,你应该选择哪个专业?
我认为这主要取决于你的喜好。简而言之:
1.如果你喜欢数学,逻辑学,或者你想进入CS的专业领域,例如人工智能,机器学习,安全或图形,你应该选择计算机科学。
2.如果您对动手方法更感兴趣,并且想要了解软件构建和维护的整个生命周期,则应该选择软件工程。
但是如果你想成为软件工程师,哪个专业更好?
通常,公司在挑选软件工程师时,寻找的是能够编写可靠代码并构建有趣项目以及拥有计算机科学基础知识(包括数据结构和算法)人才。
我认为培养这套技能的最好方法是快速学习计算机科学基础知识,花时间练习解决问题和编写代码的能力。
基于软件工程课程和工程专业学生一般情况下的繁忙程度,我认为学习软件工程专业比计算机科学更难。
这个可以根据每个人的想法而去做出选择!
"计算机科学"与"软件工程"有什么区别?哪个专业更适合你?的更多相关文章
- 史上最全面的FRM与CFA的区别对比分析,适合新人看
简单地自我介绍:本人于纽约完成了研究生阶段的学习后,在华尔街混迹了几年的时间,已获取FRM证书,正在积极准备CFA. 上海财经大学FRM培训中心前言导读 经常看到CFA持证人平均年收入为$XXX之类的 ...
- isHiden和isVisible的区别(isVisible更可靠)
之前一直对isHiden和isVisible的区别比较模糊,都是乱用的.今天因需要仔细看了一下. 1.isHiden只是返回部件的隐藏属性,并不能表示部件当前的真实状态.比如A部件有个子部件B,而A处 ...
- 【IDEA&&Eclipse】1、为何 IntelliJ IDEA 比 Eclipse 更适合于专业java开发者
圣战 有一些没有唯一正确答案的“永恒”的问题,例如哪个更好:是Windows还是Linux,Java还是C#:谁更强壮:Chuck Norris还是Van Damme. 其中的一个圣战便是Java I ...
- 多进程于多线程的区别,cpu密集型适合用什么
多线程:在单个程序中同事运行多少个线程完成不同的工作,成为线程. 线程共享内存空间,进程的内存是独立的, 同一个进程的线程间可以直接交流: 两个进程想通信,必须通过一个中间代理来实现, 一个线程可以控 ...
- Python和Java的区别
这里是我的一些总结,有些是参考别人的(在这里谢谢!!!) 区别: 1.Python比Java简单,学习成本低,开发效率高2.Java运行效率高于Python,尤其是纯Python开发的程序,效率极低3 ...
- 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题
1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快.一直有很大的疑问,有的人说count(*)更快,也有的人说 ...
- C++ class、struct区别
一.默认访问控制不同(最主要) struct默认为public,class默认为private.这个访问控制既是指成员的默认访问属性,又指继承时默认的继承属性. 二.定义template时不同 在模版 ...
- 洛谷日报 & 原来博客(转载)
震惊,新的功能:可以按Ctrl + F 进行关键字查询. \(update\) on 10.26:把这两个月的日报也加入进去了,并且修复了几个错误. 本文会把小编用过的博客和比较好的博客放在这里. 可 ...
- Luogu Daily & Original Blog (reproduced)
震惊,新的功能:可以按Ctrl + F 进行关键字查询. \(update\) on 10.26:把这两个月的日报也加入进去了,并且修复了几个错误. 本文会把小编用过的博客和比较好的博客放在这里. 可 ...
随机推荐
- (超详细)动手编写 — 栈、队列 ( Java实现 )
目录 前言 栈 概念 栈的设计 编码实现 小结 队列 概念 队列的设计 编码实现 双端队列 概念 设计 编码 循环队列 循环队列 循环双端队列 声明 前言 栈 概念 什么是栈? **栈 **:是一种特 ...
- python爬取新浪财经
我们来获取这里的title和url然后再获取这里面url的编辑作者 可以看到右边的几个就对应的左边不同的div .m-p1-mb2-list.m-list-container ul li a impo ...
- 在VS2019使用MASM编写汇编程序
具体的配置步骤可以参考: 汇编环境搭建 Windows10 VS2019 MASM32 本文主要是入门向的教程,VS2019中要调用C语言函数需要加上 includelib ucrt.lib incl ...
- Spring Boot学习(二)搭建一个简易的Spring Boot工程
第一步:新建项目 新建一个SpringBoot工程 修改项目信息 勾选项目依赖和工具 选择好项目的位置,点击[Finish] 第二步:项目结构分析 新建好项目之后的结构如下图所示,少了很多配置文件: ...
- 刷题[安洵杯 2019]easy_web
前置知识 md5碰撞: %4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e% ...
- PuTTY 连接 linux 服务器执行 make menuconfig 乱码问题解决
PuTTY 连接 linux 服务器执行 make menuconfig 时可能出现乱码,如下图所示: 有两个方法解决这个问题: 方法一: 修改 PuTTY 配置如下图所示: 方法二: 在 -/.ba ...
- 详细分析 Java 中启动线程的正确和错误方式
目录 启动线程的正确和错误方式 前文回顾 start 方法和 run 方法的比较 start 方法分析 start 方法的含义以及注意事项 start 方法源码分析 源码 源码中的流程 run 方法分 ...
- Kafka日志段读写分析
引子 之所以写这篇文章是因为之前面试时候被面试官问到(倒)了,面试官说:"你说你对Kafka比较熟?看过源码? 那说说kafka日志段如何读写的吧?" 我心里默默的说了句 &quo ...
- 对于filter的理解
filter语法:使用filter会创建一个新数组,所以原数组不变 array.filter(function(value,index,arr), thisValue) 其中:arr:数组(可选) i ...
- 小白也能看懂的ArrayList的扩容机制
来,话不多说进入正题!我们下面用最简单的代码创建ArrayList并添加11个元素,并 一 一 讲解底层源码:在说之前,给大家先普及一些小知识: >ArrayList底层是用数组来实现的 > ...