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