張 玥
編者按:在2008年11月15日召開的“第四屆全國計算機教育論壇”上,一位從大洋彼岸遠道而來的特殊嘉賓為我們帶來了西方的教育教學理念,引起了普遍關注。他就是美國紐約市立大學布魯克林學院(CUNY)計算機與信息系教授David M. Arnow。David教授是計算機科學課程改革的主要倡導者,主要研究領域包括實驗性分布式計算軟件和計算機科學教育。在這次論壇上,他詳細介紹了自己開發的基于Web的交互式程序設計編程語言學習系統——CodeLab,與各位老師交流了自己的教學經驗和體會,贏得與會者的好評。本刊記者(以下簡稱記)在會議期間采訪了David教授(以下簡稱D),就計算機教育教學等內容進行了深度訪談,以資國內同行了解和借鑒。
記:CodeLab系統的反饋設計理念是什么?
D:CodeLab系統有針對用戶提出的問題而設計的反饋和建議板塊。有時學生提交的代碼總是通不過測試評估,他們很懊惱,會通過這個板塊提交意見,發泄一下,以為這樣的反饋意見反饋給了商業開發大機構,實際上他們并不清楚是直接提交給我本人了。我們開發教師會這樣親切地引導他們:“你最好是以一個禮貌的方式進行交流……”,這名學生才恍然大悟。
去年暑期,我們以2003年來學生提交的3000萬條代碼為基礎,分析他們的反饋問題及產生錯誤的原
因,充實系統反饋信息和指引,如對邏輯錯誤和編譯器錯誤信息的分析。在2006年秋季至2007年春季的時間里,反饋信息數量從600多條下降到60多條,這是因為我們引進了新模塊:“Markup-注釋”。它收集了1300萬條提交的代碼,對正確或錯誤的方案進行分析設計,增加了紅色小箭頭提示和陰影區域指引——可以稱之為“Google效應”。我想,如果CodeLab有中國用戶,我們所收集的代碼量絕不僅僅是1300萬條,而是一億三千萬條了。這個功能大大減少了老師和學生的詢問信息,效果還是很好的。
我們提供的反饋信息越好,得到用戶支持需求的郵件越少。我們積極地改進系統提示分析信息,得到更好的反饋!
記:您如何運用CodeLab成績冊來評估學生學年的分數,如何量化?
D:我的方式是:學期總成績由五部分組成。即10% CodeLab;30% 期末考試;20% 期中考試;20%課堂提問和出勤;20% 程序設計。當然,我也很重視學生的思考和表達。在20%的課堂提問和出勤分數中,如果學生每堂課出勤并得到小測驗滿分,但是從來不發言或提問,那么只能得到總分20分里的16分。
雖然CodeLab成績只占10%,但它是基礎,其他90%的成績受益于基礎知識的掌握,課堂的小測驗來自課本預習和CodeLab的習題。
在CodeLab花名冊評分記錄中,紅色為零分,綠色為滿分,黃色為半分。在規定的300道練習中,如果學生100道題準時完成提交,100 道題延遲提交,100道題未完成提交,就只能獲得150分——因為有1/3的題目遲交了。
記:學生使用CodeLab的效果如何?老師和學生們對它的評價如何?
D:根據學生使用CodeLab的反饋表明,一些學生很喜歡這個學習系統;一些根本就不喜歡,因為做練習枯燥;一些接受但不喜歡:一些學生認為這個系統很棒,比閱讀教材和聽講座的興趣要高漲得多。總之,CodeLab是一種學習工具,也是一種學習資源,大多數學生能夠意識到CodeLab對它們的學習是有幫助的,因此持接受的態度。還有老師發來不滿意的報告——說他的學生做CodeLab的興趣比聽講課和讀課本高得多了。
威斯康星大學的Michael Schultz老師說:“作為一名大學二年級編程入門課程的教師,我現在向其他所有教師和學生強烈推薦使用CodeLab。我終于找到了既可以提供編程練習又可以提供評估支持的軟件了。”
奧克拉荷馬大學的Deborah Trytten教授說:“從2003年1月至今,我一直在“計算機編程導論”課程中使用Java CodeLab,它對那些以前沒有編程經驗、總出錯的學生幫助很大。CodeLab 對學生答案的快速反饋能夠引導學生不停地嘗試尋找解決方案,而不是放棄或即使寫下錯誤答案也一無所知。與以往相比,學生在編程方面的挫折感明顯更少,也更喜歡這門課。我們從Turings Craft得到大力支持,他們對所有合理要求及大部分不合理要求都給出了即時的回復,我非常滿意,并打算在今后的編程入門課程中繼續使用它。
而學生的體驗就更多些:
Akron大學的Greg M說:“我在學期初注冊了CodeLab,以為這又是枯燥的工作,但是它卻對我在C語言編程某些概念的理解上給了很大的幫助。”
布魯克林學院Enthan A說:“使用CodeLab后,我看到了自己測試成績有了實實在在的提高。它將編程概念分解為簡單的步驟,幫助我看清這些概念是如何結合在一起的,我可以更輕松地完成作業。”
奧克拉荷馬大學的N.G.說:“我喜歡CodeLab,它讓我熟悉編程詞匯。我不僅學會了如何通過編程獲得結果,還學會了與其他專業人員溝通的必要詞匯,讓別人知道我在做什么。CodeLab還給我帶來更多的實際編程經驗,它好像家庭作業和編程項目的一個交匯點,讓我一邊熟悉詞匯、語法,一邊又在項目編程中樂此不疲。”
記:您對編程語言入門課程教學設計的未來有何展望?
D:我的班級教學已經是“課堂內外顛覆”。我為課堂教學準備了視頻,學生在課堂外就可以收看并學習;學生通過CodeLab的實踐練習鞏固他們所學到的基本知識;而在課堂上,我提供額外的講座,但大多數時候,學生將時間花在做實驗室項目上——這和25年前的教學完全相反。那時候,學生只能在課堂外做實驗項目;而在課堂內僅有講座而已,更沒有CodeLab。
記:計算機科學技術發展日新月異,您如何看待教學、研究與開發的關系?
D:總體上講,我們今天教授的理論技術知識,在十五年前大多數是不存在的。今天教授知識,是為了讓學生明天可以得到工作。我們的基礎教學不被今天的技術所左右,而仍然專注于基本原理和主要計算機技術知識的方向是正確的,無論是現在,還是未來的10年~30年。
大學的教學總是滯后于技術的發展和公司的開發速度,因此新技術何時到大學的教學課堂從來都是大學系里最大的爭論議題。通常計算機科學新技術都來源于科研成果,公司將研究成果應用于實踐,然后科研機構才用于教學——這確實是一個怪圈。因為新技術源自學術研究,但直到在商業應用領域取得了控制優勢才被學術教學所采納,教授們才決定是否用于課堂教學。例如Python是由學術研究機構開發的,直到Google 公司將其運用于搜索引擎的商業技術開發,北美多數的大學和企業才將其引入教學或培訓課程。
記:您對這次訪問中國和參加“第四屆全國計算機教育論壇”有何感想?
D:通過對中國的訪問和參加“第四屆全國計算機教育論壇”,我了解到,無論在中國還是美國,我們教師都面臨許多同樣的教學方面的問題。通過與各位中國教師的交談和討論,我很驚訝中國教育教學領域對C和VB教學的需求,而在美國,這方面的教學已不常見。現在,我打算在CodeLab上給這些語言充實更多的內容。
記:歡迎您再一次訪問中國,對未來之行,您有何希望?
D:我真的希望有機會能常來中國,一次的旅程不足以了解全面中國,了解中國的計算機教育。我想坐在中國大學的課堂里,旁聽中國的計算機課程,觀看實驗室項目,也想有更多的機會和中國的教師面談。
非常遺憾,這次來華我沒有更多的時間參觀中國美麗的歷史古跡,了解更多的中國歷史和文化。相信隨著兩國學術交流的日益加深,我會認識更多的中國學者,與他們進行更深入和有益的對話。