「計算機科學」與「軟體工程」有什麼區別?哪個專業更適合你?
編者按:想成為軟體工程師、拿到高薪工作,但不知道計算機科學與軟體工程哪個專業更適合你?本文編譯自medium上原標題為Computer Science VS Software Engineering?—?Which Major Is Best For You?的文章。
大家好! 我是YK,目前正在運營CS Dojo。這是一個擁有200,000以上用戶的YouTube編程教育頻道。 我以前也是Google的軟體開發人員。
觀眾最常問我的兩個問題是:
「計算機科學和軟體工程專業有什麼不同?」
以及…
「如果我想成為軟體工程師,我應該選擇計算機科學還是軟體工程專業?」
在這篇文章中,我會回答這個問題,並分享一些我自己對這些專業的分析。
兩個專業的概述
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等)。
通常,這些公司在挑選軟體工程師時,尋找的是能夠編寫可靠代碼並構建有趣項目以及擁有計算機科學基礎知識(包括數據結構和演算法)人才。
我認為培養這套技能的最好方法是快速學習計算機科學基礎知識,花時間練習解決問題和編寫代碼的能力。
基於軟體工程課程和工程專業學生一般情況下的繁忙程度,我認為學習軟體工程專業比計算機科學更難。
這個特殊的計算機科學課程的另一個好處是它有更多的計算機科學選修課。這也很好,因為根據就業市場的需求,你可以調整自己的課程。例如,如果移動應用程序開發的需求更高,您可以學習這項課程。如果並行計算需求高,您也可以選擇這個課程。
我確信學習軟體工程基礎知識(項目管理,設計,測試等)有一些好處。但我個人寧願多學一些技能。這就是為什麼我認為如果你想成為軟體工程師,計算機科學是一門更好的專業。
當然,那只是我的看法,而且只針對這所特定的大學。我很樂意聽取您的意見,以及您在計算機科學或軟體工程專業的學習經歷。
幾個筆記
注1:不同的大學對這兩個專業有不同的要求。這篇文章應該是一個很好的起點,但你仍然應該看看你有興趣的大學的課程要求。
注2:一些大學甚至沒有軟體工程專業。例如,溫哥華的不列顛哥倫比亞大學擁有計算機科學和計算機工程學位,但沒有軟體工程。但是他們的計算機科學專業以及計算機工程專業都有軟體工程專業。
如果你感興趣的大學沒有軟體工程專業,但你想成為一名軟體開發人員,我建議你選擇計算機科學。計算機工程專註於硬體而不是計算機科學或軟體工程,因此與典型軟體開發人員的工作直接相關性較小。
感謝閱讀,祝您選擇大學和專業順利!
原文作者:YK Sugishita
編譯組出品。編輯:郝鵬程
※美國政府介入高通併購案後,博通豪擲15億美金示好
※【回家路上】你春節回家了,留守的貓貓狗狗、花花草草怎麼辦?
TAG:36氪 |