-->

2021年1月23日 星期六

在「電腦科學」美國排名第一的卡內基美隆大學:如何藉課程設計培養一流人才?

 撰寫此文的同時,我終於在去(2020)年自卡內基美隆大學(Carnegie Mellon University,以下簡稱 CMU)取得電腦工程碩士學位,正式畢業並脫離 CMU 的作業苦海。此文將紀錄這一年來,自己觀察到 CMU 在計算機科學課程與台灣教育方式上的不同之處;然而,因為我只在 CMU 待了一年,後半年更遭遇新冠肺炎疫情封城,課堂和同儕互動體驗大不相同。就學期間沒有參與研究計畫而單純修課.同時我於台灣的修課印象,也停留在多年前,因此可能將與台灣現況有些出入。接下來,將以個人視角與讀者分享,我在根據《U.S. News》 所公布之排名中,美國 CS (電腦科學)第一名的 CMU 就學所獲得的觀察與見解。

撰寫此文的同時,我終於在去(2020)年自卡內基美隆大學(Carnegie Mellon University,以下簡稱 CMU)取得電腦工程碩士學位,正式畢業並脫離 CMU 的作業苦海。此文將紀錄這一年來,自己觀察到 CMU 在計算機科學課程與台灣教育方式上的不同之處;然而,因為我只在 CMU 待了一年,後半年更遭遇新冠肺炎疫情封城,課堂和同儕互動體驗大不相同。就學期間沒有參與研究計畫而單純修課.同時我於台灣的修課印象,也停留在多年前,因此可能將與台灣現況有些出入。接下來,將以個人視角與讀者分享,我在根據《U.S. News》 所公布之排名中,美國 CS (電腦科學)第一名的 CMU 就學所獲得的觀察與見解。

學期 14 週,深入修習 4 門課

CMU 是出名的「作業多又重」,入學前的我,其實不怎麼相信,心想作業是能多到哪去?反正一週平日有 5 天,每天課後都寫作業總行了吧!結果,作業超乎想像的多又難。學期間忙碌時,常常一週 7 天從醒來到睡覺前,都在寫作業。

相對於台灣一學期約為 18 週左右,CMU 每學期有 14 週。根據每個 Program 的不同設計,大部分的學生每學期會修 3 至 4 門課左右。想當初在台灣一學期修 25 學分,主修選修加起來多達 10 門課左右。不同於台灣廣泛探索的修課模式,CMU 的課程設計讓學生能在單門課程中較為深入學習,且涵蓋範圍廣。不少扎實的課程完整修過後,就能大致熟悉業界對應領域的基本技能。

但也因為如此,課程時間較短,因此課業份量相對重,整體步調就更加緊湊。課堂給予每份作業的時間和間隔較短,基本上剛結束一份作業後,馬上就會出下一份,常常每週都會同時有2~3 份作業截止。

舉例來說,我修過的課程「15–213: Introduction to Computer Systems」,一學期就有 9 次的 Lab work 需要繳交;「10601 Introduction to Machine Learning」,包含手寫與程式,也有 9 次作業。跟我個人印象中台灣大多數的課程作業相比,多上不少。不過當然,CMU 也有相對不需要花費這麼多心力的「水課」,但除非特殊原因,大多數人是不會願意大筆學費得過且過。

筆者感覺 CMU 相對更強調學生應透徹了解每個觀念和其細節,而不是有大方向的印象會應用即可。因此,課程中有許多作業會要求從 0 開始實作所有的細節。或許是美國教育在國高中時期,已經設計讓學生能有相對充分的時間與空間探索興趣,因此大學則以訓練專業為主。若是在 CMU 一門內容和作業評價不錯的課程中,都是能夠透過大量的作業和課程內容相輔相成,對所學觀念有更深入完整的了解,使學生具備進入業界所需的技能和程度。反之,因為修課數量相對較少,在 CMU 要對不同領域廣泛的探索相對限制較大。

再三強調「學術誠信」,作業靠學生自己從 0 到 1 

建立於歐美普遍的基督教文化上,社會相對強調誠信的重要性,在教育上也體現嚴格的學術誠信規定。尤其是在許多學生的共同大班課程的第一堂課時,教授便會再三強調「學術誠信」(Academic Integrity),講述他們會如何查驗繳交的每份作業,甚至秀出每年違反規定學生的數目,也詳加界定他們容許的討論方式,像是 high-level 的釐清觀念是被許可的,而code-level 的交流基本都是被禁止的。

以前在台灣不諱言地,我自己在某些課程作業報告,有時也會參考同學或是騰上網路上找到的正解;然而在 CMU。我所有認識的人,基本上每份作業都是靠自己慢慢拼湊出來,一部分是因為這嚴格的規定,另一方面大概也是極其昂貴的學費,讓人更努力鞭策自己學習。

強調學生親自完成每份作業,一方面是學術誠信的重要,但更是從課程中讓人感受到教授們是真心的希望能讓所有的學生,真正學會課程內容,並且融會貫通達到課程期許的目標,印象中以前在台灣修課時,大多時候程式作業只要求最後的正確性,因此常是自己隨意拼湊各路的 code snippet 後,能夠在 local 跑過測資就上傳了。對於 Code Quality/Testing/CI/CD/Colab/Documentation 著墨較少;而在 CMU 修的好幾門課都特別強調code quality 和相關工具的使用──這十分符合我先前實際在台灣工作時的業界要求。

像是在「17514 Principles of Software Construction」這門課會使用 Git & Travis 來實作project,熟悉業界團隊合作常見的 tools 和 CI/CD 流程,也會使用 Check style/SpotBug確保基本的 code quality,撰寫每個 feature 對應的 Unit Tests,每個 class/function 也需要寫上對應的 JavaDoc,而這門課更加強調設計的重要性,因此會考慮到程式的 Extensibility、API design 和 architecture,而許多其他課程會使用到 Gradescope,能夠在此平台上建立測資和執行程式,自動化程式作業的評分,十分方便。

學生與教授、助教互動即時且頻繁

每門課程基本上都會有 Piazza 或是 Slack 等協作平台,讓學生和教授、助教討論。筆者在台灣多數課程下課後和教授助教的接觸或討論較少,也沒有類似的方式能夠快速有效的找到教授、助教詢問。或許是歐美相對主動積極討論,有問題就勇於發問的風氣,二來是強調學術誠信,因此作業都得親自完成,禁止和同儕討論太細節的問題或是 debug,因此在 Piazza 、 Slack 上,便會和教授、助教有針對作業或是上課內容的大量討論,如果對於課程設計或是任何其他問題也都可以直接在上面提出。

一個蠻有趣常見的例子是,常會有人提出因為某些原因希望能夠延後某次作業的截止日期,底下便會有許多人附和。只要原因合理的情況下,大多時候教授都會順應民意,通融延後該次作業的死線。


更多精彩報導,詳見《換日線》

※本文由換日線授權報導,未經同意禁止轉載。

沒有留言:

張貼留言