專業指南丨計算機科學和軟體工程,哪個更適合你?

作者 YK Sugi

編譯 Mika本文為 CDA 數據分析師原創作品,轉載需授權

觀看更多國外公開課,點擊"閱讀原文"

2018年高考已落下帷幕,選擇什麼大學、報考什麼專業又將成為考生和家長要面對的難題。對於之後想成為軟體工程師的考生而言,計算機科學和軟體工程專業哪個更適合自己呢?前谷歌的軟體開發人員YK在本文中給出了自己的見解。

大家好!我叫YK,目前我正在運營一個YouTube的編程教育頻道,擁有20萬的訂閱量。我以前是一名Google的軟體開發人員。

聽眾經常會問我這兩個問題:

「計算機科學專業和軟體工程專業有什麼區別?」

「如果我想成為軟體工程師,我應該選擇計算機科學還是軟體工程?」

在本文中,我會回答這兩個問題,針對這兩個專業給出我的分析和建議。

專業概述

· 計算機科學是探究計算機運行原理的學科,主要從理論和數學的角度出發。

如果你喜歡數學、邏輯學,或者你想進入計算機科學的專業領域,例如人工智慧、機器學習、安全或圖形,那麼你應該選擇計算機科學專業。

· 軟體工程是研究軟體系統如何構建的學科,包括項目管理、質量保證和軟體測試等內容。

如果你對實際操作方法更感興趣,並且想了解軟體構建和維護的整個過程,那麼你應該選擇軟體工程專業。

計算機科學和軟體工程都包括編程和計算機科學的基礎知識,因此選其中任何一個專業都能成為軟體開發人員。

為了明白計算機科學與軟體工程專業之間的區別,讓我們以加拿大滑鐵盧大學為例,具體看這兩個專業各自包含的課程。

之所以選擇滑鐵盧大學是因為它具有北美頂尖的計算機科學課程。

工作前景

我們首先比較一下選擇這兩個專業能找哪些工作。

以下是滑鐵盧大學關於計算機科學與軟體工程專業的畢業生所從事的工作列表:(職位,公司)

計算機科學

Web開發人員/架構師,The Steele Group

程序員,Harry Rosen Inc.

移動端/雲開發人員,Clearbridge Associates Limited

軟體工程,General Dynamics Canada

軟體開發工程, Microsoft

Agile工程師,Pivotal Labs

業務分析師,Canadian Tire Corporation

開發者倡導者,Google

產品經理,Dropbox

軟體工程

軟體開發人員,Tagged

軟體開發人員,IBM Canada

軟體經理,Arius Software Corporation

軟體工程師,VistaPrint USA

軟體工程師,Harris Corporation

軟體開發人員,Accenture Inc.

技術產品經理,軟體設計與開發,NexJ Systems Inc

顧問,PureFacts Financial Solutions

實施顧問,Desire2Learn

可以看到,無論選擇兩者間哪個專業,之後所找的工作區別並不大。

計算機科學和軟體工程專業的畢業生中,最常見的工作是軟體開發人員或軟體工程師。

還有其他相關工作,比如產品經理,質量保證分析師和技術顧問。你所從事的工作取決於你掌握的專業技能。

第一年的課程

現在,我們來看看每個專業的必修課程。首先比較一下第一年需要學習的課程,以滑鐵盧大學為例。

計算機科學

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

MATH135 - 數學系代數

ECE 105 - 電氣工程物理1

ECE 106 - 電磁學

ECE 124 - 數字電路和系統

ECE 140 - 線性電路

SE 101 - 軟體工程方法

註:

CS:計算機科學

MATH:數學

ECE:電子與計算機工程

SE:系統工程

可以看到,第一年的課程也很相似。兩個專業都涵蓋了基礎的計算機科學課程,以及一些線性代數和微積分的數學課程。

唯一的主要區別是,軟體工程有更多的物理和電子工程課程,而計算機科學有更多的選修課。

之後的課程

那麼第一年之後有哪些必修課和選修課程呢?讓我們看幾個例子:

計算機科學

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 設計項目

