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

看板studyabroad (留學)作者 (吉爾摩)時間6年前 (2019/03/12 12:17), 6年前編輯推噓17(17010)
留言27則, 14人參與, 6年前最新討論串1/1
《前言一》 幾點動機: 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在秋季學期會有另外兩門課:MethodModals, 是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考好+燒香拜佛, 上班族所以有找代辦,但比較像多麻煩代辦處理雜務與追進度,自己人生自己決定, 需要的話有空提供三圍) (準備找工作好緊張啊啊啊) 以上 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 24.3.138.129 ※ 文章網址: https://www.ptt.cc/bbs/studyabroad/M.1552364265.A.CB6.html

03/12 12:53, 6年前 , 1F
謝謝分享
03/12 12:53, 1F

03/12 13:06, 6年前 , 2F
感動 謝謝
03/12 13:06, 2F
※ 編輯: iaminanl (24.3.138.129), 03/12/2019 13:31:58

03/12 13:42, 6年前 , 3F
03/12 13:42, 3F

03/12 13:43, 6年前 , 4F
好文推推
03/12 13:43, 4F

03/12 14:12, 6年前 , 5F
好心推,祝找工作順利唷
03/12 14:12, 5F

03/12 14:22, 6年前 , 6F
本人某MSCS就讀,這邊課業量真的不是普通的多,周周progr
03/12 14:22, 6F

03/12 14:22, 6年前 , 7F
am assignment.2-3週就大考...超累
03/12 14:22, 7F

03/12 15:58, 6年前 , 8F
可以請問一下樓上是哪間的MSCS嗎謝謝
03/12 15:58, 8F

03/12 16:07, 6年前 , 9F
樓上 看樓樓上的ID我會想猜是NYU 哈哈 kidding
03/12 16:07, 9F

03/12 18:07, 6年前 , 10F
NYU tandon?
03/12 18:07, 10F

03/12 18:23, 6年前 , 11F
Msit-se跟mse有啥不同?
03/12 18:23, 11F

03/12 19:04, 6年前 , 12F
M大對欸,你一說就有感了哈哈
03/12 19:04, 12F

03/12 20:51, 6年前 , 13F
某top 15 cs
03/12 20:51, 13F

03/13 14:55, 6年前 , 14F
@nitu,MSIT-SE是給new grad到junior,MSE是給三年工作
03/13 14:55, 14F

03/13 14:55, 6年前 , 15F
經驗up的
03/13 14:55, 15F

03/13 14:55, 6年前 , 16F
至少我申請的時候看他的要求,這兩個應該只能申一個
03/13 14:55, 16F

03/13 14:56, 6年前 , 17F
MSIT-SE會要求好像是2 or 3年經驗以內這樣,細節有點忘了
03/13 14:56, 17F

03/13 16:30, 6年前 , 18F
求職加油,有需要海外工作版A我看看
03/13 16:30, 18F

03/14 01:27, 6年前 , 19F
@ETETETET 本魯讀的是公立大學,同樣的課程,我發現CMU
03/14 01:27, 19F

03/14 01:27, 6年前 , 20F
或Stanford的講義似乎講比較詳細,但在我們系上有些內容
03/14 01:27, 20F

03/14 01:27, 6年前 , 21F
卻要自己私下找資料補足,但作業跟考試一樣會考一樣會出
03/14 01:27, 21F

03/14 01:27, 6年前 , 22F
。在這方面我覺得似乎私立大學好像比較好。以上僅供您選
03/14 01:27, 22F

03/14 01:27, 6年前 , 23F
校參考!
03/14 01:27, 23F

03/14 02:08, 6年前 , 24F
大推
03/14 02:08, 24F

03/14 06:36, 6年前 , 25F
謝謝c大的補充!
03/14 06:36, 25F

03/14 20:05, 6年前 , 26F
謝謝詳細的分享!!
03/14 20:05, 26F

12/07 00:02, 6年前 , 27F
豐富推
12/07 00:02, 27F
文章代碼(AID): #1SXpBfos (studyabroad)
文章代碼(AID): #1SXpBfos (studyabroad)