作者:AdmitWrite線上留學平台
連結:https://www.zhihu.com/question/576360271/answer/2938450245
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
最近幾年申請CS專業的人數越來越多,申請競爭也越來越激烈,而CMU作為幾乎每個申請者都會申請的學校,一些高質量項目的受歡迎程度自然是不必多說。在這裡我和大家分享我在CMU ECE項目的學習經歷,方便大家更詳細地了解這個項目,從而在選校時多一個參考。
項目簡介
我讀的ECE項目是在匹茲堡校區,項目時長為一年半,畢業的要求是修夠96個學分,包括60個學分的專業核心課和36個學分的選修課,其中選修課又分為less-restricted electives和restricted electives兩種,後者的限制較大,是課程等級在500以上的研究生中級課程,所以選課的時候我們只能選代碼為18-5xx的課程,不過這些課程幾乎包括了CMU最好的計算機課程。

ECE的申請難度沒有CS那麼高,但是由於申請的人數越來越多,所以還是建議大家對任何一個申請步驟都不要掉以輕心。三維當然是越高越好,一般GPA3.5+,TOEFL105+,GRE320+才會有競爭優勢;文書什麼的也建議認真準備,我身邊就有一個朋友標化成績不錯,但是因為沒有認真寫文書而被CMU拒了。實習、競賽、海外交換、科研等也去試試,畢竟這些經歷有時也是我們拿到AD的關鍵。
項目里中國人佔了大多數,同胞很多的好處就是大家即使在異國他鄉也能夠感到親切,可以相互照應,不足就是和外國人交流的機會比較少,口語水平提升得很慢。CMU本校區的學習氛圍非常好,周圍的同學都非常認真,當然這和CMU繁重的課業壓力有著很大的關係。對於我來說,研究生期間和本科相比簡直是太累了,CMU的課程設置和上課節奏逼著我們不斷去學新的東西,不斷進步,感覺這兩年學的東西比本科四年學的還要多。我一般都是每天從早上10點,學到凌晨2點,每天都在寫作業中度過,即使這樣拿A還是很難,我一般都是拿B,CMU大佬太多了,學渣實屬不易。另外master還有一個特點就是剛來就要著手準備找實習了,再加上上課節奏很快,這樣就會導致要做的事情特別多,回憶當初,我每天不是在做作業,就是在找工作,實在是太難了。當然找工作這個是我個人的情況,如果有同學喜歡做研究的,和教授聯繫就行,教授們都很和藹可親。

選課推薦
上面說到過CMU的課業壓力很大,而且根本就不存在那種能夠輕鬆就拿高分的水課,所以不要衝動一個學期就選好幾門課,如果這樣你會發現自己會被無窮無盡的作業淹沒,永遠都在為了趕上ddl而努力著…而且拋開workload這方面來說,課程的安排也在很大程度上影響了我們以後就業的方向,所以在僅僅三個學期里,選什麼課、怎麼選課對於畢業後的發展非常重要。
先說明幾點:
1、我在CMU三個學期的績點
是3.1-3.4-3.5,成績屬於中下游的那種,所以這個選課推薦對於學霸可能不怎麼適用,學霸們請盡情地選難度更高的課程吧!
2、因為我的就業目的非常明確,所以選課都是奔著能夠學到有用技術的課程去的,這些課程的workload都很大,也很耗費時間,還有就是不容易拿到A,如果很在意績點的同學,可以選一些其他的容易拿高分的課。
3、我當初選的課都是偏SDE(軟體開發)的,所以這些課程對於想往ML方向發展的同學參考性不大。
4、以下選課推薦更適用於Fall入學的學生,如果是spring的學生,可以適當做些調整。
5、CMU很多課程的上課內容只和教授有關,和課程的名字沒有太大關係,所以以下我推薦的課程也存在這種情況,建議選之前先打聽好授課老師。
6、據我所知現在的選課規則有所變化,而我當初在的18spring選課是非常自由的,建議大家選課先按照畢業要求來選,再根據自己的就業方向來調整,我的選課只是給大家一個參考,如果能夠幫助到你們那自然是再好不過的了。

