[心得] CMU MSIT-SE/ESE/MSE資訊與課程介紹

作者: iaminanl (好MAN)   2019-03-12 12:17:40
《前言一》
幾點動機:
1.想提供資訊很久了,但課業真的好重..趁春假寫一下,希望兩小時內寫的完
2.地裡的資訊年代久遠,更新些消息希望能幫助大家選校選系
3.更新在這裡還是習慣一些
4.一方面整理一下做過的事情,幫助我review方向與履歷
《前言二》
CMU的SCS有大量的program,好像有十個,個別有個別的重點,
小弟讀的是著重在software engineering,之前一位學長有問過我,
我當時真的分不出來CS跟SE,來了才算是略懂~
考慮到我去年手牌不是很好,沒有太多選擇,而且就是想念embedded,
因此雖然不是很清楚SE,但基於選課自由以及校名還是選擇這間,
這裡稍微介紹一下software engineering這個program的重點,
希望能幫助跟我一樣不太清楚的版友選系。
(我投了好多embedded或軟硬結合的program,SE並沒有花太多時間瞭解)
《科系介紹》
CMU主校區有一棟建築,二樓是ISR: Institute of Software Research,
他們開設Software Engineering的master program已經超過十年,
目前主要有幾個program:
1.MSIT-Software Engineering
2.MSIT-Embedded Software Engineering
3.MSE
這三個program都是fall入學,MSIT-SE唸三個學期,八月底畢業,
ESE跟MSE唸四個學期,十二月畢業。
前兩個是主打兩學期的MSIT project,第三個是三學期的Studio Project,
由於都是春季開始做project,所以這三個program都是不能暑期實習,
暑期需要至少24學分做project。
(還有一個是MITS,我不熟悉,就先不談)
(暑假不能實習很多人都認為是硬傷,這點不多說)
Project基本上可以想成校內的startup software team,ISR幫你找客戶,
客戶可以是業界或校外單位,舉例像magic leap或是NASA JPL,
也可以是CMU校內的專案,舉例像SEI的開源專案或是RI的機器人競賽,
在這兩個學期或三個學期間,把所學的SE技巧用在管理與開發,
會有Mentor像老闆或顧問一樣給予協助,
這個單位的program大概是這樣的定位。
至於SE的技巧小弟目前也是略懂,大致上包含:
- Requirement Engineering: 試著將客戶的需求轉化成更具體能實作的項目
- Architecture Design: 根據需求導出品質特性,並設計出相對應合理的架構
- Quality Plan: 根據需求設計出各種測試方法,確保軟體的品質
- Planning and Estimation: 依據budget試著找出合理的開發計畫
- Risk Management: 根據可能發生的問題做事前規劃,問題包含可能的延遲
- Software Process: 根據這個專案的特性,選擇並執行合理的軟體開發流程
寫成中文好奇怪哈哈,但大概意思是這樣,
每個學期末有EOSP,End of Semester Presenation,
報告給系內的老師們,並根據project過程中,
產出的software artifacts給予評分與建議。
(artifacts大概就是前面提到的五六個文件啦)
project的內容大致上可以選,題目我就不說太多了,
但project評分的重點在於如何做好software engineering,
實際的軟體寫幾行、寫多帥並不是老師們認為的關鍵,
重點是寫出來的軟體有沒有客戶滿意、有沒有架構的問題、有沒有流程的問題。
《課程安排》
我的program是Embedded Software Engineering,俗稱ESE,
必修與其他兩個program有至少三門不同,SE類型的課程大概佔一半,
如果考慮每學期修四門課,扣除必修,可以選擇的course slot分別有:
- 秋季學期:兩個slot
- 春季學期:一個slot
- 暑假學期:一個slot
- 秋季學期:三個slot
其中一個slot要選17開頭的課程,也就是ISR所內開的課程,
因此可以選擇六門ISR以外的課程。
相較來說,其他兩個program如下:
- 秋季學期:一個slot
- 春季學期:一個slot
- 暑假學期:兩個slot
- 秋季學期:一個slot(MSIT-SE沒有這個學期)
這幾個slot裡至少要兩個17開頭的課程。
CMU這邊SCS大家常說的好課=好重的課,大多是15、16或10開頭,
17的課程相對來說評價沒有這麼好,
但考慮到春季學期一般而言非常繁重,且暑假學期沒有什麼課程,
ISR這樣的課程設計是否符合需求,就需要多做點功夫比較。
(話說本來就要比較吧,學費好貴)
(另外這裡四門課通常操到吐出來,我自己是不打算最後一學期修四門課,以利求職)
《課程介紹》
*Canvas是CMU的課程管理系統
想了想我還是以時間作區隔,讀起來比較知道每學期在幹嘛,
但我用亮色標記的是SE/ESE/MSE必修,是software engineering的核心課程,
大致上秋季一入學會講軟體工程概論(17653),
下學期著重在講testing(17654)跟architecture(17655),
以及開始跑project(17677, 17678),把許多學到的軟體工程概念應用上。
至於選修就看看就好,個人興趣。
《暑假》
15-513 Introduction to Computer Systems
。必選修:必修
。課程網:Canvas以及可google到的那個
。介紹:
這門課是開學前五月到八月,遠端上課。
這門課是開學前五月到八月,遠端上課。
這門課是開學前五月到八月,遠端上課。
很重要要說三遍,開學前不是通常很忙嗎?忙離職、搬家、簽證、打包、結婚,
沒錯,然後很多課程需要這門課成績至少B才能選,
還沒到美國就先體驗CMU的生活囉^o^
但這門課真的很好,作業都非常的有趣,教課書讀起來如沐春風,
把電腦的很多觀念都深入淺出的講解,並且透過作業稍微體驗,
大概知道怎麼設計cache、設計memory management、設計proxy,
只讀課本可能就很有幫助了,作業設計的很好更讓人印象深刻,
很可惜我不能百分之百的時間投入,人生好多可惜~
推薦有志寫扣的人都讀一遍CS:APP這本書
《秋季》
18-648 Real-Time Embedded System
。必選修:ESE必修
。Prereq:15-513至少B
。課程網:Canvas
。介紹:
主要是Linux Kernel Hack,四個Lab最終把resource reservation framework實作,
可以學到怎麼改Android Linux Kernel以加入各種schedule policy的task server,
還有知道怎麼做bin packing,利用RMS確保系統可以達成real-time的要求,
大概會深入瞭解作業系統裡的scheduler這個角色,
另外瞭解一些Linux的design: kernel module、sysfs、或是governor等等,
大概會很熟悉用C自己刻一些資料結構或syscall,跟學著與Linux kernel相處
課堂講的比較多是理論,Linux的部分是不提的,需要靠摸索或是問助教,
雖然四五人一小組,但寫起來還是幹聲連連,「又崩惹!」是我最熟悉的中國用語
另外課程進行到Lab3跟Lab4大概就覺得老師講的有意義了,需要一點耐心,
然後課堂內容著重在各種scheduling policy,各種task server,
主要想知道怎樣的task set是schedulable,或是會miss deadline、造成deadlock,
以及一些case study,Prof Raj非常認真教學,講的也很好,
口音蠻重的有點衝擊,但因為講話很有節奏,還算聽的懂
15-746 Storage Systems
。必選修:選修
。Prereq:15-513至少B
。課程網:google的到
。介紹:
這門課的後半會自己用FUSE刻一個file system,大檔案放在雲端,小檔案放local,
雲端的部分模仿亞瑪的S3-API,並且引入dedup跟cache把雲端用量進一步減少,
dedup搭配MD5是非常有趣的地方,另外會實作write-back cache,
相較於前一門,這門會對作業系統的file system這個部分很有心得
前半的project是寫一個SSD的FTL,這有點難解釋,大概就是把logical address,
轉換成physical address,並利用一些技巧節省記憶體用量、減少消耗SSD壽命,
會寫很多C/C++以及bash腳本,以及知道怎麼設計資料結構以加速與節省記憶體
Prof Ganger跟Prof George都非常會講,有趣而且聚焦,聽得很開心,
課程第一部份比較各種儲存裝置:SSD、HDD,以及tape,
接著講怎麼部屬storage system:RAID的概念、declustering跟redistribution
最後講很多不同的distributed file system:HTTP, NFS, AFS,
有一些客座講堂:Google FSv2 Colossus,Datum FS,HPC的設計之類的
(可惜期末考爆了QQ)
17-630 Data Structure and Algorithms for Engineers
。必選修:選修
。Prereq:沒有
。課程網:Canvas
。介紹:
作業有六份,大概就是實作各種ADT,用C/C++/Python/Java,每個作業用一種XDD
ISR的課程特色就是希望你design doc寫好、code comments寫滿,
作業其實都不難,而且Tony人超好會看我們是不是很操,deadline會延期,
應該是有趣中又有點佛心這樣,重點在怎麼做info hiding,
效能那些不是重點,也算是很偏design的課。
Tony教學很認真,大概跟他重訓一樣認真,他多壯請參考ISR官網,
會花大概三分之二學期講各種資料結構,並且在Tree跟graph講一些常見的演算法,
並在最後講一些concurrent programming,
因為並不是很重的課,從我的敘述就聽得出來,對於刷題的幫助我覺有限,
把他當成Python 101跟Java 101應該可以。
17-653 Managing Software Development
。必選修:必修
。Prereq:沒有
。課程網:Canvas
。介紹:
這門課大概是Sofware Engineering 101,把軟體開發與管理流程裡,
的各種activities介紹一遍,搭配課堂跑一次,大致是希望傳達Scrum的精神,
討論每個sprint的component:backlog、review,或是planning pocker,
還有requirement engineering、milestone planning、earn value tracking等等
我當時抓不到重點,但因為我過去是embedded hardware/software,大致waterfall,
如果在新創上班過的、或是跑過類似流程的,可能可以一秒知道他要幹嘛,
這學期開始跑project就蠻有感覺,遇到問題會一直回去查找投影片,
有些組有經驗豐富的前PM或前工程師,規劃的部分就比較有模有樣,希望能跟上
有兩個case study,以及期中期末考,reading很多,但loading不算重
MSIT-SE以及MSE在秋季學期會有另外兩門課:Method與Modals,
是software engineering core必修課,
我沒有修,講不出什麼重點,問問同學再跟各位分享
《春季》
17-654 Analysis of Software Artifacts
。必選修:必修
。Prereq:沒有
。課程網:Canvas
。介紹:
作業著重testing與continuous deployment,
大量使用各種工具:Jenkins, JUnit, Mockito, Docker,搭配git,
當然可以自己引入其他框架啦,比如Flask或是Kubernetes,
去年被批評的一文不值,今年loading變超重啊啊啊
老師們都人超好,可以想像他們想花很多時間思索要讓我們多學一點,
但這樣評鑑大概還是會被寫爆,不過總是不會有浪費錢的感覺惹?
有期中期末考,六個個人作業、五個團體作業,每週有閱讀小考,
課堂從dynamic testing開始講:blackbox, whitebox, inspection,
然後講static analysis:syntatic跟structural, formal verification,
接著講一些data model跟process model的quality,
下半學期會討論各種quality的樣子
17-655 Architecture of Software Systems
。必選修:必修
。Prereq:沒有
。課程網:Canvas
。介紹:
在人人都想當架構師的情況下(是嗎),這門課應該算是符合很多人需求,
課堂先講各種quality attributes,以及可能有哪些tactics可以改善,
比如常見的用redundancy作為recovery tactics以解決availability的問題,
但會造成哪一些trade off,比如redundancy大概就是$$$$$$,
接著講各種不同的軟體架構:pipe-filter, event-based, call-return
作業大概也是以改善某quality attribute作分析與設計,
比如怎樣讓一個系統可以偵測到錯誤並某程度上自動修復,
寫的code不多,總共四個作業跟期末project,每週小考
17-703 Cryptocurrencies, Blockchains and applications
。必選修:選修
。Prereq:沒有
。課程網:Canvas
。介紹:
選這門課的原因大概是load management,但因為也很有興趣就選了這門,
法國老師講課不錯,課本選的更不錯,照著他的安排念,
對於cryptography會有簡單認識,然後深入的討論bitcoin的design,
比如scriptSig跟scriptPubKey,distributed consensus,pay-to-script-hash,
最近講到ethereum,算是對區塊鍊以及加密貨幣有很深的認識
下半學期會有個research project,期待~
《關於Project》
春季學期基本上不會開始寫扣,主要是做事前規劃與設計架構,
Analysis跟Architecture期末都要交上自己MSIT/Studio project的架構,
以及quality plan,因此project是緊密的與課程結合,
除了要做好development managing,也要把品質做有系統的分析,
暑假學期才會真的開始根據架構寫扣,
至於如何manage clients就各憑本事QQ
講到這裡大概可以知道software engineering跟computer science的差異,
software engineering還算很新的領域,這方面CMU有SEI的加持很有成績,
實際上這邊與SEI的合作也很緊密,小弟的mentor就是SEI的staff
《雜記》
最後幾點:
1.MSIT-ESE去年停招,也就是2019 Fall不會有新生,猜測是人手問題,
兩名主要的老師退休,2020 Fall不知道會不會復招,據說要增加選課自由度
2.MSIT-SE雖然也希望要有工作經驗,但認識的也有蠻多畢業就來的,可參考
3.MSE最少都工作經驗三年半以上
4.春季學期很多group project,可以練很多英文口說
5.MSIT-SE來之前要做好求職準備,九月份TOC是重要的career fair,
因為只有一個秋季學期,只能參加一次,自行斟酌
6.就這些必修來說,MSIT-SE跟MSE可能都不適合來CMU轉職練功,
要馬課會太重(聽說這學期有人修OS,還想睡覺嗎..)要馬學不全,
建議來之前要有修過CS的課程
一下子想不到還要說什麼,看看有什麼問題有空再補充
(另外小弟的申請過程就不多說了,工作經驗+GT考好+燒香拜佛,
上班族所以有找代辦,但比較像多麻煩代辦處理雜務與追進度,自己人生自己決定,
需要的話有空提供三圍)
(準備找工作好緊張啊啊啊)
以上
作者: philip09227 (philip)   2019-03-12 12:53:00
謝謝分享
作者: agape9453 (心之俱足)   2019-03-12 13:06:00
感動 謝謝
作者: jasonhu8787 (ggggg)   2019-03-12 13:42:00
作者: tennis1038 (13nash13)   2019-03-12 13:43:00
好文推推
作者: ETETETET (ET)   2019-03-12 14:12:00
好心推,祝找工作順利唷
作者: courant   2019-03-12 14:22:00
本人某MSCS就讀,這邊課業量真的不是普通的多,周周program assignment.2-3週就大考...超累
作者: ETETETET (ET)   2019-03-12 15:58:00
可以請問一下樓上是哪間的MSCS嗎謝謝
作者: muserholic (muse)   2019-03-12 16:07:00
樓上 看樓樓上的ID我會想猜是NYU 哈哈 kidding
作者: k900421 (qq)   2019-03-12 18:07:00
NYU tandon?
作者: nitu2009 (tomwhat)   2019-03-12 18:23:00
Msit-se跟mse有啥不同?
作者: ETETETET (ET)   2019-03-12 19:04:00
M大對欸,你一說就有感了哈哈
作者: courant   2019-03-12 20:51:00
某top 15 cs
作者: lmr3796 (Toro)   2019-03-13 14:55:00
@nitu,MSIT-SE是給new grad到junior,MSE是給三年工作經驗up的至少我申請的時候看他的要求,這兩個應該只能申一個MSIT-SE會要求好像是2 or 3年經驗以內這樣,細節有點忘了
作者: IMPOSSIBLEr (I'm possible rrr)   2019-03-13 16:30:00
求職加油,有需要海外工作版A我看看
作者: courant   2019-03-14 01:27:00
@ETETETET 本魯讀的是公立大學,同樣的課程,我發現CMU或Stanford的講義似乎講比較詳細,但在我們系上有些內容卻要自己私下找資料補足,但作業跟考試一樣會考一樣會出。在這方面我覺得似乎私立大學好像比較好。以上僅供您選校參考!
作者: tx871217 (AHQ-基王拉克神)   2019-03-14 02:08:00
大推
作者: ETETETET (ET)   2019-03-14 06:36:00
謝謝c大的補充!
作者: ron0908 (榮恩)   2019-03-14 20:05:00
謝謝詳細的分享!!

Links booklink

Contact Us: admin [ a t ] ucptt.com