Purdue MSCS 最詳細干貨(課程介紹以及選課攻略)

avatar 663014
jonsnow5566
18449
40
Requirement 畢業門檻
相信大家在入學時應該就想好要走 non-thesis 或是 thesis 了。其實主要差別只在於,畢業時是否想要繳交畢業論文,以及修課堂數。因為我是走non-thesis option,所以以下的介紹我會以non-thesis option 為主。
Courses (10 courses for non-thesis option, 8 courses for thesis option)

- Three core courses:
CS 50200 or 56500 (Systems I), CS 50300 or 53600 (Systems II), and CS 58000 (Algorithms)

- Four table courses:
根據學校官網上的描述是“至少選取兩個” 不同的area other than Systems I, Systems II, and Algorithms. 換句話說是指至少選兩堂課不是 Systems I, Systems II, and Algorithms area 即可。
譬如說我選了一堂Databases area + 一堂 Data Mining area,剩下的兩堂table 課程我想要選Systems I, Systems II 皆可。

- Three electives class:
雖然說這三堂是選修課,但是CS department 其實是有限制的。如果你是選擇上圖的table 課程,就不用擔心office 不approve 的問題。
但是如果你是選擇外系的課程,會建議先看是否是在approved courses 裡頭, 可以參考以下連接cs.purdue.edu
另外CS 每學期會開一些新課程(試開課程),是CS590 開頭的,但是最多只能選擇兩堂,超過兩堂就無法計入畢業學分。

GPA Requirement:
CS master 的計分方式有A+(4), A (4), A- (3.7), B+(3.3), B(3), B-(2.7), C+(2.3), C (2), C-(1.7), D+(1.3), D (1), D- (0.7).
計算GPA之前,我想先介紹plan of study 。
在準備畢業的那個學期開學日之前,必須線上繳交plan of study 給CS department, 上面主要是記載你要放入哪些課程當作畢業學分。他們會檢查你是否有按照規定放入3 core courses, 4 table courses, and 3 electives courses。 學校會依照plan of study 記載的課程來判斷你是否能夠畢業。

- GPA門檻與限制 (GPA ≥ 3.00)
要計入plan of study的話必須只少有C range, 也就是說拿到C+, C, C- 的課都可以放入 ,但如果不幸拿到D range 的話,就無法放入plan of study,只能重修或是選擇別堂課了(事實上CS 的課是真的有professor 會給到D的喲!)
但是CS department有個硬性規定, 你不能拿超過兩個C Range 。 這個規定是非常嚴苛的,如果不幸有三個C放入plan of study,他們就不會approve 讓你畢業。
另外有個軟性規定,如果你有拿到一個C range, 就必須有個A range 來彌補。雖然說官網上面確實有這條規定,但根據學校行政人員的說法,這並不是硬性要求,但求保險起見,還是照官法說法吧!

- Ethics Requirement :
大約在入學一個學期就可以完成, (RCR) for Undergraduate Students on-line test

- Communication Requirement:
只要請你有final presentation 過的課程的教授寫封信給department 即可!最後一個學期完成就可以囉。

選課?
Elective course
普渡CS 的課程基本上沒有水課,除了CS590課程以外。因為CS590 的課程都是試開的課,有多老師給分都會偏向比較水一點,或是作業輕鬆一點。所以我會建議,CS590 的課程要選擇感覺能夠拿到A range的課程。

CS590 Software Reliability & Security (Professor: Lin Tan)
痛苦指數:*
當初會選這們課主要是因為
沒有考試
作業是讀paper 寫review
老師是新老師。
最後這堂課也非常幸運的拿到了A-。

CS590 Economics and Computations(Professor: Branzei, Simina)
痛苦指數:*
選這堂課也主要是因為
1. 沒有考試
2. 評分標準也是讀paper
3. 老師是偏新老師。
最後這堂課也非常幸運的拿到了A。

CS523 Social, Economic, And Legal Aspects Of Security (Professor: Mikhail Atallah)
痛苦指數:**
選這堂課也主要是因為
學長推薦
3次考試皆是選擇題(跟programming 皆無關係)
但其實這堂課並不簡單,也或許是沒有放太多心力在上面所以成績普普,但是老師人很好,所以也很推這堂課。
**但因為很多課是試開的課程,或許未來學弟妹遇到同堂課時,老師的評分標準也變了,所以建議要先了解老師的評分標準再選課唷!