此外,還有一些計算機科學和電子工程選修課。

總結

這兩個專業對於數學和統計方面的要求幾乎相同,兩者都包括組合學,概率和統計的知識。

關於計算機科學的核心知識需求也相似,包括演算法,數據結構和操作系統。

關鍵區別在於:

軟體工程專業在電氣工程和軟體工程基礎方面有更多的要求,例如軟體測試,設計和軟體需求規範。

計算機科學則能選擇更高級的計算機科學課程。你可以在大量的選修課中進行選擇,例如安全性、軟體工程基礎知識、計算機視覺、機器學習和資料庫管理。

應該選擇哪個專業?

選擇哪個專業主要取決於你的喜好。

簡而言之:

如果你喜歡數學、邏輯學,或者如果你想進入計算機科學的專業領域,比如人工智慧,機器學習,安全或圖形,那你應該選擇計算機科學。

如果你對實際操作更感興趣,並且想要了解軟體構建和維護的整個過程,則那你應該選擇軟體工程。

如果想成為軟體工程師,哪個專業更好?

根據滑鐵盧大學具體的課程要求來看,如果你想成為一名軟體工程師,那麼計算機科學是更好的選擇。

假設你想在美國從事高薪(每年約10萬美元)的軟體工程師工作,這些工作通常在大型軟體公司(例如微軟,谷歌,亞馬遜等)或中型、高增長企業(例如Dropbox,Lyft,Snapchat,Pinterest等)。

通常,這些公司希望軟體工程師能夠編寫可靠的代碼並構建有趣的項目,並且熟練掌握數據結構和演算法等計算機科學基礎知識。

我認為培養這些技能的最好方法是,快速學習計算機科學基礎知識,花時間練習解決問題和編寫代碼。

我認為根據軟體工程的課程,以及該專業課業的繁重程度,比起計算機科學專業,軟體工程專業能夠支配的時間和精力更少。

計算機科學專業的另一個好處是能夠選擇更多的選修課。這很好,因為你可以根據就業市場的需求調整課程。例如,如果移動應用程序開發需求很多,你就可以針對這方面進行學習。如果並行計算的需求多,你則可以學習這方面。

當然學習軟體工程基礎知識(項目管理、設計、測試等)也很有幫助。但我更希望有更多的時間學習特定的技能。這就是為什麼我認為要成為軟體工程師,計算機科學是更好的專業選擇。

但這只是我的個人看法,如果你有不同的看法,或有計算機科學、軟體工程專業的學習經歷,請給我留言。

注意

· 不同的大學對這兩個專業有不同的要求。你應該根據具體學校的課程進行選擇。

· 一些大學沒有軟體工程專業。例如,溫哥華的不列顛哥倫比亞大學有計算機科學和計算機工程學位,沒有軟體工程專業。但是計算機科學專業和計算機工程專業都有軟體工程課程。

如果你感興趣的大學沒有軟體工程專業,而且你想成為軟體開發人員,那麼我建議選擇計算機科學專業。與計算機科學或軟體工程相比,計算機工程更側重於硬體,因此與一般的軟體開發人員的工作相關性較小。

參考來源

滑鐵盧大學計算機科學

https://uwaterloo.ca/future-students/programs/computer-science

滑鐵盧大學軟體工程

https://uwaterloo.ca/future-students/programs/software-engineering

感謝您的閱讀,祝願您選到心儀的大學和專業!

原文鏈接:

https://medium.freecodecamp.org/computer-science-vs-software-engineering-which-one-is-a-better-major-88482c38446b

你的讚賞是我堅持原創的動力

讚賞共 0 人讚賞
推薦閱讀:

深入理解計算機系統(十六):算術和邏輯操作
《自然原理》新時空理論解開物質結構的基礎和工具—最強力程計算中國人工和日本世界最強計算機結果一樣
軍人職稱外語和計算機考試成績放寬條件及規定
零技術基礎看懂閃電網路

TAG:科學 | 計算機 | 計算機科學 | 軟體 | 軟體工程 | 計算 | 專業 |