第一學期
必選:
18-613 Foundations of Computer Systems
這門課是最基礎的系統課,因為我本科就是ECE相關專業的,所以剛開始的時候我覺得這門課對我來說應該是不需要的,所以去詢問了老師,但是老師給我的答案是"You do. This course is different.",之後上下來覺得這門課真的太值得了!課程的內容和相關的作業、資料都已經有了數十年的完善,質量非常高,不管是本科是不是CS專業的都推薦你選,因為這門課可以給我們接下來要上的課程打下堅實的基礎,好好學,後面的內容就會輕鬆很多。同樣的,我們也可以通過這門課來對自己的技能水平進行一個評估,如果拿到了A,那麼就說明以後上其他的課程是沒什麼問題的;如果像我一樣不幸拿到了B,那麼接下來的日子裡還需好好努力。
課程的內容和15-213/15-513的教學內容和教材都是一樣的,但是我個人覺得兩者的課程質量還是有些差別,建議大家預習、複習的時候直接看15-513的視頻,有時候直接用它代替ECE的這門課也是可以的哈哈哈。
10-601/10-701/18-661 Introduction to Machine Learning
這三門課都是CMU Machine Learning系列課程中的基礎課,區別在於10-601比較基礎,有的老師會叫我們做project,以後可以寫進簡歷;10-701很理論,因為是PhD的課所以有很多難度較大的公式推導,這個並不是ECE的課程,但也算是核心課;18-661是ECE的核心課,也是偏理論的課程。三門課選其一就行,因為他們的作用在我看來是差不多的,作為ML的基礎課,他們的一大作用就是讓我們確定自己是不是適合往ML這個方向發展。如果你覺得學下來非常有趣,那麼以後就可以選偏ML的課程;如果學下來覺得不太感興趣並且得到了不好的成績(比如我),那麼就試著往其他方向發展吧。而對於之前就有研究過ML的同學,這門課也可以讓你們回憶起基礎的知識,並進行進一步的鞏固。
另外這三門課還有一個優點就是老師給分都挺高,相對來說拿A是不難的,我認識的同學都拿了A,只有我拿了B。看到這個成績我就充分認識到我的數學水平限制了我走向ML的道路,所以轉而投入了SDE的懷抱。另外需要注意的一點就是,這三門課每個學期的授課老師都是不同的,上課的內容和質量也有所差別,所以選課前要先打聽清楚,以防踩雷。

18652 Foundation of Software Engineering
這門課是矽谷
校區SE的必修課,課程的主要部分就是組隊做一個老師要求的project,要使用node(express)作後端,中間會用到很多web tool/library/framework,用的語言是js,如果做的好的話對簡歷的幫助很大。項目每兩周一個iteration,每周都要和助教彙報項目進度,然後每隔兩周給助教演示一次,過程中我們各種git practice, code review, ci/cd,testing testing & testing, 檢查代碼風格甚至還有pair programming,不得不說如果沒什麼基礎的話做起來還是非常吃力的,比如我,當初幾乎天天都在搞這個東西。所以這裡提醒大家,如果想選這個課,建議先提前了解一下具體的作業內容,看看自己能不能hold住,如果覺得難度太大那還是放棄吧,因為不僅自己學得很費力,然後小組合作,也許還會成為拖後腿的存在;如果自己本身有基礎而且想鍛煉一下的話可以選,記得選一個大佬當隊友,會非常加分!
課程的項目部分很好,可是老師的講課水平其實不怎麼樣,上課經常講一些和內容無關的software engineering practice,感覺非常扯。期末有考試,考試內容很迷,單選、多選、簡單的js testing代碼都有,而且找不到方向複習,所以想拿高分還是要上課活躍一些,這樣平時分會很高。
17-681 Java for Application Programmers + 17-683 Data Structures for Application Programmers(如果只能取其一,建議選17-683)
這是兩門推薦搭配的課程,由同一個教授上課,一門前半個學期,一門後半個學期,屬於mini course。這兩門課強烈推薦給資料結構和演算法的基礎不太好的同學,授課老師的水平很高,上課用到的資料很全面,講課思路清晰,很有利於我們理解題目。只要學好了這兩門課,那麼自己刷題的時候基礎的題目一般都會做了,一些難的題目,看了解法也都可以理解。
39-699 Career & Professional Development for Engineering Masters Students
Master剛來的時候就要準備找實習了,這門課很有幫助,所以建議第一學期選。這是CIT學院的職業課,上課時間是在上半個學期,這門課教我們怎樣寫簡歷、LinkedIn和handshake,並且老師會布置作業讓我們學會修改自己的簡歷,讓其更加完美。