Core courses
基本上Core course 的課的作業量非常大,考試也很難,評分也較嚴厲。

CS536 Data communication and computer network
痛苦指數:****
內容主要是細講OSI layers ,功課的部分有 數個lab 作業,以及一些觀念問題,跟計算題,最後期末有份final project。
主要使用語言有C 跟 Python。
考試是觀念跟計算為主。這堂課我認為是比起operating system應該是較為輕鬆的一堂課。

CS580 Algorithm (Professor: Jeremiah Blocki)
痛苦指數:*****
內容是從stable matching 到 NP 問題結束
課本是使用Algorithm Design這本書,作業題目不多,但是每一題都需要花好幾個小時思考,一周半左右出一份作業,基本上就是上份作業結束,下份作業馬上出來。老師人很好,office hour 建議一定要去,因為他會給作業的hint。唯一一點要提醒大家的是,這位老師給分很標準,他是那種會給到D的教授,所以建議要選他的課的人,一定要非常認真,也要給老師留下 好印象。

CS565 Programming Language (Professor: Jagannathan, Suresh)
痛苦指數:****
這堂課就是一堂coq 課,所有的theorem 都用coq 來做證明。
不管是作業或考試只要寫得出以下證明就可以得分。相比起另一堂compiler 來說,我認為這堂課應該是比較好拿分的。
Image for post
但是,由於都是證明題目,所以需要一點creative, 期中的時候班上平均只有50/150, 因為要在短短一個多小時直接上機用coq寫出證明還是太困難了一些。

CS510 Compiler
痛苦指數:*************
這堂課我沒有修,但是根據有修這堂課的朋友描述,這是一堂很需要花時間的課程。

Table courses:
CS573 Data mining (Professor: Yin Ming)
痛苦指數:****
如果有python 跟machine learning 基礎的人,我個人很推薦這堂課程。作業分別是手刻Naive Bayes, Decision trees, KNN…
唯一的缺點就是需要留點時間給這堂課的作業,因為是手刻還是得花點時間。

CS541 Database(Professor: Elisa Bertino)
痛苦指數:**
這堂課前半部分重點都在說明SQL,一共只有兩份Lab 作業,一個是寫SQL, 另一個是MongoDB。基本上沒有什麼SQL 經驗的人,上完課就可以無痛寫出來。我認為是CS table課程裡少數可以比較輕鬆的課。

CS560 Reasoning about Programs (Professor:
Samanta, Roopsha)
痛苦指數:****
這堂課跟Programming Language 有點類似,但是更著重於證明program 問題。功課所需要花費的時間很多,因為需要時間思考證明問題。唯一的優點是期末是用project 代替,可以少去考期末考的痛苦。

CS510 Software Engineering (Professor:
Lin Tan)
痛苦指數:*****
這堂課的lab 一共有三個,每個花費的時間都很多。 我會建議對programming debug 問題熟悉的去修這門課,會應用到Java, 跟C 語言的概念。需要了解什麼情況compile 後會出現error。
最後一個project 需要會tensorflow,是堂我認為很花時間的課程。
**課程會隨著教授不同而難度不同唷!

CS555 Cryptography (Professor: Jeremiah Blocki)
痛苦指數:*************
對密碼學有熱忱的我會推薦這堂課程,但我建議要有一些背景知識再去修這門課會比較了解內容。

排課
我個人是花了兩年完成10堂課程,因為第一個學期沒有好好選課的關係,所以造成有修課失敗的情況,也有造成不能算入畢業學分的問題。
因為core courses 最花時間,所以建議大家可以1 core course+ 1 table course + 1 elective course。
2018 Fall: CS555(修課失敗), CS536, CS699 Research(不算畢業學分)
2019 Spring: CS580, CS590, CS523
2019 Fall: CS541, CS573, CS510
2020 Spring: CS590, CS565, CS560
如果希望1年半畢業的話,可以3,4,3 或 3,3,4的方式修課,建議不要在找實習或工作的那個學期排太多的課。

分數
每位教授的給分都不會一樣,分數換算大概是如下,但根據我的感覺,換算標準沒有這麼高。譬如下圖的B+ 是 87~89, 但其實我有總分為85的課,也是拿到B+。
  • 53
40条回复