2021年3月3日 星期三

[選課] UW-Madison CS選課經驗分享 2020

PC/Hui-Shun Hung, Shot by iPhone 5S, 2017


本文作者/張奕巽 UW-Madison CS MS 2020畢業,現任職於 Microsoft 擔任軟體工程師

選課大方向


每個人的修課目標不盡相同, 主要有兩種:
  • 選輕的課:把大部分精力投在找實習與工作。
    如果想要走這條路,要多問問學長姐,唯有修過該堂課的人才能有比較客觀的答案,有些課沒有考試但作業很重。有些課會有保證 A 的成績,又有些課教得內容比較簡單。所以開口問學長姐很重要。甚至,你可以要要看歷屆考古題或作業。

  • 選想修的課:對於轉系/職的人來說 (EE 不算),充實自己是最重要的,請選這條。
    當然非轉系/職的人也能選這條。我是 IE 轉 CS,慶幸自己選了這條路,雖然痛苦。接著我會解釋我的選課邏輯,並介紹一下我選的每堂課和教授。

選課地圖


在來 Madison 之前, 我自己製作了選課地圖如下 (根據 2017 & 2018 的課程), 詳列了選課清單上我能選修的課以及它們的內容與等級
根據 2017/2018 年課程製作的課程地圖

編按:如果要參考本部落格主的課程地圖(2016)可以看這篇

製作選課地圖有幾個好處:
  • 思考自己比較喜歡哪個 CS 子領域 (ex. database, computer network, AI …)
  • 當詢問學長姐建議時,會比較有方向
  • 提前規劃選課路徑,我遇過一些人因為沒思考選課計畫, 最後錯失修某些高階課的機會

課程輕重緩急


如果想認真學 CS,你/妳會發現 30 學分根本不夠,只花兩年追上同儕更是難如登天,所以在前一兩學期你/妳應該安排重要的基礎課, 這些課通常是 5xx 的課, 它們是 7xx 課程的先修課, 因此,請盡量選擇能為未來提供較多選擇的 5xx,除非你/妳很確定自己未來要走的子領域

就算你/妳認真安排了修課計畫, 5xx 的課還是會多到修不完,所以要跟學長姊討論來考量自己未來要走的路。某些課程只會在特定季節開課, 而且還會隨教授心情而定,所以盡量保持彈性

一般來說,我建議先修完 5xx,再修 7xx 和 8xx,不然會修得很痛苦,避免計畫趕不上變化。

我修過的課程介紹 (CS900 除外)


第一學期 (學習 coding 真是好快樂啊)


CS300 Programming II

這堂課為我打下堅實的 Java 基礎,如 LinkedList 和 ArrayList 和 Array 的差別,如果你/妳刷題時寫 code 無法信手捻來 (思考解題不算),建議就修一修吧,但應該只算 PCP 畢業學分。

    授課教授:Gary Dahl

    教學品質極高,作業有趣且循序漸進,有耐心,還幫我寫申請 PMP 時的推薦函

CS400 Programming III

如其課程標題,300 進階班,有更多的基礎知識,新知老識都值得修一下,有基礎的人還是能溫故知新,我 300 & 400 是同一學期修的,剛好相輔相成。有點累,但會有成就感,好像可算 PMP 學分。

    授課教授:Andrew Kuemmel

    當時跑去 Epic 上他的課,同時有 Epic 的員工在上,給分大方,考試相對 on campus 的 400 簡單

CS540 Intro-Artificial Intelligence

因為我念 IE Master 時有 datamining 的基礎, 而且在 Foxconn 時有自修 AI, 所以這堂課的概念相對簡單, 當時作業是用 Java, 近期似乎改成 Python, 但我個人認為, 如果沒有要走 AI 的路, 其實不用修, 如果想學 AI, 請一定要找個學長姊討論, 求你/妳了

    授課教授:Jerry Zhu

    很多外系的人會修他的課, 上課偏重講解 AI 演算法的邏輯, 解釋得很到位, coding 請靠自己, 期末考很靠杯, 考一堆證明題, 我就爆了

第二學期 (8學分就要你/妳命)


CS537 Intro to Operating Systems

