當學生在電腦科學 (CS) 入門課程中學習程式設計時,許多人在應用基本概念方面都曾碰到瓶頸。SJSU 的 CS 教授 Cay Horstmann 想幫助學生自行練習程式設計,以便更快速地精進自己的技能。問題是,由於程式設計的題目經常沿用歷年考古題,因此學生不費吹灰之力,就可以在網路上找到解答。Horstmann 教授需要找出一個方法,既可提供更多練習題,又不至於讓學生輕易取得答案。
San José State University 支持學生自修程式設計基礎概念
面對虛擬機器容量有限的難題,SJSU (聖荷西州立大學) 電腦科學系需要找出擴展資源的方式,以便在不受限的前提下為系上學生提供程式設計練習。
「學生在週日晚上做作業時,可能會有 20 台虛擬機器持續運作,因此隨著工作負載變動,機器會自動啟動及停轉。」
Cay Horstmann, 電腦科學教授, San José State University
為所有學生提供符合實際情況的實作訓練
目前,生物學和法律等非 CS 領域的學生也都開始對程式設計產生興趣,認為這項技能可以幫助他們進行研究,或提高生產力,因此建立一個供學生自學的系統就更顯重要。對有志投入 CS 產業的開發人員來說,程式設計已不再是他們的專利。
「對程式設計技能的需求已經轉變,電腦科學系需要為此做好準備,」Horstmann 說:「一般學生也都會選修電腦科學,希望在自己的專長領域中提升工作效率。由於 CS 領域的師資相當匱乏,因此學生必須主動透過自修的方式學習。」
Cay 之所以知道 Google Cloud 教育公益計畫,是透過電腦科學教育特殊興趣群組 (SIGCSE) 的介紹。之後他申請了研究計畫並獲得 Google Cloud 的抵免額,這些抵免額可用於任何 Google Cloud 產品。藉由這些工具,他開發了 CodeCheck 這項自動評分工具,並在其中提供數百道練習題,讓學生練習設計程式。
CodeCheck 是一款網頁式程式,旨在幫助學生學習如何透過任何程式語言來寫程式。由於教授可以為學生出獨一無二的程式考題,因此學生必須自己找出解題之道,而不僅僅是在網路上尋找答案。此外,電腦科學系的伺服器容量已達執行負荷上限,所以 Cay 在建構 CodeCheck 時使用了 Google Compute Engine,這款虛擬機器的運算能力沒有特別限制。此外,他選用 Stackdriver 來監控、記錄及診斷內容,同時也因擴充性和便利考量而選擇了 Cloud SQL。
「學生在週日晚上做作業時,可能會有 20 台虛擬機器持續運作,因此隨著工作負載變動,機器會自動啟動及停轉,」Horstmann 說道。
現在,SJSU 的 CS 教授可以使用雲端運算工具來講授程式設計課程,不必擔心學校伺服器的容量,並且可輕鬆地招收更多學生,包括非電腦科學系的外系學生。學生將學習如何管理遠端系統、擴充工作負載、記錄和自動化部署作業。
鼓勵學生自學
透過 CodeCheck,學生寫程式時可即時獲得意見回饋,因此能夠立刻得知自己的解題方式是否正確。此外,CodeCheck 不會告訴學生錯誤所在,而是會讓學生自行找出錯誤。在這套工具推出之前,學生提交作業後需等上幾週,才能得知老師對作業的意見。經過了這麼久的時間,大多時候,學生早就忘了當初解題的步驟。
問卷調查結果顯示學生認為線上練習資源非常實用,因為就算不小心出錯也不會覺得丟臉,而且也不會有必須限時完成的壓力。
據 Horstmann 表示,CodeCheck 也可以提升學生的學習成效和考試成績。在一門針對非主修生開設的 Java 課程中,學生被分為兩組,使用 CodeCheck 的小組在成績表現上比控制組高出 50%。而在程式語言課程中,使用 CodeCheck的小組在 Scheme 程式設計問題上的得分比控制組高出 20%。至於練習題以外的題目,兩組的得分則相同。另外,在授課對象為轉學生的 C++ 課程中,所有學生都必須完成練習題,結果發現在課程開始到結束之間,每個問題的平均嘗試解題次數減少了三分之一,完成作答的平均時間減少了一半。
教所有人學會程式設計
越來越多學生出生在雲端技術盛行的時代,所以教育工具也必須隨之演進,才能滿足 CS 和其他學科學生的需求。舉例來說,當學生從基本圖片問題進階到學習建立循環,必須經過大幅概念轉變,因為無論輸入什麼內容,循環都要能正常執行;許多學生都能瞭解這個概念,但實際應用卻沒那麼簡單。一旦瞭解一種模式,他們就會開始學習如何將概念應用在程式設計上。
使用自動評分工具時,學生可以從基礎開始,先撰寫 5 行的程式碼。如果課程作業要求學生撰寫 200 行程式碼,只編寫 5 行內容似乎不值一提;不過,關鍵目標是讓學生從小處著手,逐漸累積,最後應用所學完成更複雜的作業。
「對於商務人士、科學家、律師、新聞工作者…任何從事資料相關工作的人來說,程式設計都是 21 世紀必備的技能。」Horstmann 表示:「如果傳統授課模式,亦即講課、進實驗室及寫家庭作業,對主修 CS 的學生來說大都成效不彰,那麼非本科系的學生就更不適用這種方式。而這正可以解釋我為何採用『重複練習的教學』,這才是經得起時間考驗的方式。」
「對於商務人士、科學家、律師、新聞工作者…任何從事資料相關工作的人來說,程式設計都是 21 世紀必備的技能。」
Cay Horstmann, 電腦科學教授, San José State University
透過完美的後端作業執行自動評分工具
Stackdriver 具備功能強大的監控和診斷功能,能協助 Cay 排解問題,並確保學生正確使用自動評分工具。舉例來說,假如學生試圖透過執行某個程式來清除其他程式,或是關閉電腦,固線式自動評分工具便會封鎖這類指令。相較之下,過去 Cay 有時必須花上數小時為程式偵錯,才能找出問題原因。
CodeCheck 的主要目標,是讓對程式設計有興趣的所有學生都能順利練習。學生不必註冊或登入即可使用這項自動評分工具。而教授可將 CodeCheck 整合至學習管理系統 (LMS),這樣學生就能直接在 LMS 中完成作業,並由自動評分工具打分數。Cloud SQL 會追蹤學生完成作業所花費的時間,並自動備份作業內容。透過這項整合服務,學生只要按一下 [記錄我的分數] 即可繳交作業,方便教授和學生提交程式。
「隨著程式設計日益普及,未來寫程式將不再只是開發人員獨有的技能,因此電腦科學系要順應潮流,讓學生可以按照自己的步調學習,」Horstmann 說:「拜 CodeCheck 之賜,學生可以挑戰自我,在課堂外持續學習。」