「20考研必看」“計算機科學”與“軟件工程”有什麼區別?

本文編譯自medium上原標題為Computer Science VS Software Engineering — Which Major Is Best For You?的文章。(原作者是擁有20萬粉絲的在線編程教育的運營者,以前曾供職於google的軟件開發部門。)


「20考研必看」“計算機科學”與“軟件工程”有什麼區別?

一、專業概述

1.計算機科學主要從理論和數學的角度研究計算機如何工作。

2.如果你喜歡數學,邏輯學,或者你想進入CS的某個專業領域,例如人工智能,機器學習,計算機安全或圖形,你應該選擇計算機科學。

3.軟件工程研究如何構建軟件系統,包括諸如項目管理,質量保證和軟件測試等。

4.如果您對實際操作方法更感興趣,並且想要了解軟件構建和維護的整個生命週期,應該選擇軟件工程。

5.計算機科學和軟件工程都是學習編程和計算機科學的基礎知識,因此您成為軟件開發員,可以任選其一。

要了解計算機科學與軟件工程專業之間的差異,我們來先來看看加拿大滑鐵盧大學的課程。

我選擇滑鐵盧大學是因為它是北美計算機科學課程最好的大學之一。


工作前景

我們首先比較一下每個計劃對應的工作類型和實習機會。

滑鐵盧大學的網站提供了幾個例子。

每個專業都有一些校友介紹了自己的工作,以及他們的工作地點。


計算機科學

●Web開發人員/架構師,Steele集團

●程序員,Harry Rosen Inc.

●移動/雲開發商Clearbridge Associates Limited

●軟件工程,通用動力加拿大

●軟件開發工程,微軟

●敏捷工程師,Pivotal實驗室

●業務分析師,加拿大輪胎公司

●開發者倡導者,谷歌

●產品經理,Dropbox


●軟件工程

●軟件開發人員,Tagged公司

●軟件開發人員,IBM加拿大

●軟件經理,Arius軟件公司

●軟件工程師,VistaPrint USA

●軟件工程師, 哈里斯公司

●軟件開發人員,埃森哲公司

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

●顧問, PureFacts金融解決方案

●實施顧問,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

●數學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.如果您對動手方法更感興趣,並且想要了解軟件構建和維護的整個生命週期,則應該選擇軟件工程。


但是如果你想成為軟件工程師,哪個專業更好?

下面是我的看法。

在這個特殊的大學(滑鐵盧大學),如果你想成為一名軟件工程師,計算機科學是更好的選擇。

為了簡單起見,假設您希望在北美擔任軟件工程師,獲得薪水最高的職位(約$ 100,000美元/年)。這些工作通常來自於大型軟件公司(微軟,谷歌,亞馬遜等)或中型高增長公司(例如Dropbox,Lyft,Snapchat,Pinterest等)。


通常,這些公司在挑選軟件工程師時,尋找的是能夠編寫可靠代碼並構建有趣項目以及擁有計算機科學基礎知識(包括數據結構和算法)人才。

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

基於軟件工程課程和工程專業學生一般情況下的繁忙程度,我認為學習軟件工程專業比計算機科學更難。


這個特殊的計算機科學課程的另一個好處是它有更多的計算機科學選修課。這也很好,因為根據就業市場的需求,你可以調整自己的課程。例如,如果移動應用程序開發的需求更高,您可以學習這項課程。如果並行計算需求高,您也可以選擇這個課程。

我確信學習軟件工程基礎知識(項目管理,設計,測試等)有一些好處。但我個人寧願多學一些技能。這就是為什麼我認為如果你想成為軟件工程師,計算機科學是一門更好的專業。

當然,那只是我的看法,而且只針對這所特定的大學。我很樂意聽取您的意見,以及您在計算機科學或軟件工程專業的學習經歷。


如果你感興趣的大學沒有軟件工程專業,但你想成為一名軟件開發人員,我建議你選擇計算機科學。計算機工程專注於硬件而不是計算機科學或軟件工程,因此與典型軟件開發人員的工作直接相關性較小。



說明:

本文雖然是以國外學校作為例子進行介紹,但是對於兩門專業的不同之處還是進行了詳細的闡述,希望給夠幫助到各位同學!


分享到:


相關文章: