陶凱
(淄博職業(yè)學院,山東淄博 255314)
社會在進步,這兩年最火的詞匯無疑是“人工智能”,特別是AlphaGo大敗柯潔、李世石引起了人們對人工智能的重視。而人工智能的基礎——計算機編程也正式納入了高考,2017年浙江省正式將編程納入高考,不止浙江,教育大省北京和山東也確定要把編程基礎納入信息技術課程和高考的內(nèi)容體系。上海今年發(fā)布了《人工智能基礎》(高中版)并已在部分中學開始基于教材內(nèi)容進行授課。未來是人工智能的時代,我們的衣食住行將與人工智能息息相關,計算機語言將超越英語成為普通話以外最重要的“第二語言”。越來越多的大學開始增設人工智能相關專業(yè),計算機專業(yè)畢業(yè)生的薪資待遇,尤其是程序員的收入節(jié)節(jié)高升。
這一系列的現(xiàn)象的背后是一個關鍵的社會問題:即編程技術的需求量激增并在各個方面發(fā)揮著越來越重要的作用,但是大多數(shù)人還“沒有能力認識到,更不用說去思考或解決技術帶來的挑戰(zhàn)或可以解決的問題”。國務院于2017年發(fā)文指出,實施全民智能教育項目,在中小學階段設置人工智能相關課程,逐步推廣編程教育,鼓勵社會力量參與寓教于樂的編程教學軟件、游戲的開發(fā)和推廣,編程教育已經(jīng)提升到了國家戰(zhàn)略的角度。
然而現(xiàn)實是,現(xiàn)在的非計算機類專業(yè)的大學生們很少從事計算機編程。大多數(shù)學生認為編程是枯燥的、難以學習和掌握的。這很不幸,因為與編程相關的技能可以在非常多的專業(yè)方面發(fā)揮核心作用。“編程中固有的算法思維,對于理解信息技術系統(tǒng)如何以及為何如此工作至關重要。”此外,在編程中不斷使用抽象思維可以指導和規(guī)范一個人對問題的處理方式。從本質(zhì)上講,編程是一個非常有價值的生活技能,也是學習其他科目的基礎的一個要素。也正因為如此,我們希望能夠在非信息類專業(yè)中引入Code Combat項目,改變大學生們對編程的認識,提升他們學習編程的興趣。
CodeCombat是一款有趣的開源編程游戲,它使用代碼來操控游戲人物,讓你一邊沉浸在游戲樂趣中一邊學習編程技術(JavaScript、Python等)。從最初小白入門級的單人關卡到后來高難度的多人對戰(zhàn),各個層次的程序都可以樂在其中并從各種戰(zhàn)斗中不斷吸取編程知識,如圖1所示。
CodeCombat的創(chuàng)始人Nick Winter在開始學習編程時,也曾使用了知名的CodeCademy,但他還是覺得太乏味了然后放棄,他了解到自己的朋友們也遇到了這樣的情況。后來他想明白了背后真正的原因:人們想要有趣且高效的學習,但得到的卻是緩慢且樂趣不足的課程。因此,Nick Winter和小伙伴們一起創(chuàng)造了CodeCombat,希望能讓想學習編程的人可以真正享受這一過程,而不是將編程當作枯燥的敲代碼。

圖1 CodeCombat關卡知識深度不斷增加

