cwlogo

切換側邊選單 天下全閱讀 切換搜尋選單
切換會員選單

千人狂歡 最受歡迎的程式課

精華簡文

千人狂歡 最受歡迎的程式課

圖片來源:黃明堂

瀏覽數

5308

千人狂歡 最受歡迎的程式課

天下雜誌610期

神祕課號CS61A、CS10,彷彿一串密碼,從此引爆了柏克萊學生的電腦科學狂潮。是什麼樣的魅力,讓上千名「程式菜鳥」排隊上課?

下午兩點不到,加州大學柏克萊分校的薩特大門旁,人潮已經佔據學生活動中心內的所有座位,大廳也站滿了排隊人潮,有學生索性坐在活動中心外的階梯上──他們都在等待。

這門讓學生心甘情願提早到、甚至排隊等候的課,叫作「電腦程式結構與釋義」,是全柏克萊最受歡迎的課,俗稱「CS61A」。去年光是修課人數有兩千五百人;今年三千人,等同一半的柏克萊學生都上這門課。但五年前,這門課只有五百個學生。

掀起柏克萊學程式熱潮的,還有另一堂課號CS10的「程式的美麗與樂趣」,是程式設計入門課程,改良麻省理工學院的程式教學軟體Scratch,用圖像程式語言Snap!教學。

今年吸引三百人修課,甚至顛覆傳統性別刻板印象,超過一半的修課學生都是女生。由於淺顯易懂,更被美國列入高中先修課程的教材。

向非本科生遞出橄欖枝

這兩門課程在柏克萊都屬於低階入門課程。根據柏克萊校園課程報告,修課人數增加主要是來自非主修電腦科學的學生。在矽谷,電腦識讀逐漸被視為大學生核心學術與工作能力,以因應求才若渴的科技公司與新創產業。

CS61A老師、加州大學柏克萊分校電機工程與電腦科學系(EECS)教授德內洛(John DeNero),過去在Google負責Google翻譯的開發,拋下高薪開課,就是認為每個學生都應具備基礎的程式能力,跟電腦一樣思考,培養解決問題的能力。

「理解現在的世界需要不同工具,我可以改變學生的未來跟職業選擇,」他強化語氣,希望這門課有賦權的功能。

「讓學生先對程式產生興趣,再發現可以用程式做出真實的東西,」CS10老師、加州大學柏克萊分校電機工程與電腦科學系教授葛西亞(Dan Garcia)向前傾,忙著示範如何用Snap!畫出持續盛放、不停旋轉的多邊形花朵。

這兩門課吸引大量非主修電腦科學的學生,同樣追求從做中學的理念,但教學方法截然不同。

專案實作 立即給予成就感

在CS61A,三千個學生同時上課,令人難以想像。開學第一堂課,甚至塞爆全校最大的禮堂,於是德內洛開放學生在家裡遠端上課。

對他而言,學程式重點不在授課,而是每堂課後、每週至少三小時起跳的實驗和討論。

CS61A教三種程式語言,包括現在最常用的Python。德內洛認為,學程式語言需要非常多實作練習。又因為絕大部份的學生都是非電腦科學相關科系,要讓學生不受到打擊,最好的做法,就是讓學生可以看到立即成果,同時建構可以支持學生繼續學習的環境。

因此,這門課有兩百五十位助教,輪流帶每週五十個分組討論和實驗時段,甚至也有線上回答跟排程的機制,也追蹤回覆問題的時間,確保每個學生的問題能隨時被解答。

走進柏克萊蘇打教學樓三樓的實驗室,三十個學生對著電腦敲打鍵盤,有的交頭接耳討論遊戲設計的介面。今年畢業、即將到Google擔任工程師的助教葛林諾就坐在實驗室最前面,邊忙著安排週末的複習時段,邊等著學生舉手發問。

和傳統電腦科學教育不同,CS61A主打專案式教學。德內洛認為,維持學習的動機就是不讓學生失望,讓學生看到可能性。

除了每週作業,兩到三週就有個專案實作,期末則會有一個大型專題,「讓學生發現,原來他們可以用這些工具,去完成過去從沒想過可以完成的事情,」德內洛說。