第二學期
必選:
15-640 Distributed System
這門課是我在CMU上過的最喜歡的課程之一!這是CS本科的系統必修課,不僅課程內容質量高,而且授課老師水平也非常高,一致獲得了同學們的好評。整個課程上下來能學到很多東西,對於後端的理解很有幫助。課程有4個homework,4個project和2個midterm,每個星期的作業量都很多,遇到bug的時候簡直要懷疑人生,這種時候就要積極和小夥伴們討論一起解決問題,畢竟CMU本科生高手雲集,大家互相學習都能夠進步噠。這門課的成績非常真實,就是我們考多少就是多少分,即使是全班考出來成績都不理想,老師也不會調分的,但是這並不影響它的實用性和受歡迎程度!另外需要注意的是,Fall和Spring兩個學期的內容有所差別,Fall用的是Go,Spring用的是Java,同學們要自行選擇。
15-719/18-847 Advanced Cloud Computing(只有Spring開)
這門課是ECE開設的核心課程,其實和上面的Distributed System課程內容有很多都是一樣的,可以說是低配版的DS。低配的原因是授課老師講課太順便了,上課容易犯困。但還是建議選了DS後再選這門課或者兩門課程一起上,更有利於我們對這方面的理解。還有一門版Cloud Computing的課和這門課名字類似,但是這門課比CC好點,workload也比較小。

18-845 Internet Service (只有Spring開)
我對於這門課的喜歡程度不亞於DS,強烈推薦給想讀PhD或者是喜歡讀paper的人選!這門課就是專門讀paper的課,上課的形式是大家坐成一個圈一起討論某一篇paper的內容,而且人數很少,才十幾個人,授課老師是Foundations of Computer Systems教材的編寫者,真正的大佬!所以在課堂上需要非常認真地思考,周圍都是學霸,教授也非常博學,自己都不好意思划水。這樣一來能夠學到的東西就更多了,一周兩次的看論文時間能夠提高我們的眼界和邏輯思維,同時討論的環節也鍛煉了我們開口說話的勇氣(這對於中國學生來說很不容易),你提出的任何問題老師都會親自解答,更何況老師還是這麼資深的大佬,這樣的機會對於研究生來說是很少的。建議這門課和上面推薦的兩門課一起選,因為我們上課讀的paper很多都是ACC、DS兩門課所要求的,有了這門課的助攻,對於那兩門課程的理解就會更加深入。
小班授課+自主討論這樣的上課形式對於出勤率的要求很高,一個學期最多缺勤兩次。作業的話是每周寫課堂上所讀論文的讀後感,另外還有一個Individual Project和一個Group Project,對於project老師沒做要求,難度隨意。總之整體上下來我覺得這門課最重要的是鍛煉了我們的思維,無論是上課還是作業,老師強調的都是我們要有自己的想法,而不是人云亦云。
17-437/17-637 Web Application Development
CMU名氣很大的課程,也算是神課之一了吧,教我們去全面了解全棧web開發。推薦在第二學期選這門課的原因是在這個學期,我們所學的知識剛好能夠應用到這門課所要求的作業中,從而得到很好地鍛煉,我們所做的project也可以寫進簡歷里,對SDE來說找工作很管用。課程學的東西不難,但是節奏很快,作業量也很大,每周都被homework和project輪番轟炸,認真學的話是可以拿A的。

