CMU MCDS 2017 Fall Part 1

前幾天Google的實習offer也下來了,心情好的一批,就來更一篇。

今年八月中旬來的美國,第一次來,感覺也沒什麼特別的。8月底才開學,所以剛到的兩個星期也沒啥課,也就是選選課。

一開始就聽說MCDS System track的load很重,我一開始還不以為然,隨便按照Handbook上的hacker heaven選了4門課+Seminar(hacker heaven聽起來就很cool對不對),到學期中途才發現我這個課表的可怕。

Handbook 里推薦的課表

15-640 Distributed Systems

15-746 Storage Systems

10-601 Introduction to Machine Learning

15-645 Database Systems

這四門課里除了601,其他三門課都是我的program core,然後都帶了很大的project。我一開始還不當回事,因為聽說601比較水,拿來平衡其他三門重課,應該不會出太大問題,結果還是搞得我很struggle。

那就一門一門談一下這些課吧。

10-601 Introduction to Machine Learning:

這課有兩個section,一個是Roni Rosenfeld教,一個是Tom Mitchell教,兩個都是很好的老師,評價都很高,所以如果選誰的section都不錯。我上的是Roni的section,講的內容比較基礎,畢竟是introduction的課嘛。Roni講的深入淺出,從最基礎的概念和數學推導開始講起,我上下來感覺上這個課能給你在機器學習這方面打下一個很好的基礎,能更好的理解機器學習,而且課上的也有意思。不過可惜的是我對機器學習沒什麼興趣,上這個課就是為了湊個學分,來balance一下我其他三門重課,所以學的也不是很上心,畢竟大部分時間都去剛另外三門課的project去了,感覺漏了這個課很多有趣的點。要是能心無旁騖的上這個課,應該還是非常有趣並且能學很多東西的。這個課workload不大,一個星期一次作業,每個星期花一個下午差不多就搞定了,還是很easy的。不過Roni的作業也是有很多coding的,比如說實現一個hidden markov chain啊,手寫backpropagation啊,所以要是有一定的編程基礎的話再來上這個課會更好。

15-746 Storage Systems:

我這學期最喜歡的課。老師是Greg Ganger,上課詼諧幽默,認真負責,只要有人提問題就講的很細,直到講懂為止,不過這樣的話有的時候講的就會很慢...??。Project設計也很棒,第一個project是寫一個針對ssd的flash translation layer。因為ssd有讀寫限制嘛,所以我們的這個FTL就要實現translation,garbage collection和wear leveling。本來是個挺easy的project,但是因為我一開始定的design太naive了,導致越到後面越複雜...所以還是得先做好設計在上手寫代碼。第二個項目是cloudfs,本質上是個用了FUSE(File system in Userspace) interface寫的file system。這個project分三個checkpoint,第一個checkpoint實現基本的函數,比如open write read truncate symlink unlink之類的,然後保證大於預設threshold的大文件傳到cloud上(我們用的cloud server是個模擬的S3 server),然後把metadata放在本地。第二個checkpoint是deduplication,把大文件分塊然後算md5,如果cloud上有這個md5,說明有同樣的chunk已經在cloud上了,就不再往cloud上傳。重點是文件分塊,reference count和metadata的保存格式。第三個checkpoint是實現snapshot。整個項目難度中上,不過難得的是整個項目邏輯清晰,循序漸進,做完了之後感覺自己對file system這方面融會貫通,進步很大(跟645的project形成鮮明對比)。

15-645 Database Systems

這課老師是Andy Pavlo,是個很有趣的老師,喜歡匪幫rap,招phd的description里寫preper以前當過流浪漢或者gangster的,645騙學生說他們的一個ta 在new york 犯法了要去把他撈出來,結果一看這個ta照片,是notorious big... 反正各種騷操作。不過Andy是真的喜歡Database,教課教的也好,不過語速太快,他自己也吐槽自己的這個問題,說他也找過consultant諮詢過這個問題,結果語速還是降不下來??... Project很heavy,是用自己的實現替換SQLite里的一些component和feature。不過這學期feedback不是很好,下學期要換PostgreSQL了。project難倒不是太難,就是很難debug,然後很碎片化,就不像746的project那樣邏輯清晰,不過這也是645第一次開(645是615的進化版本,之前Andy覺得615太簡單,就開了645來替換645),project設計上有問題也在所難免,以後肯定會越改越好的。如果對database有興趣的話一定要上這個課,這個課是CMU為數不多的Database課,而且上了645的話,spring semester還能繼續上712,名字好像叫advanced database systems,講in-memory database(645是講傳統的database)。有意思的是,做project的時候,我和我另外一個mcds的同學陰差陽錯就進了Andy的組,所以下學期independent study和最後一學期的capstone design也都有著落了。

15-640 Distributed Systems

這課賊難選,fall semester幾乎所有人都想上這課,waitlist排個兩三百根本不叫事兒,基本上只有scs的學生才能選上。不過春季就好選很多了,所以秋季沒選上也不用擔心。老師是Yuvraj Agarwal和Srini Seshan,兩個印度老師,教的也不錯。project是用Go寫,很有意思。

除此之外還有一門mcds seminar 15-649,就是每個星期一次跟Garth和Majd吹吹水,assignment是一學期四次的report。Garth Gibson真是神人,可惜他這學期結束就跑路了,去加拿大的Vector Institute(一個加拿大政府牽頭搞的一個搞AI的機構)去當CEO了,下學期沒法和他吹比了,感覺很遺憾。

Prof. Garth Gibson的farewell party

選了這四門課,我的每天就被project統治了。一個接一個的checkpoint。最累的實際上並不是coding,而是那種不知道什麼時候是個頭的焦慮感... 所以我決定下學期就選兩門課,cloud computing和712,加上Andy 的independent study。

額,一不小心就寫了這麼多,篇幅有點長了,那就先到這兒吧,下篇就寫一下我這學期找工作的情況吧。同學們下篇再見 :)


推薦閱讀:

大家好,給大家介紹一下,這不是我女朋友,這是CMU

TAG:留学美国 | 留学 | 卡内基梅隆大学CarnegieMellonUniversity |