圖2 CodeCombat卡通形式的畫風
CodeCombat整體的畫風是可愛卡通風格,音效精致,如圖2所示。整個游戲關卡有九百多關。Code Combat支持中文,不管是從玩游戲還是學習的角度來講,都是一個非常棒的選擇。
(1)從學生角度來看,CodeCombat的設計從第一個關卡就使用了真實可行的代碼,讓學生盡快動手寫代碼來學習程序語法和合適的結構是至關重要的。
(2)從課程內(nèi)容來看,CodeCombat提供了編程入門的所有必要知識。CodeCombat目前共有6個場景,場景中涉及的知識點由易到難,從基本的語法、參數(shù)、變量,到IF語句、函數(shù)、四則運算、輸入處理,再到循環(huán)、數(shù)組、遠程方法調(diào)用、繪畫、模塊等,涉及到編程知識點的方方面面。同時,CodeCombat支持Python、JavaScript、HTML5、Css3等多種程序語言的學習,學習內(nèi)容豐富。
(3)使用CodeCombat學習編程不需要購買任何昂貴的設備以及教材,CodeCombat本身只是一個運行在網(wǎng)絡上的程序,因此,學生們只要能夠連接網(wǎng)絡,打開瀏覽器就可以訪問CodeCombat項目開始學習。這對于在校學生的學習提供了極大的便利性。
非信息類專業(yè)一般并不會直接開設編程課程,因此我們可以把CodeCombat作為非信息類專業(yè)的一門選修課在高校中開展。
(1)學習條件及學生要求。軟件環(huán)境:Linux服務器,搭建平臺環(huán)境有Node.js 6,npm 3.10.10,Github等。
學生基本素質(zhì)要求:富有創(chuàng)意、對編程有興趣、能持之以恒的參與訓練學習。
(2)學習目標。通過CodeCombat課程學習,培養(yǎng)學生對信息多元文化的寬容和尊重。培養(yǎng)學生多角度思考問題解決問題的能力和創(chuàng)新精神;培養(yǎng)學生持之以恒不畏困難的良好品格。讓學生發(fā)現(xiàn)計算機運行的原理和規(guī)律,激發(fā)學生進一步學習的熱情。促進學生的個性特長發(fā)展,豐富學校選修課程。
(3)組織形式。CodeCombat后臺提供班級建立以及學習進度管理,學生通過教師提供的二維碼注冊,可以方便與教師溝通。教師也可以在后臺很容易的追蹤自己班級的學習進度。
(4)課時安排。學生可以在學校機房、圖書館或者宿舍等任何可以使用電腦上網(wǎng)的地方進行學習,學生的所有學習進度都可以被老師追蹤,因此CodeCombat可以作為沒有固定時間地點的課程進行開展。
(5)考核。通過考試并不是我們學習的主要目的,但是教師們?nèi)匀豢梢杂卸喾N形式的考核方式對選擇使用CodeCombat來學習的同學進行考核。比如教師們可以在管理界面根據(jù)學生們的通關數(shù)量對學生進行階段性的考核。CodeCombat還提供了一個競技場,學生們學有所成以后可在競技場相互切磋,既可以展現(xiàn)自己的學習成果,又可以激勵學生們不斷學習進步,老師們也可以利用競技場的分數(shù)作為考核的參考依據(jù)。
CodeCombat本身也是一個游戲,游戲是鼓勵交流、發(fā)現(xiàn)、試錯的媒介。好的游戲能夠讓玩家學習到技能,正如學生在學習過程中所做的那樣。基于網(wǎng)絡的CodeCombat也正如此,它可以提供在線交流的平臺,讓所有使用者互相交流學習經(jīng)驗促進大家共同進步。和其他游戲一樣,CodeCombat為通關和代碼簡潔效率高的人提供各種獎勵獎勵,這種獎勵能為學習提供動力并富有激勵性,而不單調(diào)乏味。
CodeCombat是一個開源的社區(qū)項目,上百名程序員創(chuàng)建了各種關卡,給CodeCombat的源代碼添磚加瓦,添加新功能、修復Bug、測試。CodeCombat在一直不斷的改進,支持更多的語言,增加更多的知識點,讓學生們學到更多更新的內(nèi)容。
這基于游戲的學習方式,把它與傳統(tǒng)教學方式比較,區(qū)別毋庸置疑:類似游戲的CodeCombat能幫助學生記住知識,使學生們更加能夠集中精力,以及取得更高成就。CodeCombat同時提供實時反饋,使得學生調(diào)整他們的代碼語句解決方法,并且從整體理解概念,而不局限于“正確”或者“錯誤”的答案。把CodeCombat充分開發(fā)和利用到教學中來,也迎合了國家推進混合式教學模式改革,同時可以推動學生的自主學習,提高學生的參與度和學習興趣。