CS 三大台柱課之一, 這堂課有個 4xx 的先修課, 我沒有修, 所以我這堂課修的猶如地獄, 作業很重, 但會為你/妳打下扎實基礎, 考試很難, 但有念一定有回報, 轉系/職的人請一定要修, 不修你/妳念 CS 幹馬?念身體健康?

    授課教授:Shivaram Venkataraman

    我在 Madison 遇到的最好教授, 邏輯清晰, 口齒清晰, 學識淵博, 深入淺出, 看到他的課, 搶就對了

CS577 Introduction to Algorithms

CS 三大台柱課之二,對刷題有幫助嗎? 一點點而已,去報名九章算法比較有效,這堂課可以用來污辱自己的智商,我每次作業都想一兩天才解出來,考試是一堆證明題,照樣爆

    授課教授:Dieter Van Melkebeek

    口音很難懂,每堂課都是英文聽力考試,他在天上教,你/妳在地上爬


第三學期 (該是選領域的時候了)


CS564 Database Management Systems

我個人選 database 為子領域, 這堂課是許多 db 7xx 的前導課, 修了不會虧, 沒基礎聽課會覺得有點抽象, 它關於 SQL, query optimization, data structure (ex. BPtree), storage 等等, 找個學長姊 carry 會輕鬆一點

    授課教授:Goetz Graefe

    我的 db 啟蒙導師, 是 google 的高階 researcher, 很多 db 大作都來自他, 當時他第一次教這門課, 所以有點抓不到學生的程度, 導致評價不好

CS640 Intro to Computer Networks

網路也是 CS 的子領域之一, 我當時選修這門課是為了和 db 做比較, 之後我選了 db 繼續深造, 很值得修的一門課, 讓你/妳搞清楚一堆 protocol, 考試有念有分, 作業也不刁鑽, 基礎概念在面試時也會用到

    授課教授:Aditya Akella

    他的名字總讓我想到日本經典動畫, 上課品質很不錯, 只比 SHIVARAM 差一點點

第四學期 (database 是我的愛)


CS739 Distributed Systems

如果要走 db 子領域,你/妳還不修 Distributed Systems?所以是跟台灣政黨一樣喊喊口號囉?聽我的同儕說,想在 CS 走的長長遠遠,這是堂必修課,會有一堆演算法要學,paper 要念,然後很多舊 paper (比一般 paper 更難懂),會念到想回去重考 GRE, 當時我在忙著找實習和應付另外兩堂課,所以靠同學 carry。總的來說,很艱辛,但放到履歷上很值得

    授課教授:兩個博後印度生上課

    幹,那口音我完全聽不懂,但課中印度同學聽的津津有味

CS764 Topics-Database Mgt Systems

很值得的課程, 兩位客座教授介紹了許多重要知識。
ex. “ARIES” for recovery, "Bw-Tree" for multi-core threads, "Query Optimization" in MS SQL server Parallel Data Warehouse, "Vertica store" for storing columnar data, "Orthogonal key-value locking" and "Deferred Lock Enforcement" for concurrency control, and "Microsoft SQL Server" for query optimization)

    授課教授:Goetz Graefe & Alan Halverson

    兩位業界大神,一位 google、一位 microsoft,如果你/妳有好好念 paper,他們倆是寶庫啊, 上課也是幽默風趣,各種舉例解釋,大腿要抱緊

CS839 Core Topics in Computing Design Next-Gen Database

這門 db 的課側重 concurrency control,上課時老師會先講解 paper,然後分組討論,如果對 db 有興趣可以修

    授課教授:Xiangyao Yu

    年輕教授, 人很好, 去年好像還在找博士生, 因為是強國人, 所以口音好理解, 我常下課問他問題

第五學期 (我找得到工作嗎)


CS744 Big Data Systems

這門課算是 AI + distributed system,側重系統設計,介紹很多現在重要的 platform 或演算法 (ex. PyTorch,Spark,GFS),所以也是 db 的進階課,作業很切合業界趨勢

    授課教授:Shivaram Venkataraman

    幹, 他的課選就對了, 錢要花在刀口上阿

CS799 Master's Research

很多人以為 799 只能用作 internship 1 學分,那是大錯特錯,這門課也可用作 independent study,前提是要找到教授教你/妳

    授課教授:Goetz Graefe

    我的恩人,跟他單獨學習真的是獲益匪淺,不止學到最新的 recovery 知識,還被他推薦去應徵 Alan 的 team,這推薦真的強而有力!

如果想詢問更多可以 FB 搜尋張奕巽

沒有留言:

張貼留言