我所在的本科學校和研究生學校都有計算機科學專業和軟件工程專業。具體的教學計劃無從獲得,因此此狀況無從對比,可是我從本科教務處網站找到了計算機科學專業和軟件工程專業有關專業方面的課程,現列表以下。算法
表格1 計算機科學和軟件工程專業與專業相關課程數據庫
計算機科學專業編程 |
軟件工程專業設計模式 |
程序設計基礎(C語言)安全 |
計算機編程引論(C語言)服務器 |
計算機導論網絡 |
Java程序設計數據結構 |
面向對象程序設計(C++)框架 |
邏輯與數字系統編程語言 |
數據結構 |
VB.NET程序設計 |
電路原理 |
面向對象程序設計 |
計算理論 |
計算機組成原理 |
彙編語言程序設計 |
C++程序設計 |
電子技術 |
用戶界面設計與評測 |
算法設計與分析 |
計算機網絡 |
可視化程序設計技術基礎(雙語) |
HTML與JavaScript技術 |
接口技術 |
操做系統 |
編譯原理 |
數據結構 |
計算機網絡 |
數據庫原理 |
數字系統設計 |
數學建模 |
計算機組成原理 |
軟件創新方法與實例 |
Java語言及程序設計 |
通訊概論 |
計算機圖形學 |
Linux操做系統 |
數字系統設計 |
移動互聯導論 |
信息安全基礎 |
軟件體系結構與設計模式 |
計算機體系結構 |
編譯方法 |
軟件工程 |
軟件工程 |
人工智能 |
主機系統導論 |
操做系統 |
算法分析與設計 |
嵌入式系統及其應用 |
分佈式系統導論 |
文本智能處理技術 |
Java框架與組件技術 |
軟件建模技術 |
軟件需求分析與設計 |
信息安全基礎 |
分佈式組件與Web服務 |
計算機體系結構 |
混沌分形導論 |
網絡編程技術 |
COBOL語言程序設計 |
多媒體技術 |
語義Web導論 |
Linux操做系統分析 |
主機CICS交易系統 |
智能數據與知識工程 |
嵌入式軟件開發技術 |
|
人工智能導論 |
|
雲計算核心技術 |
|
分佈式組件與Web服務 |
|
移動應用開發技術 |
|
軟件測試技術 |
|
高性能計算導論 |
|
企業級服務器系統導論 |
|
服務工程方法論 |
|
軟件服務與雲計算案例分析 |
|
信息檢索 |
|
新技術講座 |
|
服務工程方法論 |
|
電信行業市場營銷管理 |
|
主機數據庫管理系統 |
|
圖像與多媒體新技術 |
|
傳感技術與應用 |
|
合同法與知識產權法 |
|
軟件過程改進與項目管理 |
從表格中能夠看出軟件工程的課程不少,可是因爲具體的教學計劃沒法獲得,因此不能具體說明,可是從我本人瞭解獲得其中涉及到了不少專業選修課程和不少方向性課程,因此不免數量會多出不少。可是比較一下學院給同窗設置的預期選修課程和學院鼓勵同窗走向的專業道路上,仍是能夠看出些許不一樣的。計算機科學專業和軟件工程專業中教學計劃中包含了不少相同的計算機基礎的課程,如操做系統、計算機網絡等。可是也存在不少不一樣,如計算機科學專業設置的課程中有軟件工程專業涉及較少的硬件方面的課程,如電路原理、電子技術等,而後也在不少方面更加註重了「技術」的教學。而從軟件工程專業來講,首先是編程語言和計算機基礎課程的教授,使得學生有必定的編程基礎和能力,可是教學方向側重的確是與「人」、「對象」有關的內容。
這兩個專業畢業後的出路基本可分爲出國、讀研和工做,可是出國和讀研的話,這兩個專業就可能要針對具體狀況具體來講了,由於和研究方向、導師狀況都有很大的關係。而我瞭解到的有關計算機科學專業的工做方面的內容也不太多,就我身邊軟件工程專業的人來講,畢業以後工做的進入的都是一些軟件公司,如蘑菇街、網易、完美世界等,進行技術部編程或者成爲產品經理等。計算機科學專業的話,可能會相對而言對於算法等的瞭解程度相對較深,程序部門也會十分歡迎此專業的人才,可是因爲他們專業也教授到了硬件課程,因此之後的就業面在硬件和編程相結合的公司應該也會是他們的選擇之一。
提到計算機科學和軟件工程的區別,坦白來講,其實我本身尚未思考過這個問題,在本科的時候以爲可能也就是名字不太同樣,畢業以後應該也都是差很少的程序猿,讀過此篇文章以後,我才瞭解到,原來二者之間仍是有很大區別的,下面講述一下個人見解,極可能會不夠全面,觀點膚淺,還望見諒。
單單看待名字的話,計算機科學重點是在「科學」,軟件工程重點是在「工程」,正如那篇文章的做者提到的,The field is wonderfully clean, with each concept clearly defined, and each result building on earlier proofs【1】,計算機科學方面的特色就是乾淨,每個方面都被清楚地定義,每個結果都是創建在早期的證實,是具備很輕的邏輯性和很清楚的因果關係的。然而軟件工程確實一門常常用「一般」、「通常來講」這些不肯定性的字眼來描述內容。
其次,計算機科學的關注點更多的在算法、複雜程度、以及各類理論性、科學性的問題,而這些問題是不受人爲因素的影響的。軟件工程有不少方面是會考慮到「人」的因素的,如與軟件工程相關的可用性,這個方面並非說有什麼標準,而是依靠用戶的使用結果,用戶認爲可用性不佳,則結果可能就會不理想,可能就須要從新設計。
這些就是我暫時能想到的有關計算機科學和軟件工程的區別,可是我以爲他們兩個相對於區別來講,相互間的緊密聯繫則是更加劇要的,計算機科學的快速發展能夠知足軟件工程中不少的技術問題,而軟件工程中遇到的困難也爲了計算機科學提供了新的課題,也是計算機科學不斷髮展,不斷進步的動力,二者不斷進步,才能夠爲咱們創造出一個更加便捷溫馨的生活。
參考文獻: