由於美國大學的計算機科學(Computer Science,縮寫CS)研究生專業就業率高,起薪高,就連抽H1B簽的幾率也是最高的。因此,申請CS研究生的競爭也是最激烈的。申請者中除了計算機本專業的學生,其他專業如電子工程、自動化、數學、物理、統計,甚至貌似毫不相關的環境工程、土木工程…… !那麼,如果本科不是CS專業,甚至不是理工類專業,能夠申請美國大學的CS研究生嗎?
什麼是CS?
計算機科學,研究計算機及其周圍各種現象和規律的科學,亦即研究計算機系統結構、程序系統(即軟體)、人工智慧以及計算本身的性質和問題的學科。計算機科學是一門包含各種各樣與計算和信息處理相關主題的系統學科,從抽象的算法分析、形式化語法等等,到更具體的主題如程式語言、程序設計、軟體和硬體等。
美國的CS碩士專業都學什麼?
以全美計算機專業排名第一的卡耐基梅隆大學的CS項目為例,了解一下CS的研究領域。
從官網的主要研究領域可以看出,卡耐基梅隆大學的CS項目主要研究:人工智慧、圖形學、程式語言、安全、系統、理論。雖然每個領域的命名都很簡練,實際上每個領域都包含了非常豐富的內容。感興趣的同學可以去卡耐基梅隆大學的官網進一步了解。
那麼,對於本科非CS專業的學生想申請美國的CS碩士項目,建議同學們從以下幾個方面準備。
1. 課程
以加州大學伯克利分校的CS項目為例,我們來看一下對於轉申CS項目課程要求。學校建議學生在數學課程方面修微積分、線性代數、機率論和離散數學。在計算機基礎課程方面建議修編程、數據結構、機器結構、數字系統設計、作業系統、算法、編譯。對於非CS專業的同學來說,一方面,不同的專業需要修的課程是不同的,需要根據同學的本科專業的課程設置分析對比才能確定需要修的課程。另一方面,修課的途徑不同,在美國大學的認可度也不同。
2. 軟實力
一般來說,項目經歷可以粗略地劃分為四類:
第一類是計算機相關課程上的課程設計。
第二類是競賽類。可以通過編程馬拉松,算法競賽等活動,證明自己的實踐能力。
第三類則是實驗室研究項目。這類難度較大,適合更為進階地了解下自己對於CS哪個細分方向更感興趣。
第四類是實習。 對於CS申請,名企高質量的CS相關實習對CS申請,尤其是轉CS的申請起到了重要的作用。
對於非CS專業的同學而言,如果有第一類中的課程準備,再進行進階第第二類和第三類相關的競賽和科研項目,再加上第四類的實習,這樣的準備是比較充分的了。
計算機學科主要分為三個大的研究類別:計算機系統結構、計算機應用、計算機軟體與理論。
美國計算機科學專業主要有十大分支:軟體工程、資料庫、計算機網絡、人工智慧、計算機圖形學和多媒體、體系結構/編譯器和並行計算、人機互動、管理信息系統、信息安全、理論和算法。
不同的專業方向,有不同的專業背景要求和申請要求,具體方向有
1.系統與網絡(System and Network)
計算機網絡是利用通信設備和線路將地理位置不同的、功能獨立的多個計算機系統連接起來,以功能完善的網絡軟體實現網絡的硬體、軟體及資源共享和信息傳遞的系統。簡單的說即連接兩台或多台計算機進行通信的系統,此分支方向主要的學習內容從網絡基礎理論,拓撲結構,相關組成硬體,傳輸媒體(光導纖維,同軸電纜,雙絞線的有線傳輸,衛星傳輸,紅外線傳輸,雷射傳輸,無線電波等無線傳輸),到各種網絡協議等。
2.人工智慧與機器人(Artificial Intelligence and Robotics)
主要包括機器意識(包括機器學習,知識表達與推論,機器人),動態系統模擬,動力學計算,觸覺控制(haptic control)自然語言習得與處理,計算語言學,統計語言技術,自動推理,圖形圖像,人機互動,成像感知與傳感器,機率推論,神經估算,計算機視覺,視覺場景認知,模式識別,人工免疫,神經網絡,遺傳算法,小波分析,信息系統以及計劃,信息提取,製造和控制理論等。
3.計算機隱私與安全(Privacy and Security)
計算機安全主要是保護計算機與網絡免於濫用和干擾。從過去的歷史看來,計算機攻擊一般來說包含了攻擊系統的完整性,保密性與可用性。而如今的信息安全技術一直在發展中,不單包含了對上述攻擊的防禦,同時也增加了更多的應用,如垃圾郵件,以及防止身份盜用而導致的信息泄露等。
4.程式語言(Programming Language)
包括開發新型程式語言以助程式設計師實用高效地開發可靠的軟體,計算機輔助語言學習,計算語言學,從初階的打字理論,自動定理證明,語義學等發展到如今的基於語言的途徑以解決計算機安全與分布式編程中的重大問題,語言應用,編程分析與優化等,可以從根本上提高軟體可靠性與安全性。
5.資料庫(Database)
與數據管理相關的所有方面,包括數據存儲,數據檢索,數據分析和視覺化,如為超大型數據組開發高效算法,為各種新型的應用領域建立大型的數據系統,也有與其他領域進行跨學科的研究,可應用的領域有電腦遊戲設計,數據隱私與安全等。
6.計算機圖形學(Computer Graphics)
計算機圖形學(Computer Graphics,簡稱CG)是一種使用數學算法將二維或三維圖形轉化為計算機顯示器的柵格形式的科學。 如何在計算機中表示圖形,以及如何利用計算機進行圖形的生成、處理和顯示的相關原理與算法,構成了計算機圖形學的主要學習內容。圖形通常由點、線、面、體等幾何元素和灰度、色彩、線型、線寬等非幾何屬性組成。從處理技術上來看,圖形主要分為兩類,一類是由線條組成的圖形,如工程圖、等高線地圖、曲面的線框圖等,另一類是類似於照片的明暗圖(Shading),也就是通常所說的真實感圖形。
7.生物信息學與計算生物學(Bioinformatics and Computational Biology)
人類基因工程的完成對現代生物學中的新型計算和理論工具提出了新的要求。這些計算和理論工具對於分析,理解和控制生命的具體信息都是至關重要的。生物信息學與計算生物學在此歷史背景下應運而生。此方向屬新興的研究,主要是利用應用數學,信息學,統計學與計算機科學的方法來研究生物學的問題,因此也需要從事此方向學習和研究的學生有較強的數學和統計背景。目前來說研究方法包括對生物學數據的搜索(收集和篩選),處理(編輯,整理,管理和顯示)及利用(計算和模擬)。
8.算法(Algorithm)
廣義上面的算法是指為解決一個問題而採取的方法和步驟,而CS下的算法則是指計算機為了解決某一個問題或者完成某一個任務的一系列清晰的指令。一個算法的優劣可以用空間複雜度與時間複雜度來衡量。現代的算法理論主要的研究目的在於如何開發出更加效率的算法,研究相關的算法的設計方法與實現技術。
9.計算機理論(Computer Theory)
計算機理論,顧名思義,是為計算機科學的發展與研究提供理論基礎的一門學科。這個課程的學習涉及到CS的核心課題,歸納起來涵蓋了可計算性、文法與自動機、邏輯學、複雜性及語義學等5個部分,涉及到可計算性理論、形式語言、邏輯學與自動演繹、可計算複雜性和程式語言的語義等內容,並學習和研究這些內容之間的聯繫。
10.科學計算(Scientific Computing)
科學計算,又稱為計算科學,它的主要學習內容和研究領域是利用數學模型的構造以及數量分析的技術,通過計算機來分析和解決科學問題。在實際的應用中,科學計算經常用於計算機仿真以及其它各種問題的數學計算,包括數值模擬、模型擬合與數據分析以及最優化計算等等。數值分析(Numerical analysis),是科學計算專業方向中所會應用到的核心方法。
11.軟體工程(Software Engineering)
軟體工程是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟體的學科。它的目標是在時間、資源、人員這3個主要限制條件下構建滿足用戶需求的軟體系統,包括提高軟體質量設計新的形式與結構、開發新的科技以降低軟體系統的成本、提高軟體的正確性與實用性。軟體工程的關注點是如何為用戶創造價值。在學習內容方面它涉及到程序設計語言、資料庫、軟體開發工具、系統平台、標準、設計模式等方面。
12.計算機視覺(Computer Vision)
計算機視覺是一門研究如何使機器―看‖的科學,更進一步的說,就是指用攝影機和計算機代替人眼對目標進行識別、跟蹤和測量等機器視覺,並進一步做圖像處理,用計算機處理成為更適合人眼觀察或傳送給儀器檢測的圖像。作為一個科學學科,計算機視覺研究相關的理論和技術,試圖建立能夠從圖像或者多維數據中獲取―信息‖的人工智慧系統。比較經典的計算機視覺應用包括識別(如在巨大的圖像集合或視頻中尋找包含指定內容的所有圖片或視頻片段)、運動(圖像跟蹤:跟蹤運動的物體)、場景重建以及圖像恢復等等。
13.計算機體系結構(Computer Architecture) 計算機體系結構主要學習與研究計算機的結構和功能,以及它們在電子技術方面的應用。抽象來說,計算機體系結構是一個系統在其所處環境中最高層次的概念;它確定了一台計算機硬體和軟體之間的銜接。具體地說計算機體系結構指的是計算機系統設計的觀念與架構,描述計算機在實做的設計原則。它確定了一台計算機設計的部件、部件功能以及部件間接口。以常見的馮·諾伊曼設計為例,體系結構設計包括了:指令集、微體系結構、數據表示、尋址方式、寄存器定義、指令系統、異常機制、機器工作狀態的定義和切換、輸入輸出結構等。
14.人機互動(Human Computer Interaction)
人機互動,簡稱HCI,是一門研究人、計算機以及它們之間的相互影響的學科。人機互動技術是指通過計算機輸入、輸出設備,以有效的方式實現人與計算機對話的技術。它包括機器通過輸出或顯示設備給人提供大量有關信息及提示請示等,人通過輸入設備給機器輸入有關信息,回答問題等。人機互動技術是計算機用戶介面設計中的重要內容之一。它與認知學、人機工程學、心理學等學科領域有密切的聯繫。