張 玥
編者按:在2008年11月15日召開的“第四屆全國計算機教育論壇”上,一位從大洋彼岸遠道而來的特殊嘉賓為我們帶來了西方的教育教學理念,引起了普遍關注。他就是美國紐約市立大學布魯克林學院(CUNY)計算機與信息系教授David M. Arnow。David教授是計算機科學課程改革的主要倡導者,主要研究領域包括實驗性分布式計算軟件和計算機科學教育。在這次論壇上,他詳細介紹了自己開發的基于Web的交互式程序設計編程語言學習系統——CodeLab,與各位老師交流了自己的教學經驗和體會,贏得與會者的好評。本刊記者(以下簡稱記)在會議期間采訪了David教授(以下簡稱D),就計算機教育教學等內容進行了深度訪談,以資國內同行了解和借鑒。
記:您能簡單介紹一下CodeLab教學系統嗎?
D:CodeLab是基于網絡平臺使用的軟件編程教學和學習工具。它的核心是一組設計獨特、完全互動、簡單易操作、超過200套的編程練習庫,包含編程教學提綱。CodeLab提供練習的自動校驗功能,給予學生及時的知識鞏固或診斷性的回饋意見。
那些采用CodeLab給學生布置作業的教師發現學生在作業中犯的錯誤減少了,在考試和項目中的成績提高了,編程的自信心增強了。此外,CodeLab還擁有教師管理工具,讓教師輕而易舉地將練習融入教學中。
通過網絡平臺界面,教師可以組織教學提綱,精選、制定和定制練習題,還可以指定作業提交到期日。最
后,系統會跟蹤所有學生的作業,而教師可以通過基于網絡或基于電子郵件的系統輕松掌控學生學習能力表現的所有記錄,這個記錄可以和現有的評分體系結合到一起。
它的使用流程圖如圖1所示:

圖1 CodeLab使用流程圖
記:CodeLab系統是如何工作的?
D:CodeLab系統的工作狀態可以從3個方面加以闡釋:
1. 對教師和學生
教師可以輕而易舉地將CodeLab結合到自己目前的教案中:給開發人員發一封電子郵件,教師可在24小時內獲得賬戶;作為課程管理員,拖拽式地為學生選擇練習題,并在日歷上點擊設置到期日。學生注冊CodeLab時,系統會自動為教師生成學生分數冊,它替教師記錄學生們的所有練習活動。
學生到CodeLab網站填寫一個簡單的注冊表(用戶名、密碼、姓名),就可以立即使用CodeLab了。學生姓名會在學生注冊時自動加入分數冊,每個學生開始使用時可獲得10個“免費贈送”的練習。
2. 主動地學習
“學習源于實踐”是CodeLab 的座右銘。CodeLab 向學生提供完全積極有效的學習經驗,學生通過編寫代碼解決問題,是基于網絡的給予學生真實編程實踐的學習系統。
3. 即時有效、量體裁衣的反饋和評估
CodeLab自動測試和反饋評估每個學生提交的編程代碼,它可以查找出學生的編程邏輯和語法錯誤的功能是其他任何計算機編程課程的學習工具所不能企及的。輕按鼠標,學生可以在數秒內馬上看到對答題的評估,而不用等待指導老師的郵件回復或到隔壁老師辦公室去確認更正他們的答題錯誤。CodeLab 系統可以自動證明學生已編寫的正確代碼數量,完成CodeLab的所有題目,學生可以得到編寫數百行正確代碼的見證。CodeLab的評估確認是客觀的,不受人為錯誤評判的影響。
記:Codelab適合在什么情況下使用?
D:CodeLab適合新的編程語言導論課程。它可以作為教師授課和實驗室或編程項目之間的一座橋梁。學生在計算機房或編程項目中使用CodeLab,練習所學章節內容,立刻鞏固所學知識,減少對于基本編程語法運用的困惑,避免在這方面花費大量的時間。CodeLab非但沒有給學生增添作業負擔,反而減少了學生在項目上花費的時間;而教師花費在練習題目上的時間明顯減少,有了更多時間教授學生軟件設計的思路、編程組織的方法和算法。
另外,由于這是一個在線學習軟件,學生可以在有互聯網接入的任何地點任何時間使用。每一課題中的練習由簡到難,學生可以從簡單的練習開始,從中獲得自信和技能,然后逐步完成更復雜的練習,并最終在學生的課堂編程項目中得到運用。CodeLab還可以有效鞏固學生編程詞匯,幫助學生在閱讀指令的時候更加仔細并嚴格地根據提示編程。學生會很快認識到計算機編程語言是很嚴謹的,必須用一種嚴格一致/嚴謹的風格編寫程序。
記:您認為教學中各種教學資源(教師、學生、Codelab等)的關系是什么,能否用圖表示出來?
D:簡單地說,我的課程模式如圖2所示。

以教師為主導,以教材為主線,教師為學生分配任務,是在CodeLab上做練習、閱讀教材,還是聽教師授課,引領學生學習教材內容。在布魯克林學院,我的班上有超過一半的學生是新移民,他們是非英語母語者,來自亞洲、東歐和南美等國家,他們喜歡用CodeLab 幫助他們更好地消化用英語授課的講座及英語課本內容。
我的課堂教學流程如圖3所示。

我要求學生在課下閱讀教材,在CodeLab上做練習,做項目等。上課開始后進行小測驗,一般是基于CodeLab的練習,檢測學生的預習和閱讀情況,時間是2~5分鐘。在此基礎上,教師基于學生的預習進行講座授課,然后讓學生在實驗室做大型的項目,給學生實踐的機會,我應用程序實例幫助他們完成項目。最后在課上閱讀教材,回顧所學知識,引導學生對下一節的閱讀內容做一個預習,并給學生布置CodeLab上的作業,要求學生課下完成。
學生在實驗室里不能完成整個項目,但是他們可以著手準備,我幫助他們做準備工作。課堂外,學生們完成項目實習、我布置的閱讀和CodeLab練習(與閱讀內容相關的部分)。我會告訴學生閱讀的精髓,如果有一些關鍵點和難點,我會提前實踐并指出。這樣他們看到預習內容后,就會滿懷希望地閱讀內容,我再據此做課堂講座。學生閱讀,我來引導他們學習,這是一個前進式的循序漸進的流程。(未完待續)