陶雙雙 王戈
【摘 要】“計(jì)算思維”與讀寫算一樣,是學(xué)生需要掌握的必備技能之一。為了能培養(yǎng)這種思維能力,本研究選用Scratch作為編程工具,運(yùn)用項(xiàng)目式教學(xué)策略,讓學(xué)生體驗(yàn)“需求分析—總體設(shè)計(jì)—編程實(shí)現(xiàn)—分享拓展”的項(xiàng)目開發(fā)全過程。通過反復(fù)經(jīng)歷“分解、抽象、概括、算法、評估”,最終提升其計(jì)算思維能力。
【關(guān)鍵詞】計(jì)算思維;Scratch;項(xiàng)目式教學(xué)
【中圖分類號】G434? 【文獻(xiàn)標(biāo)識(shí)碼】A
【論文編號】1671-7384(2019)02、03-077-04
從2006年3月美籍華人周以真教授提出“計(jì)算思維”概念以來,學(xué)者們便開始對其內(nèi)涵及落實(shí)的策略進(jìn)行研究。周以真教授對計(jì)算思維進(jìn)行了概念性和操作性兩個(gè)維度的專業(yè)界定,由于本研究著眼于基礎(chǔ)教育教學(xué),因此,主要從計(jì)算思維的操作性維度來理解其內(nèi)涵。
筆者通過文獻(xiàn)追蹤了國內(nèi)外K-12教育中相關(guān)成果,從操作維度看,計(jì)算思維的組成元素包含如下5個(gè)方面[1]:算法(Algorithmic thinking)、評估(Evaluation)、分解(Decomposition)、抽象(Abstraction)、概括(Generalization)。
谷歌中國教育合作項(xiàng)目推出了《面向教育者的計(jì)算思維課程》[2],把計(jì)算思維劃分為如下4個(gè)組成要素:分解(解構(gòu))、模式識(shí)別、抽象(模式歸納)、算法開發(fā)。
為理解和研究的方便,筆者按照項(xiàng)目開發(fā)流程把計(jì)算思維的組成要素重新排列為:抽象(理解任務(wù))、分解(分解任務(wù))、概括(運(yùn)用已有知識(shí))、算法(設(shè)計(jì)步驟)、評估(檢驗(yàn)算法)。當(dāng)然,在實(shí)際問題解決過程中,這五個(gè)要素并不是遵循嚴(yán)格的線性關(guān)系,可能很多時(shí)候是互相疊加的。
Scratch項(xiàng)目式教學(xué)策略設(shè)計(jì)
Scratch教學(xué)中的項(xiàng)目可以是游戲、動(dòng)畫或者應(yīng)用軟件。按照軟件項(xiàng)目開發(fā)過程,本研究中將項(xiàng)目教學(xué)分為四個(gè)環(huán)節(jié),分別是需求分析、總體設(shè)計(jì)、編程實(shí)現(xiàn)和分享拓展。我們以“迷宮尋寶游戲”為例來說明。
1.需求分析
需求分析是項(xiàng)目開發(fā)的首要環(huán)節(jié),其目的是能明確用戶需求,真正理解項(xiàng)目的功能。
(1)理解需求。在實(shí)際軟件開發(fā)過程中,項(xiàng)目多是來源于客戶需求,作為開發(fā)者,需要多與客戶交流,了解客戶對于項(xiàng)目的要求有哪些,爭取盡可能多地理解用戶需求。對于學(xué)習(xí)者來說,除了有來自老師的要求外,也有很多自我創(chuàng)意的部分,無論項(xiàng)目來源于哪里,都需要能明確項(xiàng)目到底要做什么,包括哪些具體功能。
(2)描述需求。在理解了項(xiàng)目需求后,可以用“六要素”法將需求描述出來,有利于提升學(xué)生的抽象能力?!傲亍笔侵福簳r(shí)間、地點(diǎn)、人物、起因、經(jīng)過、結(jié)果。比如:游戲何時(shí)開始、何時(shí)結(jié)束、有無限定時(shí)間、游戲發(fā)生的地點(diǎn)、人物有哪些、起因、經(jīng)過和結(jié)果是什么,等等。如表1所示。
(3)分析需求。根據(jù)功能描述,將所有的名詞和動(dòng)詞找出來,將他們互相匹配,即為動(dòng)詞找到主語(名詞),最終在匹配成功的名詞里確定哪些適合作為角色,如表2所示。接著,再找到和數(shù)據(jù)有關(guān)的詞語去確定變量,找到“如果……那么”和重復(fù),確定程序的邏輯和流程。
經(jīng)過這種逐層抽象后,接下來,可以再用思維導(dǎo)圖把分析結(jié)果表示出來,對項(xiàng)目由上到下、由粗到細(xì)做了大致分解,形成了幾個(gè)功能模塊,該環(huán)節(jié)有利于提升學(xué)生的分解能力。篇幅所限,這里僅展示“小貓”的行為設(shè)計(jì),如圖1所示。
2.總體設(shè)計(jì)
該階段包括兩個(gè)環(huán)節(jié),一是劃分功能模塊,二是總體流程設(shè)計(jì)。
(1)劃分功能模塊。畫好角色行為設(shè)計(jì)圖后,項(xiàng)目包含的模塊基本清晰可見。該項(xiàng)目包括“背景設(shè)計(jì)、小貓移動(dòng)、寶貝出現(xiàn)(將計(jì)分合并)、障礙物旋轉(zhuǎn)”四個(gè)模塊。劃分出功能模塊后,就會(huì)對項(xiàng)目有總體上的把握。
(2)總體流程設(shè)計(jì)。該環(huán)節(jié)主要是從用戶的角度,根據(jù)程序運(yùn)行過程,設(shè)計(jì)出模塊之間的邏輯關(guān)系,形成總體流程設(shè)計(jì)圖,如圖2所示。該環(huán)節(jié)的設(shè)計(jì)有助于提升學(xué)生的系統(tǒng)設(shè)計(jì)能力。
圖2 總體流程設(shè)計(jì)
3.編程實(shí)現(xiàn)
完成項(xiàng)目設(shè)計(jì)后,就開始對每個(gè)模塊進(jìn)行編程實(shí)現(xiàn),而編程之前先要進(jìn)行算法設(shè)計(jì),即先要明確解決某個(gè)功能或問題的步驟,然后據(jù)此編寫程序。
(1)算法設(shè)計(jì)。這一環(huán)節(jié)屬于編程的核心,也是難點(diǎn),設(shè)計(jì)工具是繪制流程圖,用以表達(dá)程序中的順序、選擇以及循環(huán)等邏輯結(jié)構(gòu)。圖3所示是“迷宮尋寶游戲”中小貓移動(dòng)過程中的各種情況處理對應(yīng)的算法流程圖。
(2)編寫程序。編程時(shí),首先需要考慮選用何種編程語言,這里選用的是Scratch。在學(xué)習(xí)Scratch的基本語法和指令后,就可以依據(jù)該算法編寫出相應(yīng)的程序。通過運(yùn)行程序,觀察結(jié)果,檢測和評估算法的準(zhǔn)確性,反復(fù)修改,如圖4所示。
圖3 算法設(shè)計(jì)
圖4 編程實(shí)現(xiàn)
(3)調(diào)試程序。準(zhǔn)確地說,調(diào)試是伴隨編程的全過程,“出錯(cuò)”是編程的常態(tài)。甚至說程序出錯(cuò)是好事,因?yàn)槌鲥e(cuò)了,我們才能發(fā)現(xiàn)自己到底哪里理解得不夠,是語法錯(cuò)誤,還是整個(gè)邏輯上的錯(cuò)誤。所以,調(diào)試程序的過程其實(shí)是在檢驗(yàn)自己的思維過程,幫助我們提升問題分析和解決的能力。
同時(shí),在該過程中,學(xué)生會(huì)經(jīng)歷從起初的興奮到遇到問題后的沮喪,從急躁到耐心,從自負(fù)到欣賞他人,從單純的競爭到共同協(xié)作,能體會(huì)到編程過程中的互幫互助,這些都在潛移默化地培養(yǎng)學(xué)生良好的學(xué)習(xí)習(xí)慣。
4.分享拓展
為了讓學(xué)生敢于正視不足并學(xué)會(huì)欣賞他人,設(shè)置“分享”環(huán)節(jié),開展互玩程序活動(dòng)。在體驗(yàn)別人程序的同時(shí),學(xué)習(xí)他人的創(chuàng)意與思路,提出改進(jìn)建議,同時(shí)展示說明自己程序的亮點(diǎn)及不足,提升總結(jié)與概括能力。
教學(xué)實(shí)踐中發(fā)現(xiàn),學(xué)生體驗(yàn)多次的展示分享后,更加地開放,會(huì)主動(dòng)與同伴交流,會(huì)吸取更多的創(chuàng)意和更優(yōu)化的思路及算法。比如:在實(shí)現(xiàn)迷宮尋寶游戲后,很多學(xué)生會(huì)考慮為游戲增加暫停、倒計(jì)時(shí)、設(shè)置不同難度級別等功能。
項(xiàng)目教學(xué)實(shí)施建議
1.花時(shí)間引導(dǎo)學(xué)生分析和設(shè)計(jì)
實(shí)際教學(xué)中,課時(shí)少,項(xiàng)目本身容量大,前期的分析和設(shè)計(jì)也要花大量的時(shí)間。教師們?yōu)榱粟s教學(xué)進(jìn)度,經(jīng)常把教學(xué)重點(diǎn)放在了“編程實(shí)現(xiàn)”環(huán)節(jié),“分析和設(shè)計(jì)”環(huán)節(jié)很多時(shí)候浮于表面,甚至是教師代替學(xué)生去分解項(xiàng)目模塊。這樣的話,學(xué)生其實(shí)并沒有體驗(yàn)到面對陌生問題時(shí)的無從下手,也體驗(yàn)不到從模糊到清晰的思維分析過程,計(jì)算思維培養(yǎng)其實(shí)并沒有真正落地。因此,教學(xué)中需要為“需求分析”和“總體設(shè)計(jì)”兩個(gè)環(huán)節(jié)花費(fèi)時(shí)間,這兩個(gè)環(huán)節(jié)做好了,學(xué)生后期編程時(shí)會(huì)有更多的積極性和目標(biāo)性。
2.小步調(diào)地設(shè)計(jì)與編程
“需求分析—總體設(shè)計(jì)—編程實(shí)現(xiàn)—分享拓展”是一個(gè)縱向環(huán)環(huán)相扣的過程,但具體在教學(xué)實(shí)施過程中,并不建議嚴(yán)格地按照這樣的環(huán)節(jié)來實(shí)施教學(xué)。因?yàn)樽鲂枨蠓治龊驮O(shè)計(jì)不是一兩節(jié)課能完成的,如果集中把這些工作做完再去編程,很容易讓學(xué)生失去學(xué)習(xí)興趣。所以建議采用“小步調(diào)設(shè)計(jì)與編程”策略,即設(shè)計(jì)一點(diǎn)兒實(shí)現(xiàn)一點(diǎn)兒展示一點(diǎn),這樣學(xué)生會(huì)始終帶著目標(biāo)和興趣去學(xué)習(xí)。
3.開展小組合作學(xué)習(xí)
為有效開展小組合作學(xué)習(xí),需要有共同的任務(wù)讓大家參與,否則很多合作流于形式。在對項(xiàng)目做分析和設(shè)計(jì)時(shí),可以讓學(xué)生兩人一組或多人一起描述和討論游戲功能,一起在紙上繪制角色行為設(shè)計(jì)圖。筆者運(yùn)用了在線實(shí)時(shí)協(xié)作作圖網(wǎng)站,在網(wǎng)站上建立小組,組長邀請成員,一起在線分工繪制思維導(dǎo)圖,并實(shí)時(shí)顯示結(jié)果,這種方法可以讓每個(gè)學(xué)生真正體會(huì)到合作的力量。
4.線上線下混合式學(xué)習(xí)
在項(xiàng)目學(xué)習(xí)過程中,每位同學(xué)的任務(wù)完成進(jìn)度不一樣,遇到的問題也是五花八門,這時(shí)需要教師作為指導(dǎo)者,在學(xué)生出現(xiàn)問題時(shí)能及時(shí)參與并引導(dǎo)。為此,在教學(xué)中嘗試搭建了Moodle自主學(xué)習(xí)平臺(tái),開發(fā)了項(xiàng)目課程,包括有關(guān)知識(shí)點(diǎn)和模塊實(shí)現(xiàn)的微視頻和課件,方便學(xué)生自主選用學(xué)習(xí)資源,這種線上線下混合式學(xué)習(xí)模式為項(xiàng)目教學(xué)的實(shí)施提供了資源支持。
參考文獻(xiàn)
Computing at SchoolWorking Group. Developing computational thinking in the classroom:a framework[DB/OL].(2014).https://eprints.soton.ac.uk/369594/1/DevelopingComputationalThinkingInTheClassroomaFramework.pdf. [2018-12-01].
毛澄潔等.Google中國教育合作項(xiàng)目——Google計(jì)算思維課程(中文版)[DB/OL].http://gur.zucc.edu.cn/curriculum/resource/5a0ba2c899dc9f2478aa35a8.(2016).[2018-12-01].