陶凱
(淄博職業(yè)學(xué)院,山東淄博 255314)
社會(huì)在進(jìn)步,這兩年最火的詞匯無疑是“人工智能”,特別是AlphaGo大敗柯潔、李世石引起了人們對人工智能的重視。而人工智能的基礎(chǔ)——計(jì)算機(jī)編程也正式納入了高考,2017年浙江省正式將編程納入高考,不止浙江,教育大省北京和山東也確定要把編程基礎(chǔ)納入信息技術(shù)課程和高考的內(nèi)容體系。上海今年發(fā)布了《人工智能基礎(chǔ)》(高中版)并已在部分中學(xué)開始基于教材內(nèi)容進(jìn)行授課。未來是人工智能的時(shí)代,我們的衣食住行將與人工智能息息相關(guān),計(jì)算機(jī)語言將超越英語成為普通話以外最重要的“第二語言”。越來越多的大學(xué)開始增設(shè)人工智能相關(guān)專業(yè),計(jì)算機(jī)專業(yè)畢業(yè)生的薪資待遇,尤其是程序員的收入節(jié)節(jié)高升。
這一系列的現(xiàn)象的背后是一個(gè)關(guān)鍵的社會(huì)問題:即編程技術(shù)的需求量激增并在各個(gè)方面發(fā)揮著越來越重要的作用,但是大多數(shù)人還“沒有能力認(rèn)識(shí)到,更不用說去思考或解決技術(shù)帶來的挑戰(zhàn)或可以解決的問題”。國務(wù)院于2017年發(fā)文指出,實(shí)施全民智能教育項(xiàng)目,在中小學(xué)階段設(shè)置人工智能相關(guān)課程,逐步推廣編程教育,鼓勵(lì)社會(huì)力量參與寓教于樂的編程教學(xué)軟件、游戲的開發(fā)和推廣,編程教育已經(jīng)提升到了國家戰(zhàn)略的角度。
然而現(xiàn)實(shí)是,現(xiàn)在的非計(jì)算機(jī)類專業(yè)的大學(xué)生們很少從事計(jì)算機(jī)編程。大多數(shù)學(xué)生認(rèn)為編程是枯燥的、難以學(xué)習(xí)和掌握的。這很不幸,因?yàn)榕c編程相關(guān)的技能可以在非常多的專業(yè)方面發(fā)揮核心作用?!熬幊讨泄逃械乃惴ㄋ季S,對于理解信息技術(shù)系統(tǒng)如何以及為何如此工作至關(guān)重要?!贝送?,在編程中不斷使用抽象思維可以指導(dǎo)和規(guī)范一個(gè)人對問題的處理方式。從本質(zhì)上講,編程是一個(gè)非常有價(jià)值的生活技能,也是學(xué)習(xí)其他科目的基礎(chǔ)的一個(gè)要素。也正因?yàn)槿绱?,我們希望能夠在非信息類專業(yè)中引入Code Combat項(xiàng)目,改變大學(xué)生們對編程的認(rèn)識(shí),提升他們學(xué)習(xí)編程的興趣。
CodeCombat是一款有趣的開源編程游戲,它使用代碼來操控游戲人物,讓你一邊沉浸在游戲樂趣中一邊學(xué)習(xí)編程技術(shù)(JavaScript、Python等)。從最初小白入門級(jí)的單人關(guān)卡到后來高難度的多人對戰(zhàn),各個(gè)層次的程序都可以樂在其中并從各種戰(zhàn)斗中不斷吸取編程知識(shí),如圖1所示。
CodeCombat的創(chuàng)始人Nick Winter在開始學(xué)習(xí)編程時(shí),也曾使用了知名的CodeCademy,但他還是覺得太乏味了然后放棄,他了解到自己的朋友們也遇到了這樣的情況。后來他想明白了背后真正的原因:人們想要有趣且高效的學(xué)習(xí),但得到的卻是緩慢且樂趣不足的課程。因此,Nick Winter和小伙伴們一起創(chuàng)造了CodeCombat,希望能讓想學(xué)習(xí)編程的人可以真正享受這一過程,而不是將編程當(dāng)作枯燥的敲代碼。
圖1 CodeCombat關(guān)卡知識(shí)深度不斷增加
圖2 CodeCombat卡通形式的畫風(fēng)
CodeCombat整體的畫風(fēng)是可愛卡通風(fēng)格,音效精致,如圖2所示。整個(gè)游戲關(guān)卡有九百多關(guān)。Code Combat支持中文,不管是從玩游戲還是學(xué)習(xí)的角度來講,都是一個(gè)非常棒的選擇。
(1)從學(xué)生角度來看,CodeCombat的設(shè)計(jì)從第一個(gè)關(guān)卡就使用了真實(shí)可行的代碼,讓學(xué)生盡快動(dòng)手寫代碼來學(xué)習(xí)程序語法和合適的結(jié)構(gòu)是至關(guān)重要的。
(2)從課程內(nèi)容來看,CodeCombat提供了編程入門的所有必要知識(shí)。CodeCombat目前共有6個(gè)場景,場景中涉及的知識(shí)點(diǎn)由易到難,從基本的語法、參數(shù)、變量,到IF語句、函數(shù)、四則運(yùn)算、輸入處理,再到循環(huán)、數(shù)組、遠(yuǎn)程方法調(diào)用、繪畫、模塊等,涉及到編程知識(shí)點(diǎn)的方方面面。同時(shí),CodeCombat支持Python、JavaScript、HTML5、Css3等多種程序語言的學(xué)習(xí),學(xué)習(xí)內(nèi)容豐富。
(3)使用CodeCombat學(xué)習(xí)編程不需要購買任何昂貴的設(shè)備以及教材,CodeCombat本身只是一個(gè)運(yùn)行在網(wǎng)絡(luò)上的程序,因此,學(xué)生們只要能夠連接網(wǎng)絡(luò),打開瀏覽器就可以訪問CodeCombat項(xiàng)目開始學(xué)習(xí)。這對于在校學(xué)生的學(xué)習(xí)提供了極大的便利性。
非信息類專業(yè)一般并不會(huì)直接開設(shè)編程課程,因此我們可以把CodeCombat作為非信息類專業(yè)的一門選修課在高校中開展。
(1)學(xué)習(xí)條件及學(xué)生要求。軟件環(huán)境:Linux服務(wù)器,搭建平臺(tái)環(huán)境有Node.js 6,npm 3.10.10,Github等。
學(xué)生基本素質(zhì)要求:富有創(chuàng)意、對編程有興趣、能持之以恒的參與訓(xùn)練學(xué)習(xí)。
(2)學(xué)習(xí)目標(biāo)。通過CodeCombat課程學(xué)習(xí),培養(yǎng)學(xué)生對信息多元文化的寬容和尊重。培養(yǎng)學(xué)生多角度思考問題解決問題的能力和創(chuàng)新精神;培養(yǎng)學(xué)生持之以恒不畏困難的良好品格。讓學(xué)生發(fā)現(xiàn)計(jì)算機(jī)運(yùn)行的原理和規(guī)律,激發(fā)學(xué)生進(jìn)一步學(xué)習(xí)的熱情。促進(jìn)學(xué)生的個(gè)性特長發(fā)展,豐富學(xué)校選修課程。
(3)組織形式。CodeCombat后臺(tái)提供班級(jí)建立以及學(xué)習(xí)進(jìn)度管理,學(xué)生通過教師提供的二維碼注冊,可以方便與教師溝通。教師也可以在后臺(tái)很容易的追蹤自己班級(jí)的學(xué)習(xí)進(jìn)度。
(4)課時(shí)安排。學(xué)生可以在學(xué)校機(jī)房、圖書館或者宿舍等任何可以使用電腦上網(wǎng)的地方進(jìn)行學(xué)習(xí),學(xué)生的所有學(xué)習(xí)進(jìn)度都可以被老師追蹤,因此CodeCombat可以作為沒有固定時(shí)間地點(diǎn)的課程進(jìn)行開展。
(5)考核。通過考試并不是我們學(xué)習(xí)的主要目的,但是教師們?nèi)匀豢梢杂卸喾N形式的考核方式對選擇使用CodeCombat來學(xué)習(xí)的同學(xué)進(jìn)行考核。比如教師們可以在管理界面根據(jù)學(xué)生們的通關(guān)數(shù)量對學(xué)生進(jìn)行階段性的考核。CodeCombat還提供了一個(gè)競技場,學(xué)生們學(xué)有所成以后可在競技場相互切磋,既可以展現(xiàn)自己的學(xué)習(xí)成果,又可以激勵(lì)學(xué)生們不斷學(xué)習(xí)進(jìn)步,老師們也可以利用競技場的分?jǐn)?shù)作為考核的參考依據(jù)。
CodeCombat本身也是一個(gè)游戲,游戲是鼓勵(lì)交流、發(fā)現(xiàn)、試錯(cuò)的媒介。好的游戲能夠讓玩家學(xué)習(xí)到技能,正如學(xué)生在學(xué)習(xí)過程中所做的那樣?;诰W(wǎng)絡(luò)的CodeCombat也正如此,它可以提供在線交流的平臺(tái),讓所有使用者互相交流學(xué)習(xí)經(jīng)驗(yàn)促進(jìn)大家共同進(jìn)步。和其他游戲一樣,CodeCombat為通關(guān)和代碼簡潔效率高的人提供各種獎(jiǎng)勵(lì)獎(jiǎng)勵(lì),這種獎(jiǎng)勵(lì)能為學(xué)習(xí)提供動(dòng)力并富有激勵(lì)性,而不單調(diào)乏味。
CodeCombat是一個(gè)開源的社區(qū)項(xiàng)目,上百名程序員創(chuàng)建了各種關(guān)卡,給CodeCombat的源代碼添磚加瓦,添加新功能、修復(fù)Bug、測試。CodeCombat在一直不斷的改進(jìn),支持更多的語言,增加更多的知識(shí)點(diǎn),讓學(xué)生們學(xué)到更多更新的內(nèi)容。
這基于游戲的學(xué)習(xí)方式,把它與傳統(tǒng)教學(xué)方式比較,區(qū)別毋庸置疑:類似游戲的CodeCombat能幫助學(xué)生記住知識(shí),使學(xué)生們更加能夠集中精力,以及取得更高成就。CodeCombat同時(shí)提供實(shí)時(shí)反饋,使得學(xué)生調(diào)整他們的代碼語句解決方法,并且從整體理解概念,而不局限于“正確”或者“錯(cuò)誤”的答案。把CodeCombat充分開發(fā)和利用到教學(xué)中來,也迎合了國家推進(jìn)混合式教學(xué)模式改革,同時(shí)可以推動(dòng)學(xué)生的自主學(xué)習(xí),提高學(xué)生的參與度和學(xué)習(xí)興趣。