舉例來說,開學第四週學生就要做出美食地圖推薦app,自動推薦、搜尋使用者曾評價過的類似餐廳;第六週學生就已經分組寫出網頁遊戲。

今年大一的瓦夏也坦言,作業負擔很重,卻也認為透過實作訓練,更習慣將大問題解構成小問題思考的流程。

每到學期末,德內洛總習慣問一個問題:「是否對電腦科學更有興趣?」超過八五%的學生,願意將電腦科學列為主修選項之一。

儘管每個修過CS61A這門課的學生都說難度高,但德內洛從沒想過讓這門課變簡單,「開一門令人挫折的課,比開心的課還容易,但要從挫折中看到進步,運用電腦運算思惟解決全新的問題。」

抓住創意的一瞬

相較於學生眼中太過困難的CS61A,CS10更是針對非電腦科系主修的學生,主打透過好玩的學習讓學生有興趣,觸發學習程式的契機。

這堂課教的程式開發軟體Snap!,不同於過去一般認知一行又一行的文字程式碼,而是將程式碼圖像化,使用者可以自創新模組、命名新功能,再依邏輯思惟將這些模組堆疊、設計指令。

結合翻轉學習模式,在CS10,每個學生都配備一個控制器,可以在課堂上和教授互動。全身散發著熱情的葛西亞也很習慣戴著耳麥,在偌大的禮堂裡穿梭講課。

那天談的是如何程式中的抽象概念,對他來講,寫程式更多是關於所謂的想法(big ideas),而不是細節,「我要向學生證明,從遊戲學習他們也學得到big ideas,將有創意的想法,化作真實的產物。」

他口中的big ideas,指的是程式語言裡面談到的迴圈、抽象化、通則化等概念。

雖然讓學生從遊戲中學習,這套軟體卻可以套用在不同的程式語言,透過遊戲學習程式的基礎概念,並運用基礎概念,解構大問題變小問題。

「先讓學生思考,自己想做什麼題目,抓住有創意的動機,再跟他們說需要具備什麼工具,」電機工程與電腦科學系兼任講師弗里蘭(Gerald Friedland)認為,傳統電腦科學教育太強調理論跟數學模型,很多課程的教法甚至都還停留在七○年代,而學生不知道自己有能力做出產品,甚至覺得跟自己無關,就沒有動機學習。

除了電腦運算思惟之外,這門課讓學生在期末用Snap!這套軟體做開放式專案,不指定題目和形式,學生想做什麼都可以,去年學生還結合Arduino設計自己的作品。

玩出改變社會的可能性

葛西亞興奮地拿起電腦,就想展示給《天下》記者看各種專案。他如數家珍,有的團隊設計機器人,能透過感測器找到迷宮出口;還有學生畫笑臉,讓電腦辨識追蹤笑臉的線條弧度;更有跳舞機器人會記得人類肢體動作,記錄下來後跳成舞蹈。

弗里蘭也舉例,曾有學生直接到辦公室說想做總統大選,想結合民調數據,但因為問題太大,還得找統計系的教授合作。

葛西亞很自豪,這堂課的角色就是作為引子,讓學生不會排斥接觸電腦科學。

「那時候大家都學得很開心啊!」今年柏克萊經濟系畢業的林志學現在在新創公司當產品設計師,他回憶這堂課像在玩積木,兩、三人一組做小遊戲,好玩也學會邏輯思考。

除了讓大家有興趣,還得開拓視野。在這堂課,可以聽業師跟「課」友回來,分享自己如何在專業領域運用過去學到的經驗。

不管是CS61A或CS10,這兩門在柏克萊最受歡迎的程式課,初心就是讓更多學生知道,自己是有能力藉由數位工具和思惟的轉變,看到改變的可能。

「這是第一堂課,不管學生未來會不會從事相關的工作,最重要的是學過這門課就會知道什麼都有可能,」葛西亞這麼說,他的眼神裡有著期待,期待更多學生願意為了改變社會,影響世界而往下深耕。

● 更多內容,請見天下雜誌 610期《數位X教育 贏的起點》>>

photo

關鍵字:

好友人數

文章下載

PDF下載 付費閱讀