第三學期
這個學期的情況比較特殊,因為我們都要忙著找工作,可以花在上課上面的時間是有限的,所以這個學期可以選一些輕鬆點的課,最好是沒有考試的那種。但是我還是堅持不選水課的原則,因為我覺得,反正都是要上課的,花同樣的時間,為什麼不去學一些更有用的知識呢?即使是最後一個學期,我們也可能會做出比之前更好的project來提升我們的背景,而上一些水課是不會有此機會的。
可選:
11601 Coding Bootcamp (只有Spring開)
這是一門上課=刷題的課程,用的教材是Cracking the Coding Interview,教材很好,然而老師的講課水平不咋地。我感覺都是憑著以前的基礎在刷題,所以如果資料結構和演算法基礎不是很好的同學記得不要選,你們會學得很痛苦,但是對於基礎還行的同學就很推薦,因為找工作本身就是要刷題的,既然這樣,那不如趁著這個上課的時間來練習一下。

11-642 Search Engine(只有Spring開)
這門課和18-845一樣要讀論文、寫讀後感,但是和18-845不同的是,上課的重點不在於討論,而在於公式推導,所以數學的不好的同學謹慎選擇!如果數學不太好但還是想選的話記得找一個好隊友!老師講課水平很高,課程質量非常好,workload因人而異,畢竟公式推導…
16-720 Computer Vision
我當初上這門課的時候是比較輕鬆的,沒有project和考試,只有5次作業,一般寫完作業就有A。不過據我所知這門課每個學期都不一樣,所以不知道現在怎麼樣,建議選之前還是提前打聽一下,如果輕鬆還是很推薦的。
選課的推薦就到這裡,以上都是我自己上過的或是身邊的朋友上過的課,無論是質量還是課程安排都是很好的。CMU是以CS為優勢的學校,你可以在第一個學期的時候看看自己對哪個方向感興趣,確定了就往那個方向選課,畢竟在CMU,什麼課都有,各自神課隨意選,資源非常豐富。但是不要因為神課多就全部都選,一定要考慮workload,建議在選課前在課程官網上看看這門課在這個學期的安排,然後把每一門課程的安排都列在日曆上,如果出現事情都堆積在一起的情況(比如一個星期有三門考試或者好幾個大作業),那就可以考慮把其中一些課程換掉,不然真的會吃不消的。

關於AIV
AIV其實就是Academic Integrity Violation,泛指抄襲或是作弊,我們在國內讀本科的時候沒什麼感覺,但是CMU對學術聲譽的規定非常嚴格,對於這些非常敏感,我身邊不止一個原本成績不錯的同學,卻因為抄襲/被抄襲或是看GitHub的代碼而掛科甚至休學、退學。
像一些大課,比如Introduction to Computer System, Introduction to Machine Learning這種,越是基礎的課程,學校抓得越嚴格;另外比如Cloud Computing這門課,老師會追蹤你在每道題上所花費的時間來判斷你有沒有抄襲。我做TA的時候,有一組同學用GitHub上的project作為參考,即使後來他們自己寫的project與之相比已經改了很多,但還是被老師判定為抄襲。抄一抄學長學姐的作業,用一用他們的代碼,從網上參考一下GitHub里的代碼,三五成群地做個人作業等等這些都可能在CMU構成AIV,所以我們一定要對AIV重視起來,不要覺得上面的做法都是一些無所謂的小事。
關於就業
我們這一屆的就業情況整體是很不錯的,只要公司招聘,我們就都有人進去。CMU的career fair很好,我的實習就是通過career fair找到的,全職也是career fair,外加內推。學校的career fair每年都會來一些大企業,機會很多,建議大家認真準備參加。然後上面也有推薦一些對找工作/完善簡歷幫助很大的課程,有需要可以選,有時候hr就是看中了你的某一個project也不一定!
剛來的時候不懂得要怎麼選課,全部都是看著課程名字和自己想像亂選一通,也因此踩了一些雷。通過上面的選課推薦希望學弟學妹們對於CMU的課程了解有所幫助,開學後好好排課。在CMU的這段時間雖然每天都熬夜,每天都很累,但正是這樣我才學會了更多,付出的努力都是會有回報的,也希望正在申請路上的你們也能夠得到一個好的結果,共勉。
