張 玥
編者按:在2008年11月15日召開的“第四屆全國計算機教育論壇”上,一位從大洋彼岸遠道而來的特殊嘉賓為我們帶來了西方的教育教學(xué)理念,引起了普遍關(guān)注。他就是美國紐約市立大學(xué)布魯克林學(xué)院(CUNY)計算機與信息系教授David M. Arnow。David教授是計算機科學(xué)課程改革的主要倡導(dǎo)者,主要研究領(lǐng)域包括實驗性分布式計算軟件和計算機科學(xué)教育。在這次論壇上,他詳細介紹了自己開發(fā)的基于Web的交互式程序設(shè)計編程語言學(xué)習(xí)系統(tǒng)——CodeLab,與各位老師交流了自己的教學(xué)經(jīng)驗和體會,贏得與會者的好評。本刊記者(以下簡稱記)在會議期間采訪了David教授(以下簡稱D),就計算機教育教學(xué)等內(nèi)容進行了深度訪談,以資國內(nèi)同行了解和借鑒。
記:您能簡單介紹一下CodeLab教學(xué)系統(tǒng)嗎?
D:CodeLab是基于網(wǎng)絡(luò)平臺使用的軟件編程教學(xué)和學(xué)習(xí)工具。它的核心是一組設(shè)計獨特、完全互動、簡單易操作、超過200套的編程練習(xí)庫,包含編程教學(xué)提綱。CodeLab提供練習(xí)的自動校驗功能,給予學(xué)生及時的知識鞏固或診斷性的回饋意見。
那些采用CodeLab給學(xué)生布置作業(yè)的教師發(fā)現(xiàn)學(xué)生在作業(yè)中犯的錯誤減少了,在考試和項目中的成績提高了,編程的自信心增強了。此外,CodeLab還擁有教師管理工具,讓教師輕而易舉地將練習(xí)融入教學(xué)中。
通過網(wǎng)絡(luò)平臺界面,教師可以組織教學(xué)提綱,精選、制定和定制練習(xí)題,還可以指定作業(yè)提交到期日。最
后,系統(tǒng)會跟蹤所有學(xué)生的作業(yè),而教師可以通過基于網(wǎng)絡(luò)或基于電子郵件的系統(tǒng)輕松掌控學(xué)生學(xué)習(xí)能力表現(xiàn)的所有記錄,這個記錄可以和現(xiàn)有的評分體系結(jié)合到一起。
它的使用流程圖如圖1所示:
圖1 CodeLab使用流程圖
記:CodeLab系統(tǒng)是如何工作的?
D:CodeLab系統(tǒng)的工作狀態(tài)可以從3個方面加以闡釋:
1. 對教師和學(xué)生
教師可以輕而易舉地將CodeLab結(jié)合到自己目前的教案中:給開發(fā)人員發(fā)一封電子郵件,教師可在24小時內(nèi)獲得賬戶;作為課程管理員,拖拽式地為學(xué)生選擇練習(xí)題,并在日歷上點擊設(shè)置到期日。學(xué)生注冊CodeLab時,系統(tǒng)會自動為教師生成學(xué)生分數(shù)冊,它替教師記錄學(xué)生們的所有練習(xí)活動。
學(xué)生到CodeLab網(wǎng)站填寫一個簡單的注冊表(用戶名、密碼、姓名),就可以立即使用CodeLab了。學(xué)生姓名會在學(xué)生注冊時自動加入分數(shù)冊,每個學(xué)生開始使用時可獲得10個“免費贈送”的練習(xí)。
2. 主動地學(xué)習(xí)
“學(xué)習(xí)源于實踐”是CodeLab 的座右銘。CodeLab 向?qū)W生提供完全積極有效的學(xué)習(xí)經(jīng)驗,學(xué)生通過編寫代碼解決問題,是基于網(wǎng)絡(luò)的給予學(xué)生真實編程實踐的學(xué)習(xí)系統(tǒng)。
3. 即時有效、量體裁衣的反饋和評估
CodeLab自動測試和反饋評估每個學(xué)生提交的編程代碼,它可以查找出學(xué)生的編程邏輯和語法錯誤的功能是其他任何計算機編程課程的學(xué)習(xí)工具所不能企及的。輕按鼠標,學(xué)生可以在數(shù)秒內(nèi)馬上看到對答題的評估,而不用等待指導(dǎo)老師的郵件回復(fù)或到隔壁老師辦公室去確認更正他們的答題錯誤。CodeLab 系統(tǒng)可以自動證明學(xué)生已編寫的正確代碼數(shù)量,完成CodeLab的所有題目,學(xué)生可以得到編寫數(shù)百行正確代碼的見證。CodeLab的評估確認是客觀的,不受人為錯誤評判的影響。
記:Codelab適合在什么情況下使用?
D:CodeLab適合新的編程語言導(dǎo)論課程。它可以作為教師授課和實驗室或編程項目之間的一座橋梁。學(xué)生在計算機房或編程項目中使用CodeLab,練習(xí)所學(xué)章節(jié)內(nèi)容,立刻鞏固所學(xué)知識,減少對于基本編程語法運用的困惑,避免在這方面花費大量的時間。CodeLab非但沒有給學(xué)生增添作業(yè)負擔(dān),反而減少了學(xué)生在項目上花費的時間;而教師花費在練習(xí)題目上的時間明顯減少,有了更多時間教授學(xué)生軟件設(shè)計的思路、編程組織的方法和算法。
另外,由于這是一個在線學(xué)習(xí)軟件,學(xué)生可以在有互聯(lián)網(wǎng)接入的任何地點任何時間使用。每一課題中的練習(xí)由簡到難,學(xué)生可以從簡單的練習(xí)開始,從中獲得自信和技能,然后逐步完成更復(fù)雜的練習(xí),并最終在學(xué)生的課堂編程項目中得到運用。CodeLab還可以有效鞏固學(xué)生編程詞匯,幫助學(xué)生在閱讀指令的時候更加仔細并嚴格地根據(jù)提示編程。學(xué)生會很快認識到計算機編程語言是很嚴謹?shù)模仨氂靡环N嚴格一致/嚴謹?shù)娘L(fēng)格編寫程序。
記:您認為教學(xué)中各種教學(xué)資源(教師、學(xué)生、Codelab等)的關(guān)系是什么,能否用圖表示出來?
D:簡單地說,我的課程模式如圖2所示。
以教師為主導(dǎo),以教材為主線,教師為學(xué)生分配任務(wù),是在CodeLab上做練習(xí)、閱讀教材,還是聽教師授課,引領(lǐng)學(xué)生學(xué)習(xí)教材內(nèi)容。在布魯克林學(xué)院,我的班上有超過一半的學(xué)生是新移民,他們是非英語母語者,來自亞洲、東歐和南美等國家,他們喜歡用CodeLab 幫助他們更好地消化用英語授課的講座及英語課本內(nèi)容。
我的課堂教學(xué)流程如圖3所示。
我要求學(xué)生在課下閱讀教材,在CodeLab上做練習(xí),做項目等。上課開始后進行小測驗,一般是基于CodeLab的練習(xí),檢測學(xué)生的預(yù)習(xí)和閱讀情況,時間是2~5分鐘。在此基礎(chǔ)上,教師基于學(xué)生的預(yù)習(xí)進行講座授課,然后讓學(xué)生在實驗室做大型的項目,給學(xué)生實踐的機會,我應(yīng)用程序?qū)嵗龓椭麄兺瓿身椖俊W詈笤谡n上閱讀教材,回顧所學(xué)知識,引導(dǎo)學(xué)生對下一節(jié)的閱讀內(nèi)容做一個預(yù)習(xí),并給學(xué)生布置CodeLab上的作業(yè),要求學(xué)生課下完成。
學(xué)生在實驗室里不能完成整個項目,但是他們可以著手準備,我?guī)椭麄冏鰷蕚涔ぷ鳌Un堂外,學(xué)生們完成項目實習(xí)、我布置的閱讀和CodeLab練習(xí)(與閱讀內(nèi)容相關(guān)的部分)。我會告訴學(xué)生閱讀的精髓,如果有一些關(guān)鍵點和難點,我會提前實踐并指出。這樣他們看到預(yù)習(xí)內(nèi)容后,就會滿懷希望地閱讀內(nèi)容,我再據(jù)此做課堂講座。學(xué)生閱讀,我來引導(dǎo)他們學(xué)習(xí),這是一個前進式的循序漸進的流程。(未完待續(xù))