李俊德,彭程,姚瑯權(quán),李嘯宇,彭佳漢,林亭希,賴曉晨
(大連理工大學(xué)軟件學(xué)院,大連116000)
隨著“中國制造2025”戰(zhàn)略的提出,軟件作為交叉學(xué)科,在各個工業(yè)領(lǐng)域中的作用日益重要。為了適應(yīng)社會的發(fā)展,從兒童時期即開展編程訓(xùn)練已經(jīng)成為家長的重要選擇之一。據(jù)Scratch統(tǒng)計的數(shù)據(jù)以及智研咨詢的調(diào)查顯示,2018年美國兒童編程滲透率為46.33%,市場規(guī)模達(dá)1409.2億人民幣;而中國兒童編程滲透率僅為1.06%,市場規(guī)模為105.6億人民幣。因此,社會迫切需要加強(qiáng)兒童編程的教育力度,以使兒童在將來的軟件時代更具競爭力,能夠更好地為社會發(fā)展做出貢獻(xiàn)。
目前,國內(nèi)外市場推出了許多與兒童編程相關(guān)的App以及編程平臺,例如使用了線下組班和線上直播這種教學(xué)營銷模式的VIPCODE、實(shí)現(xiàn)了Scratch和Py?thon編程平臺的極客晨星等。
這些平臺目前所實(shí)現(xiàn)的功能有:
(1)采用開源的Scratch作為教學(xué)內(nèi)容,提供課程給用戶去進(jìn)行學(xué)習(xí)。
(2)基于PC Web的編程平臺,可以讓用戶在網(wǎng)站上實(shí)現(xiàn)可視化的編程,在完成編程后,用戶的作品可以通過網(wǎng)絡(luò)被其他人所知曉。
(3)利用Scratch實(shí)現(xiàn)制作動畫、編寫簡單游戲等娛樂功能。
但是,目前研究仍有許多不足:
(1)平臺較為單一。由于Scratch是基于網(wǎng)頁實(shí)現(xiàn)的,所以大部分少兒編程產(chǎn)品是基于PC Web的編程平臺,導(dǎo)致絕大部分少兒編程實(shí)現(xiàn)需要依賴電腦,不便于隨時隨地學(xué)習(xí)編程,很難深度綁定用戶。
(2)課程質(zhì)量堪憂。大多數(shù)硬件、軟件產(chǎn)品偏娛樂,只能達(dá)到編程思維啟蒙,難以真正教用戶編程開發(fā)。各平臺的講師師資力量參差不齊,導(dǎo)致部分課程質(zhì)量難以達(dá)到真正啟蒙孩子編程思維的目的。
(3)教學(xué)成本較為昂貴。線上、線下編程教學(xué)課時費(fèi)平均為80元,部分課程還有高昂的硬件購置費(fèi)用,用戶門檻極高。同時,即使支付了高昂的費(fèi)用,也未必能達(dá)到預(yù)期效果。
針對這些空白及問題,我們開發(fā)出了一款適合于5-16歲用戶的App,可以提高用戶的編程思維能力并且?guī)椭脩魧W(xué)習(xí)高級編程算法。該App采用Google前沿科技成果Blockly進(jìn)行可視化編程,基于Android設(shè)計,解決了目前編程平臺較為單一的問題。同時,App中引入了以編程啟蒙游戲結(jié)合編程練習(xí)為主的教學(xué)內(nèi)容,不僅可訓(xùn)練編程思維,而且可讓用戶真正開發(fā)程序,解決了目前市場上大部分課程質(zhì)量堪憂的問題。編程游戲除了可以幫助用戶學(xué)習(xí)到編程相關(guān)算法思維,還可以讓用戶學(xué)習(xí)到諸如三字經(jīng)、古詩等國學(xué)經(jīng)典以及英文單詞。編程練習(xí)提供了所有常用的編程語法,可讓用戶創(chuàng)造性地編寫自己的程序。最后,該App是從軟件底層開發(fā)編程來引導(dǎo)課程,大大降低人工授課成本和硬件購置費(fèi),減少了教學(xué)成本。
本項目有以下三大主要系列:知識啟蒙系列、編程游戲系列和編程開發(fā)系列,以及一份App使用指導(dǎo)。
圖1 系統(tǒng)結(jié)構(gòu)圖
如圖2所示。該系列主要面向7歲以下學(xué)齡前兒童,系列分為知識筆記和知識闖關(guān)兩個模塊。該系列主要是通過吸引幼兒注意力的方式來促進(jìn)兒童對知識的學(xué)習(xí),并在闖關(guān)中進(jìn)行代碼塊拼接使用思維和編程思維的訓(xùn)練。
圖2 知識啟蒙系列結(jié)構(gòu)圖
(1)知識筆記模塊
此模塊含英語、動物、古詩、三字經(jīng)、名人事跡共5個子模塊的具體知識的學(xué)習(xí),通過圖片、動畫等能夠吸引幼兒注意力的形式向兒童介紹生活中常見的動物、植物、日常用品、名人事跡等。與此同時,融入中國傳統(tǒng)教育的詩詞、三字經(jīng)等3~4個知識系列案例,實(shí)現(xiàn)學(xué)齡前兒童的知識啟蒙。
(2)知識闖關(guān)模塊
此模塊有5個子模塊,包括包含英語、動物、古詩、三字經(jīng)、名人事跡五個子模塊的具體關(guān)卡的闖關(guān)訓(xùn)練。幼兒通過對Blockly拼圖的操作來對事物進(jìn)行分類組合、記憶。知識闖關(guān)模塊與Blockly進(jìn)行有機(jī)結(jié)合,在兒童學(xué)習(xí)知識筆記模塊后進(jìn)行闖關(guān),從而實(shí)現(xiàn)學(xué)齡前兒童的知識啟蒙。
如圖3所示。此系列面向7~13歲的有一定思維能力的兒童,幫助在此年齡段內(nèi)的兒童開拓智力,提高邏輯思維能力。該系列將設(shè)計并實(shí)現(xiàn)4個益智類游戲場景,包括小蝌蚪找媽媽、畫圖、吃豆人、推箱子四個模塊,每個模塊有10至17個關(guān)卡不等,難度依次遞增。兒童在關(guān)卡中可以拖拽、擺放封裝好的Blockly代碼塊,實(shí)現(xiàn)基礎(chǔ)的積木式編程,用“代碼”的方式來通過游戲場景中的關(guān)卡,在收獲游戲樂趣的同時提高邏輯思維能力和解決抽象問題的能力。此系列也為后續(xù)第三系列的進(jìn)行奠定一個思維基礎(chǔ)。
圖3 編程游戲系列結(jié)構(gòu)圖
如圖4所示。編程開發(fā)系列的功能主要是讓兒童在了解了代碼塊拼接使用以及簡單編程思維訓(xùn)練之后,使用邏輯性更強(qiáng)的代碼塊,進(jìn)行簡單的編程開發(fā)。編程開發(fā)系列包括編程樂園模塊和編程訓(xùn)練模塊。
圖4 編程開發(fā)系列結(jié)構(gòu)圖
(1)編程樂園模塊
該模塊向兒童開放了所有的代碼塊的使用接口,兒童不再限于題目的要求,而是可以實(shí)現(xiàn)更加豐富的功能。該模塊更加接近于IDE(集成開發(fā)環(huán)境),用戶可根據(jù)需要使用Toolbox中相應(yīng)功能的代碼塊,進(jìn)行拼接,點(diǎn)擊運(yùn)行后,結(jié)果將顯示在上方的文本框中。該模塊還為用戶提供一個代碼保存機(jī)制,讓編程更加便捷。
(2)編程訓(xùn)練模塊
該模塊根據(jù)編程中的常見內(nèi)容,將此模塊分為:輸出文本、數(shù)學(xué)、變量、邏輯、循環(huán)、數(shù)組六個子模塊。這六個子模塊大致對應(yīng)了App提供的Toolbox中的六個功能的代碼塊組。用戶可根據(jù)自身需要,對相應(yīng)章節(jié)進(jìn)行學(xué)習(xí)。相應(yīng)章節(jié)為用戶提供了答案提示的幫助,可讓用戶對學(xué)習(xí)情況進(jìn)行檢測。
除以上三個系列外,我們還編寫一份App使用指導(dǎo),告知使用此App的家長和兒童如何使用本App,從而更好的幫助兒童進(jìn)行編程訓(xùn)練學(xué)習(xí)。
本項目中各系列中包含的具體關(guān)卡的判斷流程基本一致,下面以編程游戲系列中的“小蝌蚪找媽媽”子模塊的闖關(guān)為例進(jìn)行展示。圖5(a)、圖5(b)是App中“小蝌蚪找媽媽”游戲的第一關(guān)卡的實(shí)現(xiàn)效果,圖5(a)是初始進(jìn)入第一關(guān)時的App界面,圖5(b)是該關(guān)卡下代碼拼接后的效果圖。用戶進(jìn)入相應(yīng)關(guān)卡,在觀察并思
考如何通關(guān)之后,選擇Toolbox中的代碼塊進(jìn)行組合拼接,小蝌蚪將依照代碼塊的內(nèi)容進(jìn)行移動,移動結(jié)束后,進(jìn)行結(jié)果判定,并彈出相應(yīng)關(guān)卡評分界面如圖5(c)。
圖5
實(shí)現(xiàn)過程:
Toolbox中的每一個代碼塊都對應(yīng)著JavaScript中的一段函數(shù),例如 move_forward()、turn_left()、repeat()等,它們都是控制小蝌蚪進(jìn)行相應(yīng)運(yùn)動的代碼。同時考慮到代碼塊的拼接方式會有順序拼接與嵌套拼接,便將每一個代碼塊的連接接口進(jìn)行標(biāo)識與判定處理,使其可以正確地區(qū)分處理順序拼接和嵌套拼接的代碼。當(dāng)多個代碼塊拼接完成后,相應(yīng)的代碼段也將組合完成,從而形成一個邏輯上有先后循序的完整代碼段。
執(zhí)行代碼時,將組合好的代碼段提交給處理JavaS?cript的判定系統(tǒng),該系統(tǒng)會根據(jù)當(dāng)前模塊類別、游戲類別、游戲關(guān)卡找到相應(yīng)的判定機(jī)制,進(jìn)行結(jié)果的判定,判定會依據(jù)關(guān)卡中內(nèi)容的難易程度與用戶完成的時間情況進(jìn)行判定。最終再將判定結(jié)果回調(diào)給提交方,從而給出用戶展示相應(yīng)的對話框。
為讓兒童可以根據(jù)自身需要進(jìn)行編程開發(fā),而不是僅限于關(guān)卡的要求。App向用戶提供了一個擁有功能齊全代碼塊的兒童編程開發(fā)環(huán)境,在這一模塊中,Toolbox向用戶提供了邏輯、循環(huán)、數(shù)學(xué)、文本、數(shù)組、變量與函數(shù)的代碼塊,用戶根據(jù)自身需要將不同的代碼塊進(jìn)行拼接,實(shí)現(xiàn)所需要的功能??梢岳肁pp中提供的代碼塊實(shí)現(xiàn)許多經(jīng)典的算法,例如冒泡排序、Dijk?stra算法、雞兔同籠等問題。
如圖6是編程樂園效果圖,用戶可以從Toolbox中選取相應(yīng)代碼塊,進(jìn)行拼接,運(yùn)行之后,判定系統(tǒng)會將輸出結(jié)果返回到界面上方的輸出面板中,用戶可進(jìn)行檢查。
圖6 編程樂園界面
基于Blockly的兒童編程思維訓(xùn)練App,根據(jù)兒童的年齡階段劃分出不同難度等級的內(nèi)容,兒童可根據(jù)自身情況,對不同模塊進(jìn)行學(xué)習(xí),讓兒童完成從知識學(xué)習(xí),到編程思維訓(xùn)練,再到獨(dú)立開發(fā)程序的分步式學(xué)習(xí)過程。該App具有界面友好度高,功能完善,上手難度低,針對兒童等特點(diǎn)。將學(xué)習(xí)與闖關(guān)游戲有機(jī)結(jié)合,可以充分滿足兒童,家長和學(xué)校對兒童早期編程學(xué)習(xí)的需要。