美國頂尖名校拋棄計(jì)算機(jī)基礎(chǔ)課,All in Python!前助教:計(jì)算機(jī)系末日來臨
東北大學(xué)Khoury計(jì)算機(jī)學(xué)院,竟宣布淘汰「計(jì)算機(jī)科學(xué)基礎(chǔ)」(Fundamentals of Computer Science)課程。
基礎(chǔ)不教了,那教些什么呢?答案是——Python。
不出意外,這項(xiàng)決定遭到了學(xué)生和助教們的強(qiáng)烈質(zhì)疑。
支持的人認(rèn)為,Python是當(dāng)前最受青睞的編程語言,對(duì)找工作更有利。
反對(duì)的人認(rèn)為,如果這個(gè)改革方案實(shí)施,將是東北大學(xué)計(jì)算機(jī)專業(yè)走向衰落的開始。
有網(wǎng)友表示,「一個(gè)時(shí)代終結(jié)了。東北大學(xué)課程體系曾經(jīng)是獨(dú)一無二的杰作,而現(xiàn)在,它將變得平庸平淡」。
他認(rèn)為,那些抱怨Fundies課程難度太大,或缺乏就業(yè)市場適用性的人,完全是撿了芝麻丟了西瓜。這些課程的核心是設(shè)計(jì)過程,而使用Racket正是為了幫助學(xué)生理解這點(diǎn)。
從這門課程受益的校友表示,「很顯然,這種方式是成功的,它已經(jīng)被證明是開啟計(jì)算機(jī)科學(xué)職業(yè)生涯的一個(gè)絕佳起點(diǎn)」。
這場改革背后,折射出一個(gè)值得深思的問題,計(jì)算機(jī)教育究竟應(yīng)該教什么?
東北大學(xué)計(jì)算機(jī)課程改革
對(duì)于計(jì)算機(jī)科學(xué)(CS)專業(yè)的學(xué)生來說,軟件工程師是最主要的職業(yè)發(fā)展方向之一。
一個(gè)優(yōu)質(zhì)的大學(xué)課程體系,必須為學(xué)生提供能夠讓其在職業(yè)生涯中取得成功所必需的關(guān)鍵能力。
「Putting Your Major to Work: Career Paths after College」2017年
眾所周知,軟件開發(fā)領(lǐng)域瞬息萬變。如果課程過分追隨當(dāng)前的行業(yè)趨勢(shì),所學(xué)內(nèi)容很可能在學(xué)生畢業(yè)之前就已經(jīng)過時(shí)。
一個(gè)優(yōu)秀的課程體系應(yīng)當(dāng)著重強(qiáng)調(diào)那些具有廣泛適用性的核心理念,使學(xué)生能夠靈活地適應(yīng)在未來工作中出現(xiàn)的全新技術(shù)。與此同時(shí),還需要教會(huì)學(xué)生如何思考軟件本質(zhì),以及如何系統(tǒng)地解決問題。
這正是東北大學(xué)現(xiàn)行課程體系一直在努力實(shí)現(xiàn)的目標(biāo)。
目前的計(jì)算機(jī)科學(xué)基礎(chǔ)課程(簡稱Fundies)通過教授系統(tǒng)化的程序設(shè)計(jì),為解決陌生問題提供了一套行之有效的方法論。
這種方法的核心在于,將復(fù)雜問題分解成小而可行的步驟,特別是在動(dòng)手編寫代碼之前,先要求學(xué)生深入思考問題的本質(zhì)。
諸如Fundies 1、Fundies 2、「面向?qū)ο笤O(shè)計(jì)」和「軟件開發(fā)」這樣的核心課程,著重培養(yǎng)的便是學(xué)生對(duì)代碼的思考能力,而不是簡單地堆砌代碼。
不可否認(rèn),沒有課程體系是完美的。
常有計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生會(huì)抱怨,「為什么Fundies 1教的是Racket,而不是Python這種更『實(shí)用的語言』」。
需要強(qiáng)調(diào)的是,F(xiàn)undies課程的重點(diǎn)并不是教Racket,而是培養(yǎng)可以應(yīng)用于任何編程語言的程序設(shè)計(jì)能力。而Racket只是實(shí)現(xiàn)這一目標(biāo)的教學(xué)工具而已。
實(shí)際上,一個(gè)在Fundies課程中掌握了核心概念的學(xué)生,完全可以輕松地將這些能力遷移到Python,或者其他任何語言當(dāng)中。
況且,在科技行業(yè)瞬息萬變的今天,僅僅開設(shè)教授Python的課程真的明智嗎?畢竟,說不好哪天就會(huì)有另一種語言占據(jù)主導(dǎo)地位了。
課程體系的設(shè)定,應(yīng)該更關(guān)注那些經(jīng)得住時(shí)間考驗(yàn)的原則,而非追逐短暫的技術(shù)潮流。
是革新,還是倒退?
但現(xiàn)在,在這個(gè)近二十多年來最嚴(yán)峻的科技就業(yè)環(huán)境下,Khoury計(jì)算機(jī)科學(xué)學(xué)院卻計(jì)劃放棄這種行之有效的教學(xué)方法。
如前所述,學(xué)院提出的改革方案將逐步取消Fundies 1、Fundies 2和「面向?qū)ο笤O(shè)計(jì)」課程,轉(zhuǎn)而推出全新的課程體系。
新課程將以Python為主要教學(xué)語言,學(xué)院認(rèn)為這是個(gè)附加優(yōu)勢(shì),因?yàn)镻ython目前是企業(yè)實(shí)習(xí)崗位最青睞的編程語言。
GitHub 2024年度編程語言榜單中,Python繼續(xù)霸榜
但是,我們不能僅僅因?yàn)橐婚T語言在業(yè)界當(dāng)前流行,就把它作為教學(xué)語言——我們必須選擇具有真正教育價(jià)值的語言。
選擇Racket是因?yàn)樗袑iT的「教學(xué)語言模式」,可以隨著學(xué)生對(duì)設(shè)計(jì)原則的理解逐步引入新的語言特性。
雖然新課程最初使用同樣具有教學(xué)導(dǎo)向的Pyret語言,但在第一門課程中就會(huì)迅速過渡到Python。
而Python卻沒有類似的漸進(jìn)式學(xué)習(xí)特性——學(xué)生不得不在掌握如何清晰高效地使用這些特性之前,就必須先接觸復(fù)雜的語言特性。
另外,Khoury學(xué)院表示將允許持有大學(xué)先修課程(AP)計(jì)算機(jī)科學(xué)學(xué)分的學(xué)生免修新課程。
現(xiàn)行課程體系之所以不允許這種做法,是經(jīng)過深思熟慮的——AP課程并不包含系統(tǒng)化的設(shè)計(jì)能力訓(xùn)練,因此與入門課程并不具有同等的教育價(jià)值。
Fundies 1和Fundies 2通過小型問題的實(shí)踐來訓(xùn)練設(shè)計(jì)思維,這為學(xué)生在后續(xù)的面向?qū)ο笤O(shè)計(jì)和軟件開發(fā)課程中處理更復(fù)雜的項(xiàng)目打下基礎(chǔ),同時(shí)也為他們的實(shí)習(xí)工作做好準(zhǔn)備。
如果允許學(xué)生跳過這些基礎(chǔ)課程,他們?cè)诤罄m(xù)的高階課程學(xué)習(xí)和未來的職業(yè)發(fā)展中都可能會(huì)遇到嚴(yán)重的困難。
改革,是為了提高課程出勤率
從這些變更來看,雖然Khoury學(xué)院表面上認(rèn)可設(shè)計(jì)范式,但實(shí)際上并未致力于將系統(tǒng)化程序設(shè)計(jì),作為課程的核心要素來維護(hù)。
這是一個(gè)令人擔(dān)憂的決定。
正如Fundies 1教材中所說,當(dāng)前課程所強(qiáng)調(diào)的程序設(shè)計(jì)能力是「區(qū)分野路子程序員和專業(yè)軟件開發(fā)者的關(guān)鍵」。
如果Khoury學(xué)院放棄以設(shè)計(jì)為導(dǎo)向的課程體系,將無法培養(yǎng)合格的軟件開發(fā)人才。
這次變更的主要推動(dòng)力,似乎是想讓核心課程變得更容易。
還有另一層原因是,能夠減少退課的人數(shù)。
有一位教授告訴學(xué)生,學(xué)院希望減少從Fundies 2和「面向?qū)ο笤O(shè)計(jì)」課程退課的學(xué)生人數(shù)。
雖然這種想法可以理解,但為此刪除課程中最重要的部分顯然是得不償失的。
「面向?qū)ο笤O(shè)計(jì)」課程的前任助教Derek Kaplan稱,自己見過許多學(xué)生在這門課程中掙扎。但也見證了這些學(xué)生通過學(xué)習(xí)這門課程成為更優(yōu)秀的程序員。
學(xué)期末的「代碼互換」(code swap)作業(yè),要求學(xué)生在其他學(xué)生的代碼基礎(chǔ)上進(jìn)行開發(fā),這是學(xué)生最難應(yīng)對(duì)的作業(yè)之一——但它教會(huì)了學(xué)生如何在他人編寫的代碼庫中工作,這是他們?cè)谖磥砺殬I(yè)生涯中必須具備的能力。
此外,對(duì)許多學(xué)生來說,這門課程提供了他們首次參與大型軟件項(xiàng)目的經(jīng)驗(yàn),這與他們?cè)趯?shí)習(xí)期間將要從事的工作很相似。
因此,降低課程要求對(duì)這些學(xué)生并無益處。
我們不禁要問:大學(xué)究竟是為了讓學(xué)生輕松拿到分?jǐn)?shù),還是為了真正培養(yǎng)人才?
至少,Khoury學(xué)院管理層在計(jì)劃對(duì)核心課程進(jìn)行任何改變時(shí),都應(yīng)該咨詢有經(jīng)驗(yàn)的助教。
助教們擁有獨(dú)特的視角——他們不僅親身體驗(yàn)過這些課程,還在幫助其他學(xué)生成功的過程中積累了寶貴的經(jīng)驗(yàn)。
助教深知什么是行之有效的,可以幫助確保在進(jìn)行有利于學(xué)生的改變的同時(shí),不損害核心教學(xué)原則。
Derek Kaplan表示,「如果Khoury學(xué)院執(zhí)意作出這些改變,這無疑將標(biāo)志著東北大學(xué)計(jì)算機(jī)科學(xué)項(xiàng)目衰落的開始」。