by YK Sugi
由YK Sugi
Hey everyone! My name is YK, and I’m currently running CS Dojo, a programming education YouTube channel with 200,000+ subscribers. I was also formerly a software developer at Google.
嘿大家! 我叫YK,目前正在运行CS Dojo ,这是一个拥有200,000多名订阅者的YouTube编程教育频道。 我以前也是Google的软件开发人员 。
Two of the most common questions my audience asks me are:
听众问我的两个最常见的问题是:
“What’s the difference between Computer Science and Software Engineering majors?”
“计算机科学与软件工程专业的学生有什么区别?”
And…
和…
“Should I choose Computer Science or Software Engineering if I want to become a software engineer?”
“如果我想成为软件工程师,应该选择计算机科学还是软件工程?”
In this article, I’ll answer this and give you my own quick analysis on these majors.
在本文中,我将回答这个问题,并为您提供有关这些专业的快速分析。
To understand the difference between Computer Science and Software Engineering majors, let’s take a look at their respective curriculum at University of Waterloo in Canada.
要了解计算机科学专业和软件工程专业之间的区别,让我们看一下加拿大滑铁卢大学各自的课程。
I chose University of Waterloo for this because it has one of the best computer science programs in North America.
我之所以选择滑铁卢大学,是因为它拥有北美最好的计算机科学程序之一。
Let’s first compare the kinds of jobs and internships you can get through each program.
首先,我们比较一下每个程序可以得到的工作和实习的种类。
Thankfully, University of Waterloo’s website provides several examples.
值得庆幸的是,滑铁卢大学的网站提供了几个示例。
For each major, here are some of the titles alumni hold, and where they work:
对于每个专业,这里有一些校友的头衔以及他们的工作地点:
As you can see, there isn’t a huge difference between the types of jobs you can get.
如您所见,您所能获得的工作类型之间并没有太大的区别。
The most common job graduates get after earning their Computer Science or Software Engineering degree is Software Developer or Software Engineer.
毕业生获得计算机科学或软件工程学位后获得的最常见工作是软件开发人员或软件工程师。
There are other related options as well, such as Product Manager, QA Analyst, and Technology Consultant. Your options will depend on your specific skill set.
还有其他相关选项,例如产品经理,质量检查分析师和技术顾问。 您的选择将取决于您的特定技能。
Now, let’s take a look at each program’s required courses. Let’s first compare some of the courses you’d need to take in your first year.
现在,让我们看一下每个程序的必修课程。 我们首先比较一下第一年需要参加的一些课程。
As you can see, the first year courses are fairly similar as well. They both cover a few fundamental computer science courses, and a few math courses in linear algebra and calculus.
如您所见,第一年的课程也非常相似。 它们都涵盖了一些基础计算机科学课程,以及一些有关线性代数和微积分的数学课程。
The only major difference is that Software Engineering has additional physics and electrical engineering components, while Computer Science has a few more electives.
唯一的主要区别是软件工程具有附加的物理和电气工程组成部分,而计算机科学具有更多的选修课。
How about the required and elective courses after the first year? Let’s take a look at several examples here:
第一年后的必修和选修课程怎么样? 让我们在这里看几个例子:
CS 246 Object-Oriented Software Development <- not required in for Software Engineering majors
CS 246面向对象的软件开发 <-软件工程专业不需要
CS 247 Software Engineering Principles <- not required for Computer Science majors
CS 247软件工程原理 <-计算机科学专业不需要
CS 349 User Interfaces <- not required for Computer Science majors
CS 349用户界面 <-计算机科学专业不需要
CS 343 Concurrent and Parallel Programming <- not required for Computer Science majors
CS 343并发和并行编程 <-计算机科学专业不需要
When it comes to the requirements in math and statistics, Computer Science and Software Engineering are almost identical. They cover combinatorics, probability and statistics.
当谈到数学和统计学方面的要求时,计算机科学和软件工程几乎是相同的。 它们涵盖组合,概率和统计。
The core computer science requirements are similar as well, ranging over algorithms, data structures, and operating systems.
核心计算机科学要求也相似,涉及算法,数据结构和操作系统。
The key difference are that:
关键区别在于:
Software Engineering has more requirements in electrical engineering and software engineering fundamentals, such as software testing, design, and software requirements specification.
软件工程在电气工程和软件工程基础方面有更多要求,例如软件测试,设计和软件需求规范。
Computer Science allows more electives in higher-level computer science courses. You can choose from a wide range of topics such as security, software engineering fundamentals, computer vision, machine learning, and database management.
计算机科学允许在更高级别的计算机科学课程中有更多的选修课。 您可以从广泛的主题中进行选择,例如安全性,软件工程基础知识,计算机视觉,机器学习和数据库管理。
I think it mostly depends on your preferences. In short:
我认为这主要取决于您的喜好。 简而言之:
Here is my opinion. At this particular university (University of Waterloo), with this particular set of program requirements, Computer Science is a better major if you want to be a software engineer.
这是我的意见。 在这所特殊的大学(滑铁卢大学)中,由于有这套特定的课程要求,如果您想成为一名软件工程师,计算机科学是更好的专业。
Just for simplicity, let’s suppose that you are hoping to get one the highest paying jobs (~$100,000 USD / year) as a software engineer in North America. These jobs are typically at large software companies (think Microsoft, Google, Amazon, etc.) or at medium-sized, high-growth companies (think Dropbox, Lyft, Snapchat, Pinterest, etc.).
为简单起见,让我们假设您希望成为北美一名软件工程师,薪水最高(约100,000美元/年)。 这些工作通常在大型软件公司(例如微软,谷歌,亚马逊等)或中型,高增长公司(例如Dropbox,Lyft,Snapchat,Pinterest等)进行。
Typically, what they look for in a software engineer candidate is the ability to write solid code and build interesting projects, as well as computer science fundamentals including data structures and algorithms.
通常,他们在软件工程师候选人中寻找的就是能够编写可靠的代码并构建有趣的项目的能力,以及包括数据结构和算法在内的计算机科学基础知识。
I think the best way to cultivate this skill set is by quickly learning computer science fundamentals, and spending your own time practicing solving problems and writing code.
我认为,培养这种技能的最佳方法是快速学习计算机科学基础知识,并花费自己的时间练习解决问题和编写代码。
Based on the curriculum for Software Engineering and based on how busy engineering students tend to be in general, I think it would be harder to do this with Software Engineering than with Computer Science.
基于软件工程课程,并根据一般工程专业学生的忙碌程度,我认为使用软件工程比使用计算机科学更难。
Another benefit of this particular Computer Science program is that it allows more computer science electives. This is great as well because depending on what’s in demand in the job market, you’ll be able to adjust your courses. For example, if mobile app development is in demand, you can learn that. And if parallel computing is in demand, you can focus on that instead.
这个特定的计算机科学计划的另一个好处是,它允许更多的计算机科学选修课。 这也很好,因为您可以根据就业市场的需求调整课程。 例如,如果需要开发移动应用程序,则可以了解到这一点。 而且,如果需要并行计算,您可以专注于此。
I’m sure there are some benefits to learning software engineering fundamentals (project management, design, testing, etc.). But I would personally rather take flexibility over a predefined set of skills. That’s why I think Computer Science is a better major to become a software engineer with this particular curriculum.
我确信学习软件工程基础知识(项目管理,设计,测试等)会有一些好处。 但是我个人宁愿在预定义的技能上采取灵活性。 这就是为什么我认为计算机科学是成为具有此特定课程的软件工程师的更好的专业。
Of course, that’s just my opinion, and this is just one particular university. I’d love to hear about your opinion and what your experience was like if you majored in either Computer Science or Software Engineering. Please let me know in a comment below.
当然,那只是我的看法,而这只是一所特殊的大学。 如果您是计算机科学或软件工程专业的学生,我很想听听您的意见以及您的经历。 请在下面的评论中让我知道。
Note 1: Different universities have different requirements for these two majors. This article should be a good starting point, but you should still take a look at the program requirements at the university you’re interested in attending.
注1:不同的大学对这两个专业有不同的要求。 本文应该是一个很好的起点,但是您仍然应该看看有兴趣参加的大学的课程要求。
Note 2: Some universities don’t even have a Software Engineering major. For example, the University of British Columbia in Vancouver has Computer Science and Computer Engineering degrees, but not Software Engineering. But they do have a software engineering concentration within their Computer Science program, as well as in Computer Engineering.
注意2:有些大学甚至没有软件工程专业。 例如,温哥华的不列颠哥伦比亚大学拥有计算机科学和计算机工程学位,但没有软件工程学位。 但是他们确实在计算机科学计划以及计算机工程中都集中了软件工程。
If the university you’re interested in going to doesn’t have a Software Engineering major, I would go with Computer Science if you want to become a software developer. Computer Engineering is more focused on hardware than Computer Science or Software Engineering, so it’s less directly related to a typical software developer’s job.
如果您感兴趣的大学没有软件工程专业,那么如果您想成为软件开发人员,我会选择计算机科学。 与计算机科学或软件工程相比,计算机工程更关注硬件,因此它与典型软件开发人员的工作没有直接关系。
Computer Science at Waterloo
滑铁卢的计算机科学
Software Engineering at Waterloo
滑铁卢的软件工程
Thanks for reading, and good luck choosing a university and your major! ?
感谢您的阅读,并祝您选择一所大学和您的专业好运! ?
翻译自: https://www.freecodecamp.org/news/computer-science-vs-software-engineering-which-one-is-a-better-major-88482c38446b/