計算機科學與技術和軟體工程,這兩個專業的區別在哪?
想從事軟體開發的同學,選擇哪個專業比較好。
認真回答一發。
我從三個方面來解答。
專業學習
計算機科學與技術,簡稱計科(CS)。一般來說CS的學習偏重學習計算機的原理。學習偏理論,學習內容涉及軟體也涉及硬體,還有兩種相結合,一般來說CS兩者的比重是1:1,按學校的不同可能會出現不同情況。
軟體工程,簡稱軟體(SE)。SE的學習主要是圍繞著軟體的應用、設計、開發、維護架構這幾個模塊等。偏應用、工程、實踐。學習內容涉及一些基本的硬體,但更多是工程的理論和大量的軟體實踐知識。
就業前景
近幾年的CS和SE的就業情況相當不錯。如果題主經常去了解就業市場的話(可以上一些招聘網站看看),你會發現,公司無論大小,招人上,除了技能的要求,對於專業的要求一般是「計算機相關」,幾乎沒有見過有公司點明必須是SE或者是CS,也就是說無論是SE還是CS其實HR都不太關注,更關注應聘者的專業技能。所以如果從就業方面來說的話,CS和SE的差別其實很小。
但另外一個問題是,由於兩者在專業學習上的側重點是不同的。CS學習了更多的理論,而且軟硬結合,知識面更廣,如果在大學四年內沒有好好拓展自己的動手實踐和工程能力的話,就業上是會有些許吃虧的。我曾經認識不少的CS朋友,他們都在吐槽CS學習得太泛,反而影響了就業。反觀SE,由於更注重培養工程能力,而且課程中一般有大量的課程設計,所以更適合企業。
但其實這個更看個人,在 學習專業知識的同時,如果注意去拓展自己,在就業上基本不會有太大的差別,因為大家的基礎都差不多的。
升學
如果打算考研,CS更有優勢。一般學校都會有CS和SE的碩士點。如果有興趣去查的話,你可以發現,大多數學校CS和SE的考研科目都是數據結構、計算機組成原理、計算機網路、操作系統等等。這些科目都是偏向理論,而且要求基本功紮實。
CS學生的計算機理論基礎紮實,軟硬結合,知識面廣,所以無論日後選擇考CS碩士還是SE碩士,都比較有優勢。
SE的童鞋由於更注重工程和實踐,所以這個時候想考研要花比CS更多的實踐去補理論基礎。我本科階段時候,班裡的同學只有兩個人考研(其中一個是我),其他同學都是就業向。而且由於大學前三年,大家都玩命敲代碼,很多理論基礎都被輕視了。我決定考研並且開始複習時候,才直到自己基礎有多薄弱。當時考的還是計算機408,簡直欲哭無淚。
對於童鞋的建議
如果對計算機感興趣或者打算考研的,選CS好。
想以後就業方面更輕鬆點,或者本身更偏向動手和實踐的,可以考慮SE。
從以下幾個方面回答這個問題:
1、學科情況
2、教育情況
3、國內教育情況
4、給學生建議
1、學科情況
計算機科學與技術這個一級學科是中國特有的,國際上通常只有計算機科學。大部分學校的計算機科學主要來源於數學學科,而軟體工程學科是源於計算機科學的(可以類比材料科學源於物理學),一直是計算機科學的一個二級子學科。從國際學科發展看,2001年IEEE提出了「計算學科」的概念,來替代原有的計算機科學學科,計算學科包括了計算機科學、計算機工程、軟體工程、信息系統、信息技術五個子學科。但就我的感覺,現在絕大部分國外大學基本還是以計算機科學為主。在中國,2011年開始,軟體工程開始和計算機科學與技術並列為一級學科。
由於中國大學科研和學位授予和國家的學科劃分以及教育政策緊密相關,所以各大學才會有計算機科學與技術以及軟體工程的分別招生。
軟體工程這個詞是1968年才出現的,當前對其定義和內涵還有不小的爭議。一般使用的軟體工程定義是IEEE的一個標準「使用系統、規範、可度量的方法進行軟體開發、運行和維護。」,但這個定義當前仍然有爭議。
2、教育情況
計算機科學教育歷史非常悠久,而單獨的軟體工程教育時間並不長。第一個軟體工程獨立教育項目應該是美國卡耐基梅隆大學軟體工程研究所1989年的軟體工程碩士項目,後來在2000年前後一些大學有了專門的軟體工程本科教育,現在美國大學有專門軟體工程本科的學校並不是太多,包括:加州大學爾灣分校,賓州州立大學公園分校,邁阿密大學等。
對於軟體工程教育和計算機科學教育的區別,國際學術界和教育界進行了很多研究,取得了一些共識。大家可以看一下IEEE和ACM共同制定的2014年軟體工程知識體(SWEBOK)列出的軟體工程教育領域(計算基礎包含了計算機科學的很多教育內容):
- 軟體需求
- 軟體設計
- 軟體構造
- 軟體測試
- 軟體維護
- 軟體配置管理
- 軟體工程管理
- 軟體工程過程
- 軟體工程模型與方法
- 軟體質量
- 軟體工程職業實踐
- 軟體工程經濟學
- 計算基礎
- 數學基礎
- 工程基礎
計算機科學知識體(2001年IEEE和ACM共同制定,可能有新的,但估計差別不大。軟體工程是計算機科學的一個子領域。):
- Discrete Structures (DS)
- Programming Fundamentals (PF)
- Algorithms and Complexity (AL)
- Architecture and Organization (AR)
- Operating Systems (OS)
- Net-Centric Computing (NC)
- Programming Languages (PL)
- Human-Computer Interaction (HC)
- Graphics and Visual Computing (GV)
- Intelligent Systems (IS)
- Information Management (IM)
- Social and Professional Issues (SP)
- Software Engineering (SE)
- Computational Science and Numerical Methods (CN)
如果大學是按照國際規範設計教學體系的話,上面兩個列表應該能夠準確的說明軟體工程和計算機科學教育內容上的不同。
3、國內教育情況
問題就在於國內很多大學軟體工程和計算機科學與技術的教育根本不是按照國際規範制定的。很多學校的軟體工程教育沒有覆蓋SWEBOK要求的所有內容,僅僅是把傳統計算機科學與技術課程體系簡單加上幾門實踐課而已。
所以有人問國內軟體工程和計算機科學與技術教育的區別,我覺得現在對這個問題進行嚴格討論是沒有意義的。
國內軟體學院收費較高,是特定國家政策造成的,和教育本身關係不大。
4、給學生的建議
入學:同等學校計算機科學與技術學費低,難考一些;軟體學院學費高,通常好考一些。
培養:計算機科學與技術的理論基礎通常更紮實一些。軟體學院不管教學內容體系如何,通常更加重視實踐,學生實踐能力更好一些。(各個學校差異性非常大,建議報考前認真諮詢一下。)
就業:差距很小。
看了評論後的補充:
很多評論都說軟體學院費用高,我在上面回答中只是說軟體學院學費高。
據我了解大部分軟體學院的工程碩士都有8-10個月的實習期(有些學校本科也有實習),好的實習月工資可以達到3000-6000元,因此,從經濟上看並不會有大的差距,甚至軟體學院更好。另外,如果考慮到軟體工程碩士通常只讀2年,而一般計算機科學與技術碩士3年,晚1年畢業的機會成本其實對學生來說更重要。
軟體工程不是科學。計算機科學是科學。很多人認為計算機不是科學,但它確實包括運用數學工具對演算法、系統架構等等的研究,比軟體工程還是要更接近科學一些。
顧名思義,軟體工程專註軟體的開發和維護,著重把最好的管理和最好的技術用到軟體上來。
而計算機科學與技術面向所有與計算機相關的領域,著重於搭建一個紮實的專業基礎,專業課同時涵蓋理論、軟、硬體領域。
現在課程資源和各類學習資源這麼豐富,這點區別是不會影響求知慾強的學霸的。畢竟想學什麼課的話,即使本專業沒有,自己看書自學或者上MOOC就是了。沒誰能擋住一個想學習的人。
我就是計算機學院,計科專業畢業的,我來說說吧。
由於我不是軟工畢業的,所以具體軟工開了哪些課程我不知道,我就從計科專業來談談吧。
其實我認為計算機科學與技術專業是一個大雜燴。比較重視基礎和理論,演算法。我大一期間重點是學習 c,c++,計算機導論,演算法。大二期間陸續開設了 java ,c#課程,外加計算機組成原理,編譯原理,彙編語言,計算機網路,軟體工程等課程。
注意:到了大三開始分方向:計算機科學與技術專業的學生,開始選擇三個方向。軟體方向,網路方向,嵌入式方向。從大三開始,每個班裡的學習開始選擇學習不同的方向。根據不同的方向開設相關方向的課程。從此,不同方向的學生開始學習不同的課程了。
我是選擇的軟體方向,重點學習的是 java,c#,開始慢慢從理論開始往實踐方向轉換。會講解學習 jsp,web開發方面的知識了。
所以,我感覺我選擇的軟體方向更像大家上面說的軟體工程了吧。整體來講:我感覺計科專業可能學的更多,前期偏理論和原理,後期重視實踐。軟體工程專業可能更重要自己那方面的學習,沒有計科專業學的全。
你要問學習哪個好?我認為大學期間學習計科專業比較好,因為理論和原理很重要,以及涉及更多方面計算機的知識,不僅僅開闊自己的眼界,還能提高視野,對於以後的工作非常有利。畢竟IT這個行業是時刻在變化的,如果你懂得多,一是變化起來你方便,二呢,可能也更加容易。如果理論紮實了,實踐這東西,在以後的工作中肯定會提高的很快的。
聽說,好些學校是 「計算機」 的收分比 「軟體」 高一些;內容類似,基礎課程 「計算機」 稍微多一些;軟體招的人比計算機多很多,學費又比計算機貴不少,難道是學校用來擴招創收的?
難道這就是殘酷的真相?
工科 vs 理科的區別,
另外,掛個 「國家示範性軟體學院」 的牌子,
就值1w一年的學費了。
(逃CS和SE么,正規的大學這倆專業的最大的區別在於培養模式,CS學得更多更雜,SE更偏向於應用,找工作這倆倒沒什麼區別
如果本身確實對計算機感興趣且自學能力強,我覺得任何專業都是沒什麼區別的,非計算機專業的大神也是常有的。自學能力偏弱的話,如果想從事代碼工作,那麼還是SE好一些。不過互聯網行業最重要的還是要有自學能力,只看教材,你是不可能成為大神的
計算機科學與技術,有很多原理性的課程,比如計算機組成原理、操作系統、數電等,能讓你更好的理解計算機的方方面面的東西。當然它也學軟體工程。軟體工程,更偏重軟體開發、工程能力等。兩者有交叉。
不過其實本科學這兩個並沒什麼不同……
如果一定要選,看高考錄取分數線,哪個錄取分數高,就選哪個。當然,前提是,你的分數能夠上高的那個。
其實,一般沒啥差別。
但是理論上是有差別的。
軟體工程只是計算機科學的一個方向,軟體工程下面還包含,軟體開發,軟體測試,軟體管理....其實很多也沒有體現出來...
至於計算機科學...更別說了,
所以,想做開發,靠自己,多擼代碼,多刷github。
萬金油與專精的區別ヾ(′A『)ノ?
強答一發。女票是軟體,我是計科。平時交流會比較多。我們是浙江的某普通重點,計算機學科不算優勢。按我這兩年的觀察來說:一般努力的人適合去軟體,因為那裡實踐更多,在以後就業上比同等努力程度的計科同學有些優勢。比較努力的同學要看考研的需求,要考研去計科,不考研去軟體。非常努力的同學,不管考不考研都去計科。非常努力的同學軟體的課程已經滿足不了他們了。要進入比較厲害的公司,cs基礎和軟體實踐都要強。所以去計科學習了比較艱深的知識之後,軟體實踐上還是比較簡單的。而讀軟體的話,再要去學習cs就比計科的去軟體實踐要困難了。
區別在哪裡?計算機叫計院,我們學校的計算機大樓外牆還是青色的..所以又叫青樓
那又如何..反正軟體工程的同學一樣屁顛屁顛的去青樓上課
對於吃瓜群眾來說
計算機科學與技術 === 修電腦的
軟體工程 === 這是啥?賓館裝修?官員不老愛說硬體提升了,軟體要跟上?
2017.12.22 在回答 「當程序員應該學信息與計算科學還是計算機科學與技術?」問題時 有一些新的想法,粘到這裡 供參考。https://www.zhihu.com/question/264159448/answer/280767341
2017.06.05 原回答
我是計科,男朋友在軟工 定位211大二黨之前一直沒覺得有什麼區別 直到上個月有實驗室老師帶著學生團隊開發項目。項目簡介如下*?゜??*:.?..?分隔符.:*?"(*?▽?*)"?*:.?. .?.:*?゜??*很簡單的入門級項目 建個網站 和後台資料庫進行交互 使用Struts2+Hibernate4進行搭建,資料庫採用Mysql,伺服器採用Tomcat6.0。系統架構分Web層(JSP)、業務層(Struts2)、資料庫訪問層(Hibernate)三層架構模式,客戶端不直接與資料庫交互,通過組件與中間層建立連接,再由中間層與資料庫交互,其數據服務層用來存放數據。資料庫訪問層將對持久層數據進行基本增刪改查的操作。*?゜??*:.?..?.:*?"(*?▽?*)"?*:.?. .?.:*?゜??*下面是我的心路歷程一臉懵逼二臉懵逼對角懵逼啊!!為啥我啥都不知道!人家軟工學java學jsp學uml 學ssh學了就能直接用啊!我們計科就是操作系統組原linux比人家學的早一年,408課程大二基本上就學完了……真正開發項目時候 能用上的就一個html......加個js都要百度 甚至java都是自學(我們學的是c++)反正就是前幾個星期做項目時候我是懵逼過來的,不知道啊,沒學過啊!心累……就這樣如果你想做開發之類的 單看學校安排的課程 計科可能會來的慢一些計算機科學會比較好
軟體工程在2000年左右那時候還是很重要的,主要學習印度人
現在軟體工程其實只是很小部分,軟體產品發展以後,產品和運營就變的更加重要,
而工程問題其實不是那麼大的問題,學校裡面學習的軟體工程,其實也沒什麼用處。
軟體工程變成了職業培訓這類的課程了。
不請自來,我是軟體工程的,學校也有計算機科學與技術。說實話我也不知道後兩年的學費高達一萬五多是為什麼。前兩年學費和普通專業差不多5500。我們學校軟體工程要求必須實習滿八個月才能拿畢業證,也就是大四一年基本都在實習,八個月實習可是有11還是20多學分去了。計算機的就沒有這要求。課程方便大一基本都差不多,啥工數c/c++啥的,大二都會學操作系統資料庫等,不過後面也有很多不同的,我們學只數電計算機好像還要模電,計算機組成原理也沒有計算機要求那麼嚴,到大三基本沒有啥相同的課了,我們會學更多軟體編程之類的比如javaee,安卓啥的。我們學校軟體大三還會分方向,我是遊戲方向,不同的方向只有幾門課相同,我們學cocos u3d等遊戲方面的東西。計算機科學與技術具體我就不是很清楚了可能更加偏硬體一點。有時候下次找計算機科學與技術的老鄉問問再來修改。
此答案由某高校大三學生胡拼亂湊計算機科學與技術專業大二狗,同在計算機學院,和軟工同學交流得比較多。
最大的區別當然是培養方案不一樣啊,所學課程不一樣。
就這學期來說吧,課程:計科:計算機組成原理,計算機網路,彙編語言程序設計,概率論與數理統計,大學英語拓展軟工:計算機組成原理,計算機網路,軟體工程,概率論與數理統計,大學英語拓展模塊貌似差別還不是很大,大三差別就大了,現在還是基礎課多嘛,學院樓有一個院系介紹屏,有時間我去查一下培養方案。
工作我就不好說了,畢竟我還沒工作,但兩個專業大神offer都挺好,low的都不好。
——————————————————我是更新線——————————————————————
高考季,放一下學院寫的專業介紹:
計算機科學與技術:本專業以培養高素質且具有創新精神及創新意識的人才為主要目標,面向京津冀協調發展的行業和領域服務需求,積極探索多層次、個性化的人才分類培養模式;以創新教育、素質教育為核心,注重知識、能力和素質的協調,使學生德、智、體、美全面發展;以「強化基礎、軟硬結合、立足系統、面嚮應用、強化實踐」為基本原則,以計算機科學理論和計算機工程應用為主線,構建學科基礎及專業主幹課程體系;同時加強工程實踐訓練,使學生能系統地掌握計算機科學理論、計算機軟/硬體系統及應用知識,具備分析、解決計算機專業及相關領域複雜工程問題的能力,並獨立或合作完成複雜軟硬體系統的分析、設計、實現和測試任務。
本專業的核心課程有人工智慧基礎、智能計算、人機交互、嵌入式系統、數據挖掘與數據倉庫技術、移動應用開發、計算機圖像處理等。學生畢業後能在各工礦企業、事業單位、政府機關,以及科研院所從事計算機理論研究、計算機應用系統的研究與開發設計等方面的工作。
軟體工程:本專業的培養目標是培養德、智、體、美全面發展,具備堅實的計算機科學和軟體工程基礎,掌握軟體工程學科較系統的基本理論與專業知識,熟悉軟體工程領域的高新技術,具備較高的軟體理論水平,能夠運用先進的軟體工程方法、技術及工具,從事軟體分析、設計、開發、維護和管理等方面工作,滿足市場需求的、具有創新精神和實踐能力的應用型、工程型、複合型軟體人才。
本專業的核心課程有軟體工程、軟體測試技術、軟體過程管理、人機交互技術、.Net程序設計、JAVA程序設計、人工智慧、數據挖掘、嵌入式操作系統、移動應用開發等。學生畢業後不僅能夠從事軟體工程領域的設計、開發及管理工作,也可從事軟體理論研究工作並適合到工、礦、企、事業單位從事與計算機及軟體相關的工作。
再放一下我們學院的其他兩個專業吧,嘻嘻
網路工程:本專業的培養目標是培養德、智、體、美全面發展,基礎厚、口徑寬、能力強,具備堅實的計算機科學基礎,系統地掌握計算機網路工程領域的基本理論與專業知識,了解計算機學科的高新技術,在計算機軟硬體、特別是計算機網路方面受到良好訓練,具有研究、設計和管理計算機網路的實際能力,能適應社會發展需要,富有創新精神的高素質專門人才。
本專業的核心課程有數據結構、計算機組成原理、資料庫原理及應用、操作系統、編譯原理、計算機網路、計算機系統結構、移動應用開發、網路操作系統、網路體系結構、IP交換與路由技術和網路工程等。學生畢業後能在科研、教育、企事業單位等部門從事計算機網路理論研究、規劃設計、系統研發、運營管理以及網路應用系統開發等方面的相關工作。
物聯網工程:本專業的培養目標是培養適應國家戰略性新興產業發展的需求,德、智、體全面發展,系統地掌握物聯網核心技術、物聯網工程領域應用專業知識,具備綜合運用無線感測網路、嵌入式、RFID、雲計算等知識進行物體感知、標識,完成信息獲取、處理、傳輸、控制與分析等物聯網系統實踐能力,能夠在物聯網及相關行業中從事科學研究、系統研發與集成、技術研發、系統運營與管理等工作的高素質應用型複合人才。
本專業的核心課程有數據結構、計算機組成、操作系統、物聯網概論、無線感測網路、計算機網路、嵌入式系統、RFID原理及應用、物聯網系統應用設計等。
學生畢業後能從事物聯網領域應用設計開發及物聯網技術的研究工作。
還有一個計算機科學與技術的雙學位班,輔修信息與計算科學,我原來是理學院信息與計算科學的,也是雙學位,不過因為學院氛圍的問題還是決定轉專業了,雖然少了一個學位,但感覺自己收穫的遠比失去的要多,貼一下這個專業的介紹吧:
計算機科學與技術(雙學位班):本專業以大數據技術為特色方向,採用以計算機科學與技術專業為主、信息與計算科學專業為輔的聯合培養模式。畢業時,修滿計算機科學與技術專業最低學分要求後,授予工學(計算機科學與技術)學士學位,在此基礎上,選修50學分信息與計算科學專業的課程,成績合格,授予理學(信息與計算科學)學士學位。本專業的培養目標是培養適應我國社會主義現代化建設需要,德、智、體全面發展,具有良好的科學素養和人文知識背景,較系統地掌握計算機科學與技術的基本理論知識,在計算機硬體和計算機軟體兩方面均受到良好訓練,特別加強大數據技術相關數學基礎;培養過程注重加強實踐應用能力與知識創新能力,著重加強學生在多媒體信息採集、海量數據存儲、智能信息處理、大數據分析與應用開發等方面能力培養。
本專業的核心課程有C語言程序設計、數據結構、操作系統、計算機網路、計算機組成原理、資料庫原理及應用、軟體工程、數據挖掘與數據倉庫技術等。
學生畢業後能從事計算機科學與技術研究和工程應用開發,特別是具有大數據技術特長的計算機專業高級專門人才。沒什麼不同,側重點不同而已。說哪個專業更高級的回答的人都是半吊子。計科的人再牛逼,世界上也沒有上百操作系統。軟工的人再牛逼,不得不去了解計算機組成。至於大學看的四年書,兩個專業都玩不出什麼蛋蛋來。世上知識本沒有界線,奈何世人什麼東西都要划出個道道來?然後很多人開始興緻勃勃的討論道道劃的對不對?更有各種計算機八股文思想,什麼精通什麼語言。是為了什麼?
末流985 SE 專業在讀學生怒答,有些回答真是看不下去了...
我先列一下我校SE和CS的方向作為參考。
SE: 軟體工程、網路與主機、嵌入式、數字媒體CS: 計算機科學與技術、信息安全所以那些說這兩個學的差不多的來聊聊?然後再來說說區別。
大一: 課程重合度較高,基礎課基本一致,CS會有底層硬體課程(電路),SE會有計算機結構這種往上一點的課程。大二: 課程有一定重合度,編譯原理、演算法、數據結構這些基本課都有,CS繼續硬體,SE繼續軟,比如資料庫之流
大三大四: 好的我們都分方向了,如最上面列的,除了一兩門課已經完全不一樣了。
總結一下: 基礎課基本一樣,但是越往後差別極大。
PS: 看到有SE的小夥伴出國念CV很頭疼,本渣校的SE的數字媒體方向讓你從大三開始學數學,發 CV paper(逃看過笑傲江湖嗎?
我也是胡說八道
但我感覺計科像氣宗,而軟工像劍宗
但是咱們沒必要打架,更沒必要斗個你死我活嘛!
咱們老實說學的東西還是很接近的,壁壘不高。尤其完全可以互相學習,沒必要存什麼門戶之見。
我是軟工專業,我個人感覺計科的四大基礎課紮實,數學根底也強。雖然實踐上沒我們走得快,但是只要有心,憑紮實的基礎也能很快玩得轉。
我當然也是泛泛而談,講的是平凡的大多數,論牛人的話,無論哪邊的牛人都不可能再去用專業出身去限制他,給他貼標籤,對吧?
推薦閱讀:
※請問大家,App 製作出來後,怎麼樣才能讓別人不容易解密、抄襲?如果加密會不會影響用戶註冊登錄?
※水利數值模擬軟體的現狀和發展是怎樣的?
※聊天類軟體後台對聊天內容加密嗎?
※如何成為一個好的組長?
※人人都是架構師,架構師是不是過時了?