劉杰等
摘要:針對目前程序設(shè)計類課程教學(xué)過于強(qiáng)調(diào)編程語言語法而忽略編程方法,從培養(yǎng)計算思維能力的角度出發(fā),跨越語法規(guī)范,設(shè)計一種通用編程游戲,闡述了該游戲的設(shè)計理念、設(shè)計原則、設(shè)計內(nèi)容和設(shè)計目標(biāo),最后分析了該游戲的應(yīng)用原則和教學(xué)優(yōu)勢。
關(guān)鍵詞:程序設(shè)計;計算思維;通用編程游戲
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)21-0055-03
Design of General Programming Game for Improving Computational Thinking
LIU Jie, YANG Xiao-hua, CHEN Xing, LIU Zhi-ming, ZHANG Hui-ren
(School of Computer Science and Technology, University of South China, Hengyang 421001, China)
Abstract: Aiming at the problem that the current programming design courses are much emphasis on the programming language syntax rather than the programming method, a general programming game is proposed for crossing the grammar specification, training computational thinking and developing programming ability. The paper describes the design idea, implementation details and application principle of the programming game and analysis its advantages in programming language teaching.
Key words: programming; computational thinking; general programming game
程序設(shè)計課程是計算機(jī)學(xué)科的重要課程,也是其他學(xué)科的必修課程。這門課程對初學(xué)者難度較大,常常出現(xiàn)筆試成績還行,但上機(jī)編程就無從下手的情況。究其原因,主要在于傳統(tǒng)教學(xué)過程中過分注重語法知識的講解,關(guān)注某個語句是否被編譯報錯,對問題的求解思路和求解方法等不夠重視。這種教學(xué)模式導(dǎo)致負(fù)面的狹義工具論,學(xué)生學(xué)到了各種零散的語句和函數(shù)的功能,卻不能領(lǐng)悟到程序設(shè)計的方法和思想,不知道使用這些功能能解決什么問題以及如何解決問題。最后,不少學(xué)生學(xué)習(xí)困難,覺得計算機(jī)語言枯燥難懂,逐漸對編程失去興趣。針對這種情況,結(jié)合計算思維,設(shè)計一種通用編程游戲,消除語法障礙,對計算思維的培養(yǎng)和程序設(shè)計課程教學(xué)進(jìn)行改革和創(chuàng)新。
1 計算思維與程序設(shè)計課程教學(xué)
美國卡內(nèi)基·梅隆大學(xué)計算機(jī)科學(xué)系主任周以真教授在2006年提出計算思維這一概念,并給出其定義:計算思維是運用計算機(jī)科學(xué)的基礎(chǔ)概念去求解問題、設(shè)計系統(tǒng)和理解人類的行為[1]。她從計算思維的角度談到了日常生活和工作中多個案例,讓我們意識到隨著計算機(jī)科學(xué)的發(fā)展,計算思維和3R(Reading,wRiting,andaRithmetic)一樣,應(yīng)當(dāng)成為每個人的基本技能,而計算思維的能力體現(xiàn)不僅僅是在諸如計算語言、計算平臺等計算環(huán)境的認(rèn)識上,更重要的是在計算環(huán)境下的問題求解方法,這才是我們應(yīng)用計算機(jī)技術(shù)解決各種問題的重要基礎(chǔ)[2]。
程序設(shè)計不等于計算思維,但是,程序設(shè)計離不開計算思維,任何程序設(shè)計都是建立在一定的計算思維上。程序設(shè)計教學(xué)中不應(yīng)該再“重語法,輕設(shè)計”,更重要的是培養(yǎng)計算思維,從計算思維角度而不是語法角度對學(xué)生進(jìn)行計算概念以及計算實踐的考核。為了培養(yǎng)計算思維能力,結(jié)合其本質(zhì)設(shè)計編程游戲[3-4]:
抽象——對計算平臺的無關(guān)性和計算語言的通用編程思維進(jìn)行歸納,取出其共同的、本質(zhì)性的特征;
自動化——支持游戲指令的一步步自動執(zhí)行和可視化操作,取代靜態(tài)的流程圖和偽代碼。
2 通用編程游戲
通用編程游戲ArmGo,如圖1,是一類特殊的教育游戲,以機(jī)械臂推箱子的形式出現(xiàn)。該游戲與普通電腦游戲不一樣,游戲過程中,機(jī)械臂不是由鍵盤、鼠標(biāo)或操縱桿來控制,而是根據(jù)學(xué)生為它設(shè)計的動作指令自動執(zhí)行;它的動作指令與其他編程教育游戲也不一樣,學(xué)生完全不用考慮編程語言自身的語法,而是通過給定的可視化指令集進(jìn)行指令組合。
學(xué)生的最終目的是通過事先選擇的多條指令來控制機(jī)械臂將箱子移動到指定位置。
2.1 設(shè)計理念
該游戲的旨在設(shè)計一個培養(yǎng)計算思維能力的教育游戲,不僅具有教育教學(xué)的“教育性”——游戲的內(nèi)容和任務(wù)都和計算思維相關(guān),還有主流游戲的“游戲性”——關(guān)卡挑戰(zhàn)、步驟控制等。
2.2 設(shè)計原則
通用編程游戲的設(shè)計關(guān)鍵在于設(shè)計一種跨越具體的程序設(shè)計語言語法細(xì)節(jié)的表達(dá)模式,并在此模式下指導(dǎo)學(xué)生分析問題、解決問題,培養(yǎng)計算思維能力。這種新模式必須滿足“易使用”和“易轉(zhuǎn)換”兩個基本原則[5]:
1)新模式下的表達(dá)內(nèi)容符合人的自然理解習(xí)慣,其正確語義無需嚴(yán)格的規(guī)范化訓(xùn)練就能理解;
2)新模式的指令與具體程序代碼之間存在無歧義的對應(yīng)轉(zhuǎn)換關(guān)系,即通過簡單的固定規(guī)則就能將該模式下的表達(dá)內(nèi)容直接翻譯成等價的偽代碼。
基于“易使用”原則,該游戲?qū)W(xué)習(xí)的重點由語法規(guī)范轉(zhuǎn)移到問題解決方法(或步驟)的描述與設(shè)計,避免初學(xué)者過早陷入語言表達(dá)形式的汪洋大海;基于“易轉(zhuǎn)換”原則,游戲的最終目標(biāo)仍是強(qiáng)化學(xué)生的計算思維、提高程序設(shè)計能力,并實現(xiàn)語義層次而非語法層次的思維能力考核。
2.3 設(shè)計內(nèi)容
由于該游戲主要用于程序流程的表達(dá),故設(shè)計的主要任務(wù)是集成邏輯編程的控制結(jié)構(gòu),用可視化的指令實現(xiàn)編程語言的基本邏輯流程的體系結(jié)構(gòu),將抽象問題感官化。
首先,設(shè)計了包含普通指令(上移、下移和右移指令)、選擇指令、循環(huán)指令和模塊在內(nèi)的指令集,可以實現(xiàn)程序設(shè)計中的3種基本結(jié)構(gòu)——順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),以及簡單的無參函數(shù)設(shè)計;其次,給各個關(guān)卡設(shè)計了初始狀態(tài)和目標(biāo)狀態(tài),對應(yīng)程序的輸入和輸出;最后,根據(jù)最少的過關(guān)時間和最少的過關(guān)指令數(shù),對學(xué)生的過關(guān)指令流進(jìn)行評分;而每個關(guān)卡的內(nèi)容也是結(jié)合不同的計算概念進(jìn)行設(shè)計的,比如簡單選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等。
2.4 設(shè)計特點
1)對于編程初學(xué)者而言,可以“零語法”開始編程,只有通關(guān)與否,沒有語法錯誤;2)指令流是圖形符號的集合,每個符號表示要執(zhí)行的操作,符號依次執(zhí)行;3)可以實現(xiàn)模塊化設(shè)計,使算法結(jié)構(gòu)更清晰;4)指令設(shè)計和執(zhí)行過程中是可視化的,上手極為容易,學(xué)生可以直接觀察自己設(shè)計的指令流的執(zhí)行過程;5)可以對通關(guān)代碼執(zhí)行時間和執(zhí)行步驟進(jìn)行統(tǒng)計,有助于簡單的算法復(fù)雜性分析。
2.5 設(shè)計目標(biāo)
2012年,美國麻省理工學(xué)院媒體實驗室提出計算思維三維框架,包括三個維度:計算概念,計算實踐和計算觀念[6]。通用編程游戲就是基于這個三維框架設(shè)計教學(xué)目標(biāo)和游戲功能,對計算思維能力的培養(yǎng)提出了新的研究思路和探索。
下面在計算思維三維框架下總結(jié)通用編程游戲中的活動內(nèi)涵[6]:
1)計算概念:是學(xué)生在游戲過程中使用最多、印象最深的一些概念,在通用編程游戲中,這些概念被映射成一組指令,可以無歧義地遷移到轉(zhuǎn)換成某種程序設(shè)計語言。常用的計算概念有4個:順序,循環(huán),分支,函數(shù):
順序:為了控制機(jī)械臂完成某個動作需要執(zhí)行的一系列指令;
循環(huán):將相同的順序步驟重復(fù)運行多次;
分支:根據(jù)箱子的顏色決定動作是否執(zhí)行;
函數(shù):將某組步驟獨立出來,形成模塊,可以被其他模塊調(diào)用。
2)計算實踐:在游戲過程中學(xué)生使用的問題解決策略。主要有4種:
遞增和重復(fù):關(guān)卡難度不斷提升,通關(guān)不是一個直接、線性的過程,通關(guān)方案應(yīng)在一步步不斷試驗中得到修正;
測試和調(diào)試:利用游戲的即時反饋和可視化,可以掌握預(yù)測、修正問題的方法;
再利用和再創(chuàng)作:通過學(xué)生之間的交流溝通,找到可以利用的想法和思路,進(jìn)行修改創(chuàng)作,實現(xiàn)一題多解;
抽象和模塊化:針對復(fù)雜關(guān)卡,通過模塊調(diào)用設(shè)計整體解決方案。
3)計算觀念:學(xué)生在游戲過程中不斷形成對自己和同伴以及周圍世界的理解,是一種思維習(xí)慣的養(yǎng)成。主要有3種觀念[5]:
表達(dá):通關(guān)后,要求學(xué)生由淺入深用文字-算法描述性語言-計算機(jī)語言描述通關(guān)思想和過程,要求步驟清晰。時間一長,學(xué)生樹立“我可以”的信心,將不滿足于現(xiàn)有關(guān)卡,而樂于嘗試和體驗其他類型的編程活動。
聯(lián)系:借助各種外在支持,如尋求同學(xué)幫助、網(wǎng)絡(luò)答疑,研究和再創(chuàng)作他人通關(guān)步驟,與人一起合作通關(guān)。
質(zhì)疑:對某些通關(guān)步驟的功能不足和受限等提出質(zhì)疑性問題,并給出自己的改進(jìn)信息。
在計算思維三維框架下,學(xué)生在游戲過程中不斷形成計算概念、強(qiáng)化計算實踐,確立計算觀念,鍛煉不同能力,比如問題分析與解決能力、步驟設(shè)計與描述能力、分支思維能力、循環(huán)思維能力、模塊化思維能力以及數(shù)學(xué)建模能力等。
2.6 編程游戲的教學(xué)應(yīng)用
將通用編程游戲入程序設(shè)計教學(xué)是有步驟地進(jìn)行:
1)游戲引入:首先根據(jù)教學(xué)內(nèi)容和目標(biāo)設(shè)計來選擇關(guān)卡,這是最關(guān)鍵的一步,它將直接影響最終的教學(xué)效果。針對不同的教學(xué)內(nèi)容,可以提前布置游戲任務(wù),讓學(xué)生提前思考和討論。在討論中,學(xué)生彼此間形成思想的碰撞、觀點的交流,開拓了思路,也激發(fā)了學(xué)習(xí)興趣。
2)知識回歸:討論結(jié)束后,教師將課堂內(nèi)容從游戲回歸到教學(xué)本身,講解技術(shù)要點和具體運用。
3)編碼演示:鼓勵學(xué)生通過小組協(xié)作完成一關(guān)多解,并對評分進(jìn)行比對分析。
3 結(jié)束語
在通關(guān)的基礎(chǔ)上,要求學(xué)生用文字步驟清晰地描述通關(guān)的過程,進(jìn)而引導(dǎo)學(xué)生使用算法描述性語言,最終使用計算機(jī)語言來描述通關(guān)的思想和過程。這是教學(xué)的最終目的,也是為了培養(yǎng)學(xué)生將自然語言轉(zhuǎn)化為計算機(jī)語言的能力和靈活運用計算機(jī)程序解決實際問題的能力。
在整個過程中,如何解決問題和如何設(shè)計指令,主要是學(xué)生通過自己的思考得來的。而教師在教學(xué)過程中一方面強(qiáng)調(diào)新知識的運用,另一方面主要是給學(xué)生展示知識背后的計算思維,讓學(xué)生感受到計算思維是魅力和重要性,啟發(fā)學(xué)習(xí)者的求知欲望和心理共鳴
教學(xué)實踐證明,引入通用編程游戲的班級,學(xué)生主動參與到游戲知識的學(xué)習(xí)積極性較高,并且學(xué)生的思維活躍,甚至?xí)幸欢▌?chuàng)新思維,整體學(xué)習(xí)效果明顯提高。所以,在程序設(shè)計教學(xué)中,恰當(dāng)?shù)匾胪ㄓ镁幊逃螒?,有助于啟發(fā)學(xué)生的思維,幫助學(xué)生理解程序設(shè)計的方法和思想,課堂氣氛活躍,寓教于樂,是一種“玩物長智”的認(rèn)知和學(xué)習(xí)活動。
參考文獻(xiàn):
[1] Jeannette M. Wing. Computational Thinking[J]. Communications of the ACM, 2006, 49(3): 33-35.
[2] 李廉. 計算思維——概念與挑戰(zhàn)[J]. 中國大學(xué)教學(xué), 2012(1):7-12.
[3] 江耿豪, 鄭煒冬. 編程游戲在計算機(jī)語言教學(xué)中的運用[J]. 漳州師范學(xué)院學(xué)報: 自然科學(xué)版, 2006(2):128-131.
[4] 曾夏玲. 基于計算思維能力培養(yǎng)的“輕游戲”教學(xué)模式初探[J]. 職教論壇, 2015(11).
[5] 賀忠. 游戲思想在程序設(shè)計語言課程教學(xué)中的應(yīng)用[J]. 計算機(jī)教育, 2009(13):157-159.
[6] 王旭卿. 面向三維目標(biāo)的國外中小學(xué)計算思維培養(yǎng)與評價研究[J]. 電化教育研究, 2014(7).