在了解的美國研究所學制的基礎後,接著來介紹我所申請的計算科學學系(CSE, Computational Science and Engineering),會特別拉出來作為主題的理由是CSE作為一門較新的跨領域學科,大家容易與其他類似科系搞混(e.g. 資訊工程, Computer Science)。


CSE簡介

CSE(Computational Science and Engineering)(可譯為計算科學)是門跨領域學科, 主要涉及到三大領域,分別是數學統計、資訊工程以及一特定的工程或科學之領域,而此學科的目的即為運用數值計算的方法,來解決各種難題。

身為主修特定工程領域的學生,需要額外學習數學及資工相關的課程。下面的鏈結是篇關於CSE 的教育及研究方向的 paper,想研究的可以自己下載看看。

Minor / Master / PhD

無論是台灣或美國的大學,只要有發展工程方向,其中的工程學類大部分皆可授與學士、碩士與博士3種學位。然而CSE與一般的工程學類的制度不太相同,部分學校的CSE學程提供碩士學位與博士學位的選項(e.g. Gatech, UCSD, UT Austin…),但有些不提供博士學位(e.g. UPenn, Harvard…),也有另一部分學校僅將CSE作為PhD學生的Minor,不能直接攻讀CSE作為一個獨立學位(e.g. Cornell, UMich…),有點複雜。

會有如此多的攻讀選項為CSE本身特性使然,CSE有二種發展方向:

  • 開發、分析與測試CSE演算法與其軟體
  • 針對特定學科發展CSE方法

第1種可藉由攻讀CS/Statistics/Math…學位來實現目標,而第2種則是輔助其他工程領域,研究重心仍在特定學科(e.g. ME, CHE, MSE…)。綜合下來,就會發覺CSE似乎沒有獨立出來的必須性,因此有不少學校將CSE設置為Minor而非獨立出來。


相關科系間比較

CSE / CS / CE

我先解壓縮標題的三個科系全稱,避免大家分不出差別:

簡稱全稱(英文)全稱(中文)
CSEComputational Science and Engineering計算科學/科學計算
CSComputer Science資訊工程/電腦科學/計算機科學
CEComputer Engineering電腦工程/計算機工程

在名稱上,CSE/CS/CE長的很像,畢竟縮寫同時共用3個英文字母,且都是C開頭,若不解釋細節,容易混為一談。但在概念上,彼此之間的差別明顯許多,CSE著重模擬計算方面的理論及應用,像演算法、數值分析、平行運算,CS著重於整體的電腦科學知識,因此在資訊領域的發展較CSE廣,有Computer Vision, Financial Engineering, Artificial Intelligence, Software Engineering, Distributed System, Web Development…,當然CSE也是CS的其一發展方向,最後CE則是CS + EE,著重於電腦軟體與硬體的結合,故CSE與CE的關聯性相較CS小很多。

由上方圓餅圖可知,CSE為CS的其一子領域(像HPC, High Performance Computing),故在研讀CSE學科時必然會接觸到部分CS的課程,這也是CSE可作為CS跳板的重要理由之一

名稱上,可從英文字母 C 的全稱看出差別,但要特別注意,並不是所有學校的CSE都是計算科學,像是UCSD的CSE是Computer Science and Engineering,CSME (Computational Science, Mathematics & Engineering)才是我所提的CSE概念。

CSE課程規劃

課程學習上,CSE 與 CS 有部分重疊,尤其是數據處理的部分,相較之下, CSE 與 CE 關係不大,就不進一步討論。 在工作的數量提供上,現在美國是 CS 獨大,因此有部份人士,為了在畢業後能找到高薪軟體工程師的工作,選擇就讀 CS 或是與 CS 相關的科系(CE, ECE…)。 但因開設 CSE 學程的學校較少,且此學程涉及到數學及工程科系的課程,所以比較少人選擇 CSE 作為CS的跳板

需注意的是,在 CSE 領域內的 CS 部分較強調 HPC (High Performance Computing) 以及 ML (Machine Learning) 等與數據或計算相關的分支,即使CSE有CS的相關課程,但課程設計上通常與 SDE 等主流職缺較無關聯。 因此,若想從 CSE下手轉成 CS,最好先至科系網站上查看或向已就讀的學長姐詢問選課詳細規定及未來就業狀況,避免到時候無法順利選修到與找 software 工作相關的課程。

