計算機專業和軟件工程有啥不同?編者按:想成為軟件工程師、拿到高薪工作,但不知道計算機科學與軟件工程哪個專業更适合你?本文編譯自medium上原标題為Computer Science VS Software Engineering — Which Major Is Best For You?的文章,現在小編就來說說關于計算機專業和軟件工程有啥不同?下面内容希望能幫助到你,我們來一起看看吧!
編者按:想成為軟件工程師、拿到高薪工作,但不知道計算機科學與軟件工程哪個專業更适合你?本文編譯自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 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
編譯組出品。編輯:郝鵬程
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!