王旭卿++王麗麗++許惠美
自2012年起,在國內中小學信息技術教育領域掀起了一場Scratch教學熱潮,有的側重創意(動畫)設計,有的強調(兒童)趣味編程,有的還引入諸多外設(如Picoboard傳感器板、Arduino單片機、Kinect體感設備等),將屏幕編程拓展至現實世界??梢暬瘓D塊編程工具——Scratch像一個魔法師不僅激發了中小學生利用編程進行信息化表達的熱情,也激勵了廣大中小學信息技術教師在追求教育理想的征途上積極探索與教學實踐。在國內,經由中小學一線教師主持開發出版的Scratch教材現已達7種之多就是一個明證。雖然Scratch教學在國內風生水起、欣欣向榮,但是許多信息技術教師對Scratch的核心育人價值認識不清[1],對Scratch教學目標的認識大都還停留在激發編程興趣、培養創新能力、掌握21世紀學習技能這些宏大而沒有明確指向的教學目標上。此外,被廣大教師認可并應用的“為創作而教學”Scratch教學方法[2]是一個側重于教學生用Scratch編程的基本方法,但在創意設計與編程實現(計算)的結合方面缺乏具體策略,不少教師對如何引導學生跳出案例、創作自己的動畫、游戲、故事等創意設計作品并將自己的想法轉變為可以正常運行的互動媒體作品頗感困惑。針對上述問題,本文擬從創意計算的角度對Scratch教學目標和教學策略兩個側面進行理論建構,并展示和分析一個面向創意計算的Scratch教學設計案例。
● 面向創意計算的Scratch教學目標
正如上文提到,創意設計和趣味編程是Scratch教學的兩大支柱,通過Scratch教學,我們不僅要培養學生的計算創意(computational creativity)能力,讓學生基于個人興趣、利用跨學科知識進行創意表達以及結合硬件外設進行互動媒體作品的設計與創作,而且還要培養學生的計算思維(computational thinking),讓學生在互動媒體作品的創作中綜合應用隱含編程思想的代碼塊,把自己的想法變成可以運行的編程作品。值得關注的是這兩大支柱有機整合、相互支持,我們可以使用創意計算(creative computing)這個術語來表征當前利用Scratch編程工具促進學生計算思維發展和創意設計能力提升的教學實踐,因為Scratch教學使我們有機會將注重藝術創想和動手實踐的創意設計與強調縝密推理的計算思維進行有機整合。
面向創意計算的Scratch教學目標包括四個方面,即代碼塊與算法思維目標、軟件工程與系統思維目標、創意想象與設計思維目標以及社會協商與參與思維目標。
1.代碼塊與算法思維
在Scratch中,程序設計概念和算法思維被映射為一組代碼塊,學生在熟練運用這些代碼塊組成腳本并實現各種編程功能的過程中不斷加深對這些概念的理解,這些重要的算法思維概念包括順序、循環、并行、事件、條件、運算符和數據(變量)[3],簡要說明如下頁表1所示。此外,由于Scratch開發團隊從適合編程初學者的角度對Scratch編程環境和編程語言進行了獨具匠心的設計(如用不同形狀的代碼塊表示編程語句的句法),因而,學生在拼搭代碼塊、組合腳本的過程中可以潛移默化地掌握一套編程規范和方法。例如,在將不同形狀代碼塊(包括堆代碼塊、控制代碼塊、啟動代碼塊和用于偵測的參數代碼塊)合理拼搭在一起、組成腳本的過程中理解編程語句的語法規則、利用腳本執行的即時反饋(如變量監視器或“交談泡泡”)作為查找程序錯誤的可視化線索。
2.軟件工程與系統思維
用Scratch開發的創意計算作品是軟件,因此軟件開發的相關策略和方法也是創意計算的重要學習目標與內容,它包括遞增與迭代、測試與調試、抽象與建模、模塊化[4],簡要說明如表2所示。具體而言,它們是學生利用Scratch編程工具開發軟件、完成情境任務、解決問題的策略與方法,有助于學生形成可遷移至其他各種設計活動的應對復雜系統的系統化思維。
3.創意想象與設計思維
用Scratch做什么的想法源自學生的需求、興趣愛好、生活經驗和學習經驗等,基于這些豐富多彩的生活體驗,學生可以從多個不同的角度對創意計算作品進行創意想象與設計。第一,可以從作品類型上進行創想,設計動畫、游戲、故事、互動藝術等各種類型的創意計算作品。第二,也可以從主題和內容上進行創想,從娛樂游戲、學科學習、科技發展、傳統文化、藝術創作、人際交往等方面考慮。第三,作品中角色造型、音樂等要素也是學生進行創意設計的入口,如不直接使用現成圖庫中千篇一律的圖片,而是利用Scratch自帶的繪圖工具,通過對角色的異化、變形來自己定制及創作獨特的角色(如字母造型或者數字造型的角色、線條勾勒的火柴人角色等),還可以拍攝自己的照片和錄制自己的解說,融入個性化的創意計算作品中。第四,可以對創作的動畫、游戲或故事的情節進行豐富聯想與大膽創編。設計思維簡要說明如表3所示。這些創意想象與設計思維的訓練使學生學會表達,并與自己所生活的社會、世界聯系得更緊密。
4.社會協商與參與思維
面向創意計算的Scratch互動媒體合作創作與分享是創意計算實踐的主要活動形式,美國賓夕法尼亞大學Yasmin B. Kafai教授總結了當前以計算參與為特征的中小學程序設計教學的社會化轉向趨勢,即創建應用程序、再創作他人作品和參與編程社區。[5]因此,我們要把編程工具使用中所關注的用來思考的對象(objects-to-think-with)轉變為參與編程社區過程中可以與他人共享的對象(shared objects)[6],讓學生在再利用與再創造[7]、協同創作、展示與分享的過程中體驗社會協商,提升參與思維,簡要說明如下頁表4所示。
由此可見,面向創意計算Scratch教學目標是多元和具體的,從創意設計和趣味編程出發,可以延伸出如上四個Scratch教學目標。實際上,學習編程、學習算法思維只是創意計算的目標之一,正如美國MIT終身幼兒園研究小組主任雷斯尼克(Mitchel Resnick)教授在2012年TED主題演講《讓我們教孩子學編程吧》中指出,學習編程的意義在于“學習編程、在編程中學習(Learning to code, coding to learn)”。[8]也就是通過編程活動、創意計算實踐來培養學生的創造性思維、系統性推理和協同創作的能力[9],這些能力將適用于未來的任何工作崗位。大多數學生長大后未必會成為計算機科學家或專業程序設計人員,但他們可以在基于Scratch的創意計算實踐中發展成為數字時代所需要的創意設計者和計算思維者。此外,編程的用途也不僅限于工作和學習,編程還可以作為個人生活中表達思想和情感的新途徑、新方法,通過制作有關母親節、教師節等的節日互動媒體將自己與想要關心的人聯系起來。
● 面向創意計算的Scratch教學策略
“為創作而教”的Scratch教學方法由華南師范大學附屬小學吳向東老師提出,它包括提出創作主題—范例研習—模仿設計—自由創作—分享交流幾個不斷循環的教學階段[10],與MIT提出的想象、編程和分享的創意設計過程相呼應,比較適合教師從范例入手引導學生在范例研習、代碼塊和腳本理解的基礎上對范例進行模仿和簡單改編。
為了使創意計算教學從教學生如何用Scratch代碼塊編程走向創意設計與計算思維的結合,我們提出如下一些教學策略。
1.引導學生把自己的想法轉變為編程的腳本
自由創作是Scratch創意計算教學的根本目標,而提出創意作品的想法并把想法用編程實現是學生自由創作的重難點。這需要教師在教學之初就重視這方面的訓練。實際上,歸納提煉用戶的應用需求(或想法)是應用軟件開發中的重要環節,也就是抽象與建模,它是一種把現實問題轉換為編程問題的方法。抽象是指從現實問題中提取關鍵的數據,在Scratch編程中,學生需要確定創意計算作品中包括哪些角色;建模是指對這些數據如何進行處理(或操作),在Scratch編程中,學生需要考慮這些角色具有哪些特定的行為表現。
在范例研習時,教師要引導學生從觀察到作品運行結果來描述作品的功能,并在腳本區查找實現特定功能的對應編程腳本,幫助學生建立想法到編程腳本之間的聯系。在修改范例時,教師要引導學生提出修改范例的各種想法,讓學生在已學習知識的范圍內嘗試把想法轉變為編程腳本。此外,教師還可以在提供情境任務的情況下,訓練學生抽象和建模的能力,根據特定的情境,想象一個故事,通過抽象確定作品中的各種角色,再通過建模,確定各個角色具有哪些行為表現,有的可以是自主行為,如移動、旋轉、特效、發聲、變換造型,有的可以是事件觸發行為,如根據鍵盤鼠標或與其他角色交互的事件觸發其他行為。
經過有意圖的想象到編程的訓練,學生在自由創作時可以主動運用抽象和建模的方法,學會用編程腳本實現自己的想法,從而進入創意計算、作品創作的自由王國,體驗創意計算的樂趣。
2.引導學生歸納總結實現特定功能的編程技巧
在范例研習階段,學生接觸的每一個Scratch范例作品都隱含著一些實現特定功能的編程腳本,這些需要學生掌握的編程技巧與方法通過情境化(contextualized)的范例作品呈現出來。學習創意計算不應止步于這些范例作品本身和其中的編程腳本,教師應引導學生從具體的情境化范例中歸納、總結這些有用的編程技巧與方法(如角色追隨鼠標移動、角色與背景的初始化、生命值變量和計時器的使用等),這種歸納與總結是一種去情境化(decontextualized)的過程,它有助于學生掌握各種編程技巧與方法。在經歷了情境化范例教學和去情境化歸納總結之后,學生就可以接受更多的挑戰性任務,進行創意計算作品的自由創作,此時,學生會創編不同于已學范例的新的動畫、游戲或故事,根據新作品的功能需要借鑒、取用、重組這些編程腳本或編程技巧,由此進入一個更高層次的再情境化(recontextualized)學習過程,也就是重新使用其他豐富的情境化動畫、游戲或故事,把脫離情境的編程技巧加以包裝,打造為獨創的、富有個性的創意計算作品??梢哉f,學習編程的意義也在于此,將已學的編程技巧應用于新情境、新問題、新任務,創新的萌芽就從這里起步。
3.在有意圖的擺弄中學習
擺弄(tinkering)是不同于規劃、支持自底向上的問題解決方法。隨著創客運動的興起和創客文化對教育領域的影響,擺弄一詞日漸擺脫修修補補的本意,而被視為一種重視探究和動手體驗的工作風格和學習方式。[11]在有意圖的擺弄中學習是學生開展Scratch創意計算實踐的主要方式,其特點是學生以玩樂、探究、迭代的方式投入問題或項目中。在創意計算作品的創作即擺弄的過程中,學生可以嘗試新想法,經常評估目標,做出調整和不斷完善,一遍又一遍地探究新途徑和想象新可能。[12]例如,學生先確定游戲作品的主題和游戲規則,然后完成第一個關卡中各個角色的編程,接著嘗試創作新的關卡、道具、障礙以達到輸贏的平衡。有位學生在空戰游戲的創作過程中逐漸萌生了“黑夜模式”的想法,讓用戶有了黑夜模式下進行空戰游戲的不同體驗,可見創作創意計算作品的目標是在擺弄、探究、嘗試的過程中逐漸產生的。
● “闖關大冒險”教學設計、實施過程及評析
基于上述Scratch教學目標與教學策略,我們設計了一堂題為“闖關大冒險”的Scratch課,這堂課以學生已學習的移動/控制/外觀類代碼塊和簡單編程經驗為基礎。以下從設計理念、教學目標、流程設計、實施過程等幾方面進行展示與分析。
1.設計理念與教學目標
“闖關大冒險”以迪士尼的寶藏灣為情境,首先引導學生通過創意想象來構思關卡故事,并利用Scratch編寫腳本,從而實現關卡的創意設計,再嘗試拼接關卡,最后進行分享交流,在這個過程中讓學生經歷“想象、編程、分享”的創意作品創作過程。整節課中,教師重點關注的是引導學生進行創意想象,并使用Scratch軟件的編程(計算)方法來實現自己的創意表達。因此,個性化創意表達和編程實現是作品創作的核心,每位學生都可以發揮創意,構思不同的關卡故事,使得作品內容更具多樣化和個性化,而非簡單模仿教師提供的單一范例。為了正確地編程實現關卡設計,教師需要鼓勵學生反復測試和調試程序。此外,通過關卡的拼接倡導同伴協作,讓闖關變得更有趣、更具挑戰性。
“闖關大冒險”的教學目標涵蓋了三維目標,具體表述如下:
知識與技能目標:學會利用“導入作品”,將多個Scratch作品進行拼接。
過程與方法目標:通過將口頭描述轉化為Scratch軟件語言的過程,初步體會抽象和建模的思想;在制作和嘗試拼接作品的過程中,學會通過測試和調試來完善作品的方法。
情感態度與價值觀目標:在觀察和嘗試作品拼接的過程中,體會協作的重要性;從作品構思、軟件實現到分享交流,感受編程的樂趣和成功的喜悅。
2.流程設計與實施過程
“闖關大冒險”這節課的教學過程包括五個環節,如圖1所示。以下重點展示想象、編程和分享三個環節的教學設計與課堂實施過程。
(1)想象——創意構思
在這節課中,教師首先通過展現學生感興趣的情境,引發學生的好奇心,激發學習興趣。在引入課題時,由學生喜聞樂見的“迪士尼”故事作為切入點,并播放以“寶藏灣”為情境而制作的“闖關大冒險”Scratch動畫片頭。在歡快的背景音樂中,杰克船長走到山洞門前,連喊了兩聲“芝麻開門”。隨著“咯吱”聲響起,沉重的洞門緩緩打開,而后出現“闖關大冒險”作品主題。熟悉的情境、生動的動畫片頭一下子就吸引了學生的目光,打開了想象的思緒。此時,教師自然地引出課題,說明整堂課的學習內容,并鼓勵學生創意構思后續的關卡故事。
在引導學生想象方面,教師使用了非常規的手段,并鼓勵有創見的關卡故事。教師先讓學生安靜、閉眼,排除外界干擾;然后教師用緩慢的語速,引導學生以第一人稱進行自由想象?!凹偃缒憔褪墙芸舜L,當洞門緩緩打開后,呈現在你眼前的是什么?(停頓)是讓人驚喜、恐懼、歡樂、憂傷的畫面,還是另一個世界?”學生快速思維,大約30秒后,請學生睜眼,講述自己腦海中的畫面。有一位學生的故事是這樣的:當洞門打開后,杰克船長看到一個金光燦燦的山洞,里面有一條龍和一箱珠寶。用方向鍵可以控制船長行走,但是要避開龍,否則龍會噴火,船長就死了。如果船長安全地走到寶箱前,寶箱會打開,并且進入下一關卡。在教師的語言提示下,學生將口頭描述的故事畫面抽象為三個角色(杰克船長、火龍、寶箱)和一個舞臺背景(金光燦燦的山洞)。接著教師通過一連串問題的引導,讓學生明確各個角色的動作腳本。例如,針對火龍這一角色,教師提問:“故事剛開始時,火龍是什么狀態?什么時候噴火?如何實現噴火的動作?火龍是在一個角落不動,還是不停地移動?”學生們踴躍發言,并將火龍的動作分解如下:①當點擊綠旗時,火龍切換到造型一(不噴火),重復執行在1秒內移動到隨機位置;②當點擊綠旗時,重復偵測火龍是否碰到船長,如果碰到,則面向船長,并切換到造型二(噴火)。就這樣,在交流關卡故事的過程中,學生們進一步拓展創意思路,優化構思。在師生互動分析角色動作的過程中,學生們明確了關卡故事里的不同角色,將想象的關卡故事抽象到“角色、舞臺”,并且分解各個角色的動作,將其梳理為Scratch編程語言“當……,角色會……”,從而實現建模,它為“口頭描述”轉化為“編程語言”搭建了腳手架,使得故事構思轉變為Scratch創意計算作品成為可能。在抽象角色和建模角色動作的基礎上,教師布置個人課堂任務,即設計一個闖關關卡,并重點針對其中的一個角色,搭建腳本。故事構思與基于抽象、建模的創意計算作品創作思路如圖2所示。
(2)編程——創意實現
擬定創意構思的故事藍圖和梳理角色動作之后,學生就可以綜合運用已有的Scratch技能,搭建腳本,并不斷測試和調試,用編程(計算)的方法實現自己的關卡故事。如果說在“想象”環節,教師的定位主要是“造夢者”。那么,在編程階段,教師的角色則轉變為“技術顧問”,個別輔導,幫助學生解決技術問題。教師還可以針對學生普遍存在的問題,面向全班學生開展技術交流。比如,有一位學生的故事內容是“一只獅子靜靜地坐在草地上,只需點擊它,獅子就會變成奔跑的樣子,并發出‘吼吼聲”。但在作品播放中,學生發現獅子會倒著跑,而且跑出畫面后,當再一次播放時,它還是消失得無影無蹤。于是,教師引導學生觀察獅子這一角色的腳本。很快,學生自己就找到了解決的方法。比如,利用動作模塊,增加獅子的初始化腳本為“當綠旗被點擊時,移到指定的X/Y位置”;再設置獅子“面向指定的方向”。在輔導學生的過程中,教師發現,“初始化”和“重復偵測”是學生較易出現的問題。因此,要通過作品交流、分析和歸納,幫助學生不斷地思考和解決問題,最終編程實現作品創意。在此過程中,學生們能夠深刻地體會到創意的實現需要反復測試和調試。
個人的關卡設計只能算是小作品,如果可以將多位學生的作品進行拼接,那才稱得上是闖關大冒險。因此,當大部分學生初步實現創意時,教師鼓勵學生同伴協作,整合出更復雜的創意作品。首先,以一個學生作品為例,教師一邊演示一邊講解如何利用“廣播”功能將教師制作的動畫片頭和學生的關卡作品串接起來,并把不同關卡中的角色隨廣播消息而顯示的實現方法進行歸納,如圖3所示。
然后,教師鼓勵學生嘗試利用廣播功能拼接關卡,實現多關卡的“闖關大冒險”。在嘗試拼接關卡作品的過程中,學生們能夠明確同伴協作可以實現更復雜的創意計算作品,并初步體會到軟件工程模塊化設計的思想。
(3)分享——創意展示
在交流分享環節,除了展示自己的創意作品,學生還可以說說自己的作品創意和后續有待完善的創意設計。同伴則可以針對這個未必完美的作品提出進一步修改和完善的建議。在這樣“坦誠交流、思維碰撞”的分享過程中,學生可以感受到分享是完善創意設計與編程實現的重要途徑。
3.教學設計評析
“闖關大冒險”這節課是立足Scratch教學、面向學生創意計算能力培養的一種嘗試。它以一個半開放的情境化命題入手,鼓勵學生在“想象”中設計創意,在“編程”中實現創意,在“分享”中交流創意。這節課的設計有如下特點:
(1)重視激發學生的想象力、啟迪學生創新思維
教師創設激發學生想象力的情境,通過閉眼想象、心理暗示等方法為學生構思關卡故事搭建平臺。讓學生從范例研習、模仿改編逐步走向自由創作。
(2)通過師生互動,引導學生掌握抽象建模的問題解決策略
從關卡故事的創意到搭建腳本、編程實現,其中的難點是梳理關卡故事中的角色(含背景)和角色的各種動作的對應腳本。為了突破難點,教師采用師生互動方法,在敘說關卡故事、抽象提煉故事中的主要角色、分析不同角色的動作的過程中幫助學生從口頭描述轉化為編程語言,從而掌握抽象建模的問題解決策略。
(3)設計關卡拼接活動促進學生協同創作
教師巧妙地應用Scratch中“導入作品”的功能,鼓勵學生開展同伴協作,把不同學生創作的關卡整合為一個更復雜的創意作品。這種整合需要利用廣播功能實現作品的拼接,因此加深了學生對廣播的理解。
(4)提供展示、交流、分享、反思的機會
在創意展示的分享環節,學生有機會通過展示作品、分享創意設計和編程實現的得與失,進行相互學習,體驗分享是創意計算作品創作的重要過程。
(5)運用可視化工具促進學生理解、內化編程思想
教師利用可視化圖表工具把抽象與建模、利用廣播實現作品拼接的編程思想進行清晰地描述,有助于學生理解、內化這些編程思想。
當然,“闖關大冒險”所呈現的教學模式可以根據學生的Scratch創作能力、授課時間、內容等因素進行適當微調。
①時間微調。對入門者而言,教學環節過多,無法在課堂的45分鐘內完成所有活動和任務(創意想象、編程實現、關卡拼接、分享交流),可以采用連堂課,或者分解為兩節課完成,前一節課側重于想象與編程,后一節課關注協作和分享。
②情境微調。本教學案例以半開放的情境化命題入手,凸顯教學重點,不至于造成學習過于發散。隨著學生創作能力提升,可以逐步嘗試開放情境,由學生自主擬定主題、作品類型進行創意想象,在項目規劃、資料搜集、素材準備的基礎上開始創建自己的故事、游戲等腳本。
③分組微調。作品創作可以加入形式多樣的合作學習活動,如結對編程、創作接龍。在結對編程中,兩人一組,使用一臺計算機,通過討論合作完成項目;或者多人一組,各自負責一個關卡,之后再整合成一個作品。讓作品創作的過程有充分的社會互動。
④內容微調。作品內容可以與其他課程內容進行整合,如與數學學科結合,制作一個辨別質數的游戲,或與英語學科結合,制作一個具有劇情的英語動畫。
● 結語
側重于創意設計和趣味編程的Scratch教學實踐將創意和計算兩個概念整合在一起。面向創意計算的Scratch教學實踐是關注創意設計的教育,是培育計算思維者(非專業程序員)的教育,是賦權予學生讓他們成為設計師、創造家(非消費者)的教育。[13]面向創意計算的Scratch教學模式強調教師在教學中扮演的關鍵性角色,引導學生把自己的想法轉變為編程的腳本,歸納總結實現特定功能的編程技巧,并在有意圖的擺弄中學習。這樣的教學過程呼應了MIT雷斯尼克教授所提出的幼兒園學習取向創造思考的五步驟螺旋:想象—創造—游戲—分享—反思—再想象……[14]提供了學生知識建構與創意培養的方法。希望透過“闖關大冒險”這節課,可以重新認識Scratch教學目標和教學策略,增加Scratch教學的深度與廣度,在實踐中培養學生諸如創造性思維、系統性推理和協同創作的創意計算能力。
參考文獻:
[1]毛澄潔,彭晟.參與、實踐、創新與分享——Scratch教學問題與流派淺析[J].中國信息技術教育,2013(10):9-11.
[2][10]吳向東,王繼華.為創作而教:兒童數字文化創作課程的教學方法[J].中小學信息技術教育,2010(11):23-25.
[3][4][7]Brennan,K.,&Resnick,M.New frameworks for studying and assessing the development of computational thinking [EB/OL].http://web.media.mit.edu/~kbrennan/files/Brennan_Resnick_AERA2012_CT.pdf.2013-10-05.
[5][6]YasminB.Kafai&Quinn Burke.The social turn in K-12 programming: moving from computational thinking to computational participation[A]. In Proceeding of the 44th ACM technical symposium on Computer science education (SIGCSE '13)[C]. ACM, New York, NY, USA, 2013, pp603-608.
[8]Resnick,M.Let's teach kids to code[EB/OL].
http://www.ted.com/talks/mitch_resnick_let_s_teach_kids_to_code. 2014-08-26.
[9]Resnick, M.Mother's Day,Warrior Cats,and Digital Fluency:Stories from the Scratch Online Community. Proceedings of the Constructionism 2012 conference. Athens, Greece. 2012.
[11][12]Resnick M. and Rosenbaum E. Designing for Tinkerability [EB/OL].
http://web.media.mit.edu/~mres/papers/designing-for-tinkerability.pdf.2013-12-03.
[13]Karen Brennan,Christan Balch&Michelle Chung.The Creative Computing Curriculum Guide[EB/OL]. http://scratched.gse.harvard.edu/guide/. 2014-08-26.
[14]Resnick, M. Sowing the Seeds for a More Creative Society. Learning and Leading with Technology, December 2007:18-22.