Computational Science (CSE) / Data Science (DS)

在名稱上,CSE容易與CS搞混,而在概念上,CSE與DS極為相似。因此下面接著介紹CSE與DS的不同之處。

相同處:知識涉略

在講不同處之前,先介紹CSE與DS的共通點,二者皆為跨領域學科,主軸皆為處理計算方法與數據分析

相異處:目的

相較之下,CSE與DS的差別在於目的:CSE主要解決工程與科學方面的模擬分析難題,舉凡分子動力學、流體力學、有限單元法等,最終目的圍繞於特定學科,而這些領域極大部分是學工程的同學才會涉略到,而DS是詮釋與分析大量的數據,而來源的數據不限於模擬分析的結果,只要是你能想像的「大數據」基本上皆適用,最終目的圍繞數據本身。

職涯發展

首先介紹Data Science的相關職涯發展,常看到的有:

  • Data Scientist
  • Data Analyst
  • Data Engineer

可以看出,職位名稱都與Data有關,而CSE的話,複習一下未來的2條路:

  • 開發、分析與測試CSE演算法與其軟體
  • 針對特定學科發展CSE方法

故對應到的職位類別即為

  • Software Developer (ANSYS…)
  • Mechanical/Chemical/Biological Engineer…

相較DS,CSE的選擇較為發散,端看你想研究哪個領域,而決定未來方向,至少我沒聽過Computational Engineer等統合性的職位名稱。

因Penn同時具備CSE與DS的學程,故在下面放上Penn對於此二學程的解說:

最後提個重點,此段討論不含轉碼(SDE),這完全是另一回事


個人選系策略

在大學時期我所攻讀的科系為機械工程(ME, Mechanical Engineering),專攻熱流組,並且有修數值分析(Numerical Analysis)以及有限單元法(Finite Element Method)等與計算科學相關的課程。所以在申請科系的選擇上,除了本專業ME外,我也申請了CSE以及CS,以下是我對於每個科系的申請考量:

Computer Science

首先先講 CS,因為最單純。由於我個人幾乎沒有編程背景,我只選擇接受 CS 零基礎申請者的 CS 學程,並規劃在畢業後直接找 software 相關的熱門工作,完全不考慮修讀 CSE 及 ME 領域的課程,更不會就讀 PhD,就是硬轉 CS。
我只選擇USC CS 37(之後會說明),其他比較熱門的有UChicago MPCS、UPenn MCIT以及NEU CS Align等,但MPCS主要在晚上開課、MCIT的申請難度過大,NEU的話…本身校譽是個爭議點,然而重點是我的英文成績沒有達標QQ。

Mechanical Engineering

第二種類性是幹本行 ME,在 ME 中,計畫修讀熱流方向的專業課程和做相關研究,而在熱流領域中我較偏好散熱,因此我會特別注重學校是否有專精在熱傳領域。

選擇此方向後,會考慮繼續就讀 PhD,畢竟熱流專業偏向研究性質,而我查到的工作崗位需求也偏好 PhD。若學校沒有提供 CSE 的學程且本身在熱流領域不強,就有考慮修讀機械領域的其他分支,像是設計製造、控制,或是選擇 Computational Engineering 等與 CSE 相似的分支。

Computational Science and Engineering

最後則是 CSE,CSE 的情況最為複雜。因 CSE 本身為新興的跨領域科系,且各個學校對CSE的著重點不盡相同,所以我會根據學程網站的說明及學生的未來出路來分別決定每個學校的 CSE 中想走的路。大致分成以下二種:

CSE←→ME

跟隨 CSE 學程創立的初衷,運用數值計算的方法,來解決機械領域上遇到的難題。我決定的機械領域有二種,分別是較廣的有限單元法(FEM, Finite Element Method)以及較專精的數值流體力學(CFD, Computational Fluid Dynamics), 我個人都接受且都有興趣。若選擇此方向,也會有高機率就讀 PhD。

CSE→CS

