當前位置: 華文星空 > 心靈

美國頂尖名校拋棄電腦基礎課All in Python!

2025-01-14心靈

編輯:桃子 好困

【新智元導讀】AI都能寫程式碼了,大學電腦課程應該教什麽?最近,美國頂尖名校東北大學做出一項重磅決定,淘汰電腦基礎相關的核心課程,轉而主推Python教學。

東北大學Khoury電腦學院,竟宣布淘汰「電腦科學基礎」(Fundamentals of Computer Science)課程。

基礎不教了,那教些什麽呢?答案是——Python。

不出意外,這項決定遭到了學生和助教們的強烈質疑。

支持的人認為,Python是當前最受青睞的程式語言,對找工作更有利。

反對的人認為,如果這個改革方案實施,將是東北大學電腦專業走向衰落的開始。

有網友表示,「一個時代終結了。東北大學課程體系曾經是獨一無二的傑作,而現在,它將變得平庸平淡」。

他認為,那些抱怨Fundies課程難度太大,或缺乏就業市場適用性的人,完全是撿了芝麻丟了西瓜。這些課程的核心是設計過程,而使用Racket正是為了幫助學生理解這點。

從這門課程受益的校友表示,「很顯然,這種方式是成功的,它已經被證明是開啟電腦科學職業生涯的一個絕佳起點」。

這場改革背後,折射出一個值得深思的問題,電腦教育究竟應該教什麽?

東北大學電腦課程改革

對於電腦科學(CS)專業的學生來說,軟體工程師是最主要的職業發展方向之一。

一個優質的大學課程體系,必須為學生提供能夠讓其在職業生涯中取得成功所必需的關鍵能力。

「Putting Your Major to Work: Career Paths after College」2017年

眾所周知,軟體開發領域瞬息萬變。如果課程過分追隨當前的行業趨勢,所學內容很可能在學生畢業之前就已經過時。

一個優秀的課程體系應當著重強調那些具有廣泛適用性的核心理念,使學生能夠靈活地適應在未來工作中出現的全新技術。與此同時,還需要教會學生如何思考軟體本質,以及如何系統地解決問題。

這正是東北大學現行課程體系一直在努力實作的目標。

目前的電腦科學基礎課程(簡稱Fundies)透過教授系統化的程式設計,為解決陌生問題提供了一套行之有效的方法論。

這種方法的核心在於,將復雜問題分解成小而可行的步驟,特別是在動手編寫程式碼之前,先要求學生深入思考問題的本質。

諸如Fundies 1、Fundies 2、「物件導向設計」和「軟體開發」這樣的核心課程,著重培養的便是學生對程式碼的思考能力,而不是簡單地堆砌程式碼。

不可否認,沒有課程體系是完美的。

常有電腦科學專業的學生會抱怨,「為什麽Fundies 1教的是Racket,而不是Python這種更『實用的語言』」。

需要強調的是,Fundies課程的重點並不是教Racket,而是培養可以套用於任何程式語言的程式設計能力。而Racket只是實作這一目標的教學工具而已。

實際上,一個在Fundies課程中掌握了核心概念的學生,完全可以輕松地將這些能力遷移到Python,或者其他任何語言當中。

況且,在科技行業瞬息萬變的今天,僅僅開設教授Python的課程真的明智嗎?畢竟,說不好哪天就會有另一種語言占據主導地位了。

課程體系的設定,應該更關註那些經得住時間考驗的原則,而非追逐短暫的技術潮流。

是革新,還是倒退?

但現在,在這個近二十多年來最嚴峻的科技就業環境下,Khoury電腦科學學院卻計劃放棄這種行之有效的教學方法。

如前所述,學院提出的改革方案將逐步取消Fundies 1、Fundies 2和「物件導向設計」課程,轉而推出全新的課程體系。

新課程將以Python為主要教學語言,學院認為這是個附加優勢,因為Python目前是企業實習崗位最青睞的程式語言。

GitHub 2024年度程式語言榜單中,Python繼續霸榜

但是,我們不能僅僅因為一門語言在業界當前流行,就把它作為教學語言——我們必須選擇具有真正教育價值的語言。

選擇Racket是因為它有專門的「教學語言模式」,可以隨著學生對設計原則的理解逐步引入新的語言特性。

雖然新課程最初使用同樣具有教學導向的Pyret語言,但在第一門課程中就會迅速過渡到Python。

而Python卻沒有類似的漸進式學習特性——學生不得不在掌握如何清晰高效地使用這些特性之前,就必須先接觸復雜的語言特性。

另外,Khoury學院表示將允許持有大學先修課程(AP)電腦科學學分的學生免修新課程。

現行課程體系之所以不允許這種做法,是經過深思熟慮的——AP課程並不包含系統化的設計能力訓練,因此與入門課程並不具有同等的教育價值。

Fundies 1和Fundies 2透過小型問題的實踐來訓練設計思維,這為學生在後續的物件導向設計和軟體開發課程中處理更復雜的計畫打下基礎,同時也為他們的實習工作做好準備。

如果允許學生跳過這些基礎課程,他們在後續的高階課程學習和未來的職業開發中都可能會遇到嚴重的困難。

改革,是為了提高課程出勤率

從這些變更來看,雖然Khoury學院表面上認可設計範式,但實際上並未致力於將系統化程式設計,作為課程的核心要素來維護。

這是一個令人擔憂的決定。

正如Fundies 1教材中所說,當前課程所強調的程式設計能力是「區分野路子程式設計師和專業軟體開發者的關鍵」。

如果Khoury學院放棄以設計為導向的課程體系,將無法培養合格的軟體開發人才。

這次變更的主要推動力,似乎是想讓核心課程變得更容易。

還有另一層原因是,能夠減少退課的人數。

有一位教授告訴學生,學院希望減少從Fundies 2和「物件導向設計」課程退課的學生人數。

雖然這種想法可以理解,但為此刪除課程中最重要的部份顯然是得不償失的。

「物件導向設計」課程的前任助教Derek Kaplan稱,自己見過許多學生在這門課程中掙紮。但也見證了這些學生透過學習這門課程成為更優秀的程式設計師。

學期末的「程式碼互換」(code swap)作業,要求學生在其他學生的程式碼基礎上進行開發,這是學生最難應對的作業之一——但它教會了學生如何在他人編寫的程式碼庫中工作,這是他們在未來職業生涯中必須具備的能力。

此外,對許多學生來說,這門課程提供了他們首次參與大型軟體計畫的經驗,這與他們在實習期間將要從事的工作很相似。

因此,降低課程要求對這些學生並無益處。

我們不禁要問:大學究竟是為了讓學生輕松拿到分數,還是為了真正培養人才?

至少,Khoury學院管理層在計劃對核心課程進行任何改變時,都應該咨詢有經驗的助教。

助教們擁有獨特的視角——他們不僅親身體驗過這些課程,還在幫助其他學生成功的過程中積累了寶貴的經驗。

助教深知什麽是行之有效的,可以幫助確保在進行有利於學生的改變的同時,不損害核心教學原則。

Derek Kaplan表示,「如果Khoury學院執意作出這些改變,這無疑將標誌著東北大學電腦科學計畫衰落的開始」。