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