注:每周平均用時是根據校方官方統計平均。好學生 用時應該少些。
- Freshman integration course (1學分)
- 這門課分2部分,
- 前一部分是Dean介紹SCS的各種學術活動,學生的各種機會(RA,TA,科研,選課等等),
- 後半部分是 SCS 7個係的教授,分別每周介紹他們的研究領域,他們每天正在研究的主要課題,以及當今 CS 的新發展,新動向
- 平均每周 用時 2.5小時
- Principal imperative computation (C programming + algorithm) (12學分)
- CMU SCS 核心必修課程,雖然很多學生都會了,但幾乎不可免
- 經驗:培養使用 contracts 和 invariants 的 defensive programming
- 成績:學生成績分化嚴重,平均成績70%,90分以上和40分以下的各占15%
- 平均每周 總共學習用時 15.0 小時
- Mathematics Foundations for Computer Science (discrete math) (12學分)
- 授課老師teaching prof. Mackey廣受好評,幾乎所有的老師和學生都對他超高好評。我曾經在此貼出和他長聊,被各位抨擊,原因僅僅因為他是teaching prof.
- 另一門CMU SCS核心必須課程,是CS理論、算法、proof based math的基礎
- 又一門成績嚴重分化的課程,成績往往不是由學習時間決定的,而是數學天分決定的。
- 這門課成績是 被 SCS 學生成績統計表明,和學生最終GPA最相關的成績。也就是說,SCS教授們認為,這門課的成績,最能預測 是否能在 CS學習上成功。
- 平均每周 總共學習用時 13.5 小時
- Matrix and Linear Transformation (10學分)
- 矩陣和線性代數課,既有和其他大學、係科一樣的內容,又有SCS特有的一些特色
- 額外的內容
- 使用 Julia 語言編程,這是集 C語言的快,和 Python的強大支援於一身,特別在CS理論,數值計算,矩陣運算,圖像處理上非常強大。課程有一個project 必須用 Julia 完成
- 重點講授了 SVD (曾經是 Machine Learning最強大武器)和 spectral clustering. 並需要完成 這些 Projects
- 平均每周 總共學習用時 9.5 小時
- Calculus in 3-D (9學分)
- 這門 21-259 課原則上是不讓一年級新生選的,由於我小孩沒有其他可選的課,我給advisor打了電話,特許 第一學期 選了這門課
- 這門課和以下課程是 Counter Requisite。就是隻能選一門:21-254,21-266,21-268,21-269. 其中 21-269 比其他課程難,隻有矩陣和線性代數得 A的,並且數學測試優勝者才可以選這門課。我孩子當時數學測試優勝,但矩陣課剛剛上(後來也是得了A),並且沒打算在數學上深耕,所以主動放棄了 269. 還有就是 後來的 computer graphics 要求 pre-requiste 必須有 Calculus in 3D,所以我們選了這門課。
- 這門課相對挺容易的,平均每周用時 9.1 小時
- Writing About Data
- 寫作課之一,感覺 枯燥、無趣
- 平均每周 總共學習用時 6.5 小時
- Writing About Public Problems
- 另一門寫作課,同樣的 枯燥、無趣
- 平均每周 總共學習用時 6.6 小時。 花的時間比 writing about data 略多
- Discrete Math Primer
- 離散數學入門
- 這門課的一個目的是給學生分流:根據這門課考試成績,學生被分配到不同的數學學習路徑:
- 分數最低的去學 21108 (introduction to math concepts)
- 好一點的去學 21127 (concepts of mathematics)
- 再好一點的去學 21128 (math concepts and proofs)
- 再好一點的去學 15151 (Mathematics Foundations for Computer Science)
- 最好的 去學 21228 (Discrete Mathematics)
- 平均每周 總共學習用時 3.8 小時
- Computing at Carnegie Mellon
- 熟悉CMU各種 計算資源,硬軟件工具,各種設備使用方法以及限製,比如 cyber security, 打印機,學校電腦能否下載電影,黃片等等
- 還有很多政治正確性的東西
- 平均每周 總共學習用時 3.5 小時
- Fundations of Robotics
- 邊學邊做的機器人課,主要是用 Romi Robot 進行 編程、傳感、電機控製 來實現一個自動行走的機器車。兒子秋假和寒假時帶回家 玩,可以自動行駛,繞過房間的障礙物,用激光 和 可見光 computer vision, detection etc
- 充滿樂趣,又有成就感的一門課
- Lean Programming
- Lean, 是一個 typed functional programming language, 也是用於 數學,統計、機器學習的 theorem prover. 算得上是一門 purely functional programming language. 對於初學者而言,有非常大的 learning curve. 而且首先需要紮實的 type theory 數學準備
- 我兒子之前幾乎沒有什麽functional programming的經驗,也沒有學過 type theory,所以沒有什麽準備就上了這門課,結果上課如同聽天書,根本不懂。一共有 6個projects,秋假時,前3個projects都不會做。秋假回家時,孩子說,準備 drop 這門課。我查了一下規定,已經過了 drop deadline了,隻能 withdraw了,那樣就有一個 w 的不好記錄了,看來你隻能 硬啃了。於是孩子在秋假中,天天鑽研 lamda calculus 和 type theory,以及 Lean 語言, 終於把 3個 projects 補上了。後來的課程也跟上了。
- Putnam Seminar
- 著名數學教頭 PoShen Loh的課,為 Putnam 競賽準備的
- 課程不難,但最後參加 Putnam 競賽奪得好成績,還是比較難的
- Loh名氣很大,對學生很好,但感覺作為數學教頭,他的嚴厲不夠,難度也不夠。