有的學校即使有開 CSE 類型的學程,但在機械方面的發展不強或是沒有合作關係。在此背景下,較難執行上述規劃,因此 CSE 的第二方向為轉 CS,具體來說,修讀 CS 好找工作的課,畢業後找 software 相關工作,跟 CS 的規劃一樣,但 CSE 修讀 SDE 課程的可行性要看各校規定,因此需事先研究,避免產生兩頭空的情況。在文件撰寫上,我仍然盡量描述 CSE 及 ME 間的連結,因我個人 CS 背景完全不夠,無法在文件中強調「我就想轉 CS」。

當然,即使做了上述對於未來的粗略規劃,還是會有很大的變數。像是攻博的抉擇,若是單純為了學位及工作需要而就讀,很有可能撐不下去,因此除了遵從原訂方向外,若有變數發生,自己應保有彈性並作相對應之調整。

針對各科系申請者之建議

申請者可能會有疑惑,在琳瑯滿目的科系清單中到底該選擇哪個,籠統的答案是It depends,但聽起來很不負責任,所以在下面列出我對各背景申請者的建議,下面看法皆預設未來想從事軟體工程師之工作

主修/雙主修/輔系 Computer Science

直接申請Master Program in Computer Science,除非你未來不打算從事CS相關工作,但以美國就業市場來看,應該只有少數人會想跳出CS。另一情況是,認為自身能力或背景不足,覺得Computer Science太難申請,想轉其他門檻較低的科系,這我不太建議,畢竟在申請上(SOP)要說明轉系理由,而即使順利入學,針對CS的選修一定有不少限制,對未來工作上稍為不利。

Electrical Engineering / Electrical and Computer Engineering

電機資工一家親,此二科系的課程具有高度重疊性,因此若在大學時期已修足足夠CS重要課程,可視為CS大學部申請者,而若修課方向為EE,又想找CS相關工作,除了直接申請CS,也可考慮EE與ECE。若想走EE方向(e.g. IC Design),就不需將CS列為首選。

Other Engineering or Science Major

此部分泛指其他工程領域以及理學院,若研究或課程有涉略到CS(e.g. ML, CV…),可以考慮下列CS相關跨領域科系,不過要注意,各學校針對科系的著重點不盡相同,故申請難度也可說天差地遠,最好調查先前同校同系錄取者之背景,當然直申CS也可以,只是難度平均較高。

  • CSE (Computational Science and Engineering)
  • Robotics
  • DS (Data Science)
  • Analytics
  • IS (Information Science/Information System)
Non-technical Major

此指文組等非理工相關科系,共通點是CS基礎薄弱,可考慮針對零CS背景的CS學程,但申請難度普遍不低

  • USC CS 37
  • NEU CS Align
  • UPenn MCIT
  • UChicago MPCS
  • Brandeis CS

未來職涯發展

上面是以學程作為分析的出發點,而最後此段是以職位本身作為分析,考量面向較為實際。

如果未來碩士畢業後想去FLAG等軟體業當SDE,能否找到工作,修課重要性不高(是相對的,非不重要),英文溝通、刷題與先前的軟體方面工作經驗(intern, full-time)才是相對重要之部分。說實話,僅靠幾門碩士課程難以證明此人具備專業能力,或者也可以說,工作需求的能力不會在學校學到,這點非僅限於CS,極多的工程領域皆適用,能否快速吸收知識(潛力),實際解決問題的能力與提高績效才是工作上的重點,或者說,是公司選拔人才的考量。

而實際上,去查看各個與CS相關的職涯發展(e.g. ECE, DS, CSE…)即可得知,大部分的畢業生最終選擇SDE,皆與原科系的發展初衷不符,這也是無可奈何,畢竟薪資與職缺數量擺在眼前,除此之外,還有身分問題,機械系特別有感QQ。

既然學校課程相對不重要,為何還是眾人爭相申請CS?答案很簡單,主要是簽證與過履歷關,下篇將會介紹簽證方面的資訊。而履歷關的話,想像一下,有位機械系的畢業生直接投軟體工程師的職缺,在職缺與機械專業沒有明顯連結的前提下,HR一看到學校科系基本上會無視此履歷,不想浪費時間,即使在校時修了不少CS課,因系名不同被打槍也是合乎常理,但如果是Stanford等級的學校就當我沒說…。