張思 向華
摘 ?要: 游戲作為一種功能強(qiáng)大的教學(xué)工具,在軍事訓(xùn)練以及企業(yè)培訓(xùn)方面都已經(jīng)取得了顯著成效。針對(duì)Java編程課程教學(xué)中遇到的一些實(shí)際問(wèn)題,探討了游戲驅(qū)動(dòng)的教學(xué)模式,對(duì)于不同專(zhuān)業(yè),不同基礎(chǔ)的學(xué)生使用不同的游戲工具激發(fā)其自主學(xué)習(xí)的興趣,最終實(shí)現(xiàn)了學(xué)生計(jì)算思維能力的培養(yǎng)和編程技巧的掌握。
關(guān)鍵詞: Java編程; 游戲驅(qū)動(dòng)模式; 自主學(xué)習(xí); 計(jì)算思維
中圖分類(lèi)號(hào):G642 ? ? ? ? ?文獻(xiàn)標(biāo)志碼:A ? ? ?文章編號(hào):1006-8228(2015)01-72-03
Research on teaching reform of Java program design course based on game-driven mode
Zhang Si, Xiang Hua
(Department of Mathematics and Computer Science, Jianghan University, Wuhan, Hubei 430056, China)
Abstract: Games, as powerful teaching tools, have achieved remark able result sinmilitary training and corporate training. Aiming at some practical problems in Java programming course teaching, how to inspire students who has different majors and basic knowledgeby using the game-driven teaching mode are discussed to teach students to understand computational thinking and master the programming skills.
Key words: Java programming; game-driven mode; self learning; computational thinking
0 引言
世界上第一個(gè)計(jì)算機(jī)游戲是由英國(guó)劍橋大學(xué)A.S. Douglas博士于1952年開(kāi)發(fā)的,他的研究方向是人機(jī)交互。計(jì)算機(jī)游戲隨后發(fā)展涉及計(jì)算機(jī)科學(xué)研究的許多領(lǐng)域。例如:模擬仿真,人工智能,圖形圖像,嵌入式開(kāi)發(fā),人機(jī)交互,網(wǎng)絡(luò)通信以及云計(jì)算等。杜克大學(xué)人體仿真和病人安全中心主任 Jeffrey Taekman指出:“游戲和虛擬環(huán)境是教育的未來(lái)?!苯?jīng)??梢钥吹疥P(guān)于學(xué)生廢寢忘食地沉迷于游戲世界的報(bào)道。學(xué)生對(duì)于游戲是沒(méi)有免疫力的,古語(yǔ)有云:“水能載舟,亦能覆舟?!比绻處熢诮虒W(xué)中能利用游戲的這種吸引力,現(xiàn)有的很多程序設(shè)計(jì)類(lèi)課程課堂教學(xué)中存在的問(wèn)題將迎刃而解。
1 現(xiàn)狀及問(wèn)題
1.1 學(xué)生水平參差不齊,學(xué)習(xí)興趣不高
Java程序設(shè)計(jì)課程在大學(xué)里開(kāi)設(shè)一般作為選修課。課程面向不同專(zhuān)業(yè)的學(xué)生,這些學(xué)生的計(jì)算機(jī)基礎(chǔ)不同,數(shù)學(xué)底子,抽象思維以及邏輯分析能力也各不相同,關(guān)鍵的是學(xué)生的學(xué)習(xí)動(dòng)機(jī)也各不相同。對(duì)于以后不從事程序設(shè)計(jì)相關(guān)工作的學(xué)生,其學(xué)習(xí)興趣自然不會(huì)高。例如非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生一般都是以通過(guò)等級(jí)考試,拿學(xué)分為目的。以通過(guò)考試為目標(biāo)的學(xué)生,機(jī)械式地學(xué)習(xí)程序語(yǔ)法,當(dāng)然會(huì)覺(jué)得課程教學(xué)內(nèi)容枯燥。有相當(dāng)一部分學(xué)生認(rèn)為大學(xué)專(zhuān)業(yè)課是重點(diǎn),程序設(shè)計(jì)課與專(zhuān)業(yè)不相關(guān),學(xué)不學(xué)都可以。國(guó)家教育部對(duì)高等學(xué)校非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生的培養(yǎng)目標(biāo)是有程序閱讀基礎(chǔ),有理解程序的能力,完成相關(guān)課程后學(xué)生應(yīng)該能夠?qū)⒊绦蛟O(shè)計(jì)方法應(yīng)用到自己相關(guān)的領(lǐng)域中去。
1.2 學(xué)生多,教師少,互動(dòng)效果差
Java程序設(shè)計(jì)課程,在大學(xué)里一般采用大班授課形式,而從事非計(jì)算機(jī)專(zhuān)業(yè)公共課教學(xué)的教師人數(shù)很少。以筆者所在學(xué)校(江漢大學(xué))為例,選修課人數(shù)一般在40人至80人之間,人數(shù)多的班達(dá)到110人以上,而負(fù)責(zé)公共課教學(xué)任務(wù)的計(jì)算中心教師只有15人。課程教學(xué)一般采取多媒體上機(jī)教學(xué)。教師通過(guò)教學(xué)平臺(tái)軟件控制學(xué)生機(jī),演示教學(xué)內(nèi)容;學(xué)生通過(guò)提問(wèn)的方式與教師交流互動(dòng)。實(shí)驗(yàn)教學(xué)一般是學(xué)生在機(jī)房獨(dú)立完成實(shí)驗(yàn)計(jì)劃上統(tǒng)一的項(xiàng)目方案,實(shí)驗(yàn)課沒(méi)有實(shí)驗(yàn)員,只有一名教師。對(duì)于這么懸殊的師生比例,很難做到因材施教。
采用傳統(tǒng)課程講授與實(shí)驗(yàn)上機(jī)輔導(dǎo)相結(jié)合的方式,一個(gè)班的學(xué)生多時(shí),授課教師無(wú)法保證每個(gè)學(xué)生都能及時(shí)消化課堂上的知識(shí)。有些比較內(nèi)向的學(xué)生即使不懂也不好意思向教師提問(wèn),長(zhǎng)期積累,這些學(xué)生會(huì)越掉越遠(yuǎn),出現(xiàn)厭學(xué)情緒。上課時(shí)間學(xué)生心不在焉,看手機(jī),微信聊天,玩掃雷,玩紙牌游戲等情況屢見(jiàn)不鮮。
1.3 教學(xué)內(nèi)容多實(shí)驗(yàn)課時(shí)少,與實(shí)際應(yīng)用脫節(jié)
Java程序設(shè)計(jì)課程基礎(chǔ)內(nèi)容是學(xué)習(xí)簡(jiǎn)單數(shù)學(xué)算法,數(shù)據(jù)類(lèi)型,程序結(jié)構(gòu),函數(shù)方法調(diào)用,輸入輸出處理等;高級(jí)內(nèi)容涵蓋面向?qū)ο笤O(shè)計(jì),GUI界面設(shè)計(jì),網(wǎng)絡(luò)功能開(kāi)發(fā),多線程等內(nèi)容。以江漢大學(xué)為例:Java程序設(shè)計(jì)課程只有48個(gè)學(xué)時(shí),其中實(shí)驗(yàn)為16個(gè)學(xué)時(shí)。教師在規(guī)定學(xué)時(shí)內(nèi)要讓學(xué)生掌握以上的全部知識(shí)點(diǎn),每節(jié)課的信息量很大。教師上課時(shí)只能以講授理論知識(shí)為主而無(wú)暇顧及具體實(shí)踐。除計(jì)算機(jī)專(zhuān)業(yè)學(xué)生外,大多數(shù)學(xué)生都不知道學(xué)完以后能做什么,很迷茫,找不到方向。教師單純講這些課程內(nèi)容難免會(huì)讓學(xué)生覺(jué)得枯燥無(wú)味,同時(shí)學(xué)生也只能管中窺豹,無(wú)法感受程序設(shè)計(jì)開(kāi)發(fā)的整體過(guò)程。學(xué)生所學(xué)理論知識(shí)無(wú)法貫穿于實(shí)踐,更加無(wú)法在實(shí)際中應(yīng)用。
如果說(shuō)算法設(shè)計(jì)的是計(jì)算機(jī)科學(xué)的內(nèi)家功夫,那么程序設(shè)計(jì)語(yǔ)言就是外家功夫。程序設(shè)計(jì)這門(mén)外家功夫講究的是無(wú)招勝有招,而填鴨式的學(xué)習(xí)語(yǔ)法,無(wú)法在真實(shí)項(xiàng)目中做到見(jiàn)招拆招。只有學(xué)生具備了計(jì)算思維[1],那么無(wú)論使用何種編程語(yǔ)言,都將輕松入門(mén)。
2 游戲教學(xué)法
游戲教學(xué)法意味著打破傳統(tǒng)按章節(jié)知識(shí)點(diǎn)授課的方式,從實(shí)際游戲項(xiàng)目出發(fā),在游戲設(shè)計(jì)開(kāi)發(fā)的過(guò)程中,讓學(xué)生從親身經(jīng)歷的案例中分析原理,從實(shí)際現(xiàn)象中看出本質(zhì),最后將自己抽象領(lǐng)悟出來(lái)的概念與通書(shū)本上的理論知識(shí)相對(duì)應(yīng)。圖1是游戲教學(xué)模式示意圖。
[綜合運(yùn)用][基礎(chǔ)功能][創(chuàng)意功能][理論][實(shí)踐] [課程
知識(shí)點(diǎn)] [專(zhuān)業(yè)][生活]
圖1 ?游戲教學(xué)模式
通過(guò)游戲驅(qū)動(dòng)學(xué)習(xí)[2],有很多優(yōu)點(diǎn)。首先,游戲很容易抓住學(xué)生的注意力,引起學(xué)生的興趣,激發(fā)學(xué)生的學(xué)習(xí)動(dòng)機(jī)。其次,游戲世界里GameOver并不代表要受到懲罰,學(xué)生可以StartOver,把失敗當(dāng)成一次學(xué)習(xí)的機(jī)會(huì)。最后,游戲讓學(xué)習(xí)者自己發(fā)現(xiàn)探索規(guī)律,而不是有老師闡述告知結(jié)果。
對(duì)于非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生,通過(guò)學(xué)習(xí)程序設(shè)計(jì)課程,能夠掌握按照計(jì)算機(jī)方式分析和解決問(wèn)題的能力,這是基本要求,而學(xué)會(huì)理性的、合乎邏輯的處事方式才是最終理想效果。游戲教學(xué)法不僅讓學(xué)生學(xué)到書(shū)本上有的知識(shí),還可以從自己的專(zhuān)業(yè)出發(fā),結(jié)合實(shí)際生活中的一些奇思妙想,在原有經(jīng)典游戲的基礎(chǔ)上開(kāi)發(fā)出一些有創(chuàng)意的功能。
3 實(shí)施方法
3.1 課程組織
在傳統(tǒng)的教室上課模式基礎(chǔ)上改進(jìn)為“大學(xué)計(jì)算機(jī)公共課全機(jī)房教學(xué)模式[3]”。教學(xué)中,把授課同上機(jī)相結(jié)合,統(tǒng)一機(jī)房教學(xué),通過(guò)經(jīng)典游戲案例教學(xué)方式,精講多練,將學(xué)生吸引到教學(xué)活動(dòng)中來(lái),使學(xué)生成為課堂教學(xué)主體。在多媒體機(jī)房,一人一機(jī),即講即練。
3.2 教學(xué)安排
從傳統(tǒng)的按知識(shí)結(jié)構(gòu)體系的教學(xué)模式轉(zhuǎn)變成以游戲項(xiàng)目為中心的教學(xué)模式是切實(shí)可行的教學(xué)方案[4]。在課程教學(xué)實(shí)踐進(jìn)程中,以游戲案例為導(dǎo)向,以教師的演示和講解為輔助,學(xué)生為主體合作、討論,教師對(duì)課程教學(xué)內(nèi)容進(jìn)行組織優(yōu)化,構(gòu)建培養(yǎng)以自主學(xué)習(xí)[5]為核心的課程知識(shí)體系,選擇典型的游戲案例作為教學(xué)內(nèi)容,形成切實(shí)可行的游戲開(kāi)發(fā)的教學(xué)方案。例如:Java程序設(shè)計(jì)課程重點(diǎn)難點(diǎn)一般包括:常用系統(tǒng)類(lèi)的使用,數(shù)組的運(yùn)用,OOP設(shè)計(jì)及實(shí)現(xiàn),Java多線程,Java圖形用戶界面設(shè)計(jì)等。以下用一個(gè)游戲?yàn)槔U述如何將游戲從小做大,將知識(shí)點(diǎn)隱形地傳達(dá)給學(xué)生。
整個(gè)游戲項(xiàng)目開(kāi)發(fā)周期中有三個(gè)關(guān)鍵版本:首先是CLI文字顯示游戲版本,其次是GUI界面顯示游戲版本,最后是基于TCP/IP協(xié)議的網(wǎng)絡(luò)游戲版本。教師可以根據(jù)學(xué)生掌握情況調(diào)節(jié)項(xiàng)目開(kāi)發(fā)難度。圖2是整個(gè)游戲的UML設(shè)計(jì)圖。
圖2 ?游戲設(shè)計(jì)UML圖
在第一個(gè)版本中,主要是對(duì)學(xué)生面向?qū)ο缶幊碳寄艿腻憻?。知識(shí)點(diǎn)涵蓋Java泛型數(shù)據(jù)類(lèi)型,函數(shù)方法的使用,類(lèi)的定義,對(duì)數(shù)據(jù)的抽象以及封裝,對(duì)象的使用,一維和二維數(shù)組的使用,文件數(shù)據(jù)讀取生成對(duì)象,對(duì)象序列化輸出以保存游戲狀態(tài),游戲事件處理機(jī)制,使用繼承和多態(tài)機(jī)制實(shí)現(xiàn)地形,以及卡牌的多樣性。
圖3 ?游戲GUI界面截圖
第二個(gè)版本是讓學(xué)生練習(xí)如何使用Java自帶的Swing,以及AWT庫(kù)設(shè)計(jì)和實(shí)現(xiàn)GUI界面。主要工作是設(shè)計(jì)并實(shí)現(xiàn)組成用戶界面的各個(gè)組件,通過(guò)布局管理器合理排布管理它們?cè)谌萜髦械奈恢?。針?duì)各個(gè)組件產(chǎn)生的事件編程,處理并響應(yīng)不同的事件。通過(guò)使用雙緩沖原理,實(shí)現(xiàn)游戲動(dòng)畫(huà)的流程效果。圖3為演示游戲的GUI界面截圖。
第三個(gè)版本是在前面單機(jī)游戲基礎(chǔ)上考察學(xué)生對(duì)于網(wǎng)絡(luò)基礎(chǔ)知識(shí)的理解和掌握情況。其中涉及網(wǎng)絡(luò)應(yīng)用的C/S結(jié)構(gòu),IP地址和端口的概念理解,TCP協(xié)議的使用和Java編程實(shí)現(xiàn)方式。
3.3 實(shí)驗(yàn)教學(xué)
游戲有不同的類(lèi)型題材,學(xué)生也有不同的專(zhuān)業(yè)背景。對(duì)于非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生而言,程序設(shè)計(jì)是一個(gè)全新的領(lǐng)域,計(jì)算思維是一種新的思維方式。當(dāng)人初次接觸一個(gè)新事物時(shí),抵觸和恐懼往往大于好奇和興奮。
對(duì)非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生,需要采用投其所好的教學(xué)策略。首先從他們熟悉的方向著手,再慢慢地使其解除抵觸心理,最后引導(dǎo)其學(xué)習(xí)并掌握新知識(shí)。表1中列舉了一些案例。
表1 ?學(xué)生專(zhuān)業(yè)與游戲類(lèi)型對(duì)應(yīng)表
[學(xué)生專(zhuān)業(yè)\&游戲類(lèi)型\&例子\&文史專(zhuān)業(yè)\&文字類(lèi)游戲\&“王”字加一筆,變成哪些字\&藝術(shù)專(zhuān)業(yè)\&圖形或音樂(lè)類(lèi)游戲\&“你畫(huà)我猜”,“聽(tīng)曲識(shí)歌”\&外語(yǔ)專(zhuān)業(yè)\&單詞類(lèi)游戲\&“Crossword” 線索填單詞\&理工專(zhuān)業(yè)\&復(fù)寫(xiě)經(jīng)典類(lèi)型\&“俄羅斯方塊”,“掃雷”\&]
學(xué)生能力有差異,為了避免一刀切的現(xiàn)象,在實(shí)施教學(xué)方案時(shí),教師可以根據(jù)學(xué)生情況調(diào)整難度系數(shù)。根據(jù)學(xué)生能力的不同,將游戲劃分成不同模塊分步完成。
對(duì)于基礎(chǔ)好的學(xué)生,可以直接提出需求,具體實(shí)現(xiàn)上留空間讓其創(chuàng)造發(fā)揮。下面以俄羅斯方塊游戲?yàn)槔簭?fù)刻經(jīng)典游戲-俄羅斯方塊,要求使用面向?qū)ο蟪绦蛟O(shè)計(jì)思想,至少用三個(gè)以上的類(lèi)實(shí)現(xiàn)功能,為游戲添加一個(gè)有趣的新功能。
對(duì)于基礎(chǔ)一般的學(xué)生,可以在給出需求的同時(shí),提供一定的接口,將功能細(xì)化,把大任務(wù)分解成多個(gè)小任務(wù)。例如:在素材中有Tetris.java,Shape.java,Board.java三個(gè)文件,獨(dú)立實(shí)現(xiàn)源代碼中留空的方法函數(shù)。
對(duì)于基礎(chǔ)薄弱的學(xué)生,可以提供一個(gè)主體功能缺失,輔助功能完備的程序模板,讓其實(shí)現(xiàn)主要功能函數(shù)方法。例如:編譯運(yùn)行素材中的俄羅斯方塊游戲,游戲中消除滿行方塊功能未實(shí)現(xiàn),請(qǐng)?jiān)诖a指定函數(shù)方法處實(shí)現(xiàn)該的功能。
3.4 考核評(píng)級(jí)
平時(shí)成績(jī)和期末考試成績(jī)占比分別為40%和60%。平時(shí)成績(jī)中又分為兩塊內(nèi)容:課堂活躍度和實(shí)驗(yàn)完成度,如圖4所示。期末考試實(shí)行教考分離,計(jì)算機(jī)上機(jī)考試,機(jī)器閱卷的形式。
圖4 ?學(xué)生成績(jī)考核評(píng)級(jí)占比
4 結(jié)束語(yǔ)
游戲教學(xué)模式改變了知識(shí)傳授方式,通過(guò)解決實(shí)際問(wèn)題,把相對(duì)獨(dú)立的知識(shí)點(diǎn)融會(huì)貫通,潛移默化地培養(yǎng)學(xué)生計(jì)算思維。游戲教學(xué)模式對(duì)提升程序設(shè)計(jì)類(lèi)課程實(shí)用性,培養(yǎng)學(xué)生實(shí)際應(yīng)用能力也起到了一定效果。盡管如此,這種教學(xué)模式相對(duì)于傳統(tǒng)教學(xué)模式來(lái)說(shuō)有其復(fù)雜性,如大大增加了教師的工作量;需要教師投入更大的精力和時(shí)間,更加全面,合理地制定教學(xué)策略。僅靠一兩門(mén)課就要求學(xué)會(huì)不同思維模式之間的轉(zhuǎn)換是不切實(shí)際的,下一步游戲教學(xué)研究重心會(huì)放在如何通過(guò)移動(dòng)平臺(tái)游戲整合零碎學(xué)習(xí)時(shí)間,大幅提升學(xué)生在課堂之外的自主學(xué)習(xí)時(shí)間。
參考文獻(xiàn):
[1] 臧勁松.培養(yǎng)學(xué)生計(jì)算思維的程序設(shè)計(jì)課程教學(xué)[J].計(jì)算機(jī)教育,
2012.2:78-80
[2] 張渝江.游戲驅(qū)動(dòng)學(xué)習(xí)[J].中國(guó)信息技術(shù)教育,2013.6:102-105
[3] 廖恩陽(yáng),劉征.大學(xué)計(jì)算機(jī)公共課全機(jī)房教學(xué)模式探索[J]. 計(jì)算機(jī)教
育,2014.18:43-45
[4] 宋瑾鈺,愈成海,孫樹(shù)森.基于項(xiàng)目引導(dǎo)-任務(wù)驅(qū)動(dòng)的Java手機(jī)游戲開(kāi)
發(fā)教學(xué)模式研究[J].中國(guó)校外教育,2012.3:162
[5] 劉硯秋,何靈敏,周杭霞,陸慧娟.基于自主學(xué)習(xí)的大學(xué)計(jì)算機(jī)基礎(chǔ)教
學(xué)方法[J].計(jì)算機(jī)教育,2012.3:80-83