姚炯
積木編程軟件簡單易學(xué),成為低齡學(xué)生編程學(xué)習(xí)的主要手段。但是在更深入的編程學(xué)習(xí)中,算法和程序設(shè)計(jì)教學(xué)的主要載體還是代碼編程。從積木到代碼,盡管有基礎(chǔ)知識(shí)的共通點(diǎn),但其編程方式和風(fēng)格存在著巨大差異。那么,學(xué)生之前積木編程的知識(shí)經(jīng)驗(yàn)?zāi)芊襁M(jìn)行遷移,從而促進(jìn)以后代碼編程的學(xué)習(xí)呢?同時(shí),這些知識(shí)經(jīng)驗(yàn)的遷移效果又是怎樣?能夠多大程度化解學(xué)生代碼學(xué)習(xí)的困難呢?
● 編程教學(xué)現(xiàn)狀
就目前而言,積木式編程軟件采用的游戲化教學(xué)手段,推崇趣學(xué)、趣玩、趣創(chuàng)造的教育理念,風(fēng)靡了整個(gè)少兒編程教育領(lǐng)域,成為低年齡段編程教學(xué)的主要手段。目前廣泛使用的積木式編程軟件有Scratch、App inventor、Swift Playgrounds、IRobot虛擬機(jī)器人、Micro:bit等。隨著時(shí)間的推移、技術(shù)的發(fā)展,積木式編程軟件的游戲性和創(chuàng)造性越來越突出,產(chǎn)品種類越來越豐富,例如,網(wǎng)易卡搭、極客戰(zhàn)記、編程貓等產(chǎn)品的出現(xiàn),使得少兒編程在積木軟件選擇上有了更大的空間。積木式編程在三至七年級(jí)非常普及,算法的很多概念都是通過這種方式教給學(xué)生,對(duì)低年齡段學(xué)生算法學(xué)習(xí)和計(jì)算思維的發(fā)展有很大幫助。而且,在積木編程環(huán)境中,學(xué)生能夠通過簡單的模塊拼接,代替專業(yè)的代碼編寫,從而迅速創(chuàng)作出屬于自己的作品。更多的孩子因此獲得了成功的體驗(yàn),喜歡上了積木編程的學(xué)習(xí)。但到了更高的學(xué)習(xí)階段,八九年級(jí)、高中、大學(xué)甚至專業(yè)領(lǐng)域,代碼編程仍然是目前算法學(xué)習(xí)和程序設(shè)計(jì)的主要教學(xué)載體。與積木編程的趣學(xué)趣玩不同,不少學(xué)生在代碼編程學(xué)習(xí)過程中遇到的困難要大得多。
那么,預(yù)先進(jìn)行積木式編程教學(xué),之后再緊接著進(jìn)行代碼編程教學(xué),學(xué)生積木編程的經(jīng)驗(yàn)?zāi)芊襁M(jìn)行遷移,從而化解他們代碼編程學(xué)習(xí)的困境呢?在風(fēng)靡小學(xué)的積木式編程和面向較高學(xué)習(xí)階段的代碼編程之間,編程的知識(shí)技能和問題解決經(jīng)驗(yàn)有多大程度可以相互貫通、轉(zhuǎn)化遷移呢?對(duì)此我進(jìn)行了研究,希望能為編程學(xué)習(xí)的“遷移而教”提供參考。
● 經(jīng)驗(yàn)遷移實(shí)驗(yàn)
1.編程的經(jīng)驗(yàn)類型
“為遷移而教”是當(dāng)今教育界流行的一個(gè)很有吸引力的口號(hào)。根據(jù)教育心理學(xué)資料研究,遷移是一種學(xué)習(xí)對(duì)另一種學(xué)習(xí)的影響。具體地說,遷移就是一種學(xué)習(xí)獲得的知識(shí)、技能、學(xué)習(xí)方法與態(tài)度對(duì)另一種學(xué)習(xí)的影響。學(xué)生在積木式編程中學(xué)到的知識(shí)基本可歸納為以下三種類型:第一種是陳述性知識(shí),是指編程的一些概念和專有名詞的理解,如變量、列表、事件、函數(shù)等。第二種是自動(dòng)化基本技能,主要是能按照語法規(guī)則寫出代碼,并根據(jù)提示調(diào)試程序的操作性技能。第三種是認(rèn)知策略,主要是對(duì)問題進(jìn)行分析建模,然后利用計(jì)算機(jī)特性設(shè)計(jì)出問題解決的步驟。那么,在更高學(xué)習(xí)階段的代碼編程中,這些知識(shí)的遷移效果又如何呢?
2.實(shí)驗(yàn)過程
調(diào)查摸底:
七年級(jí)第二學(xué)期開學(xué),我對(duì)任教的6個(gè)班級(jí)學(xué)生進(jìn)行了調(diào)查摸底:約三分之一的學(xué)生在小學(xué)四年級(jí)或五年級(jí)有且僅有Scratch編程學(xué)習(xí)經(jīng)歷,距今兩年左右,對(duì)Scratch的印象主要停留在讓角色動(dòng)起來。
教學(xué)過程:
第一階段:設(shè)立實(shí)驗(yàn)班級(jí)和對(duì)比班級(jí),進(jìn)行一個(gè)學(xué)期的Scratch教學(xué)。以我任教的8、9、10三個(gè)班級(jí)作為對(duì)比班級(jí),教學(xué)內(nèi)容為浙教版七年級(jí)下冊(cè)(PS、PPT和多媒體素材處理)。以我任教的另外三個(gè)班級(jí)5、6、7班作為實(shí)驗(yàn)班,教學(xué)內(nèi)容為校本教材Scratch。盡管Scratch教材版本較多,教學(xué)范例有差別,但知識(shí)和技能的細(xì)目是大致相同的。附表1為我進(jìn)行Scratch教學(xué)所用的雙向細(xì)目表,其中黑色加粗部分共17處,是我預(yù)想應(yīng)該可以遷移到VB編程學(xué)習(xí)中去的知識(shí)。
在第一階段教學(xué)結(jié)束時(shí),我進(jìn)行了操作考試,實(shí)驗(yàn)組整體通過率達(dá)97.8%。
第二階段:我對(duì)任教的六個(gè)班級(jí)進(jìn)行VB編程教學(xué),此時(shí)學(xué)生處于八年級(jí)第一學(xué)期,所用的教材為浙教版初中信息技術(shù)。附表2為浙教版VB編程教學(xué)內(nèi)容的雙向細(xì)目表,其中黑色加粗部分共8處。在這些知識(shí)內(nèi)容的教學(xué)中,我發(fā)現(xiàn)實(shí)驗(yàn)班在師生互動(dòng)中優(yōu)于對(duì)比班級(jí),對(duì)課堂問題的響應(yīng)較好。
從課堂觀察來看,這8處知識(shí)內(nèi)容大多分布在學(xué)生VB編程的概念學(xué)習(xí)階段,較少涉及認(rèn)知策略。學(xué)生在積木編程中訓(xùn)練較多、運(yùn)用較熟練的條件分支語句、循環(huán)語句以及運(yùn)用這些語句解決問題的能力,卻沒能在代碼編程的練習(xí)中較為明顯地體現(xiàn)出優(yōu)勢來。簡言之,積木式編程的經(jīng)驗(yàn)遷移還僅限于概念、記憶等陳述性知識(shí)類型上,遷移達(dá)成的能力層次相對(duì)不高。對(duì)于編程教學(xué)中普遍看重的結(jié)構(gòu)語句的運(yùn)用能力、問題解決能力以及熟練程度,在代碼編程學(xué)習(xí)上沒有發(fā)現(xiàn)顯著關(guān)聯(lián)。經(jīng)過21次課,我將18次平時(shí)作業(yè)和3次測試情況(含期末考試)進(jìn)行了歸結(jié),如上圖所示。
通過圖表可以發(fā)現(xiàn),流程圖測試和順序結(jié)構(gòu)環(huán)節(jié),實(shí)驗(yàn)組和對(duì)比組存在不太顯著的差異。在循環(huán)結(jié)構(gòu)環(huán)節(jié)兩組分化較為明顯。推測實(shí)驗(yàn)組學(xué)生先前學(xué)習(xí)的積木編程經(jīng)驗(yàn)對(duì)VB循環(huán)結(jié)構(gòu)章節(jié)的掌握起到了積極的推動(dòng)作用。在越過循環(huán)結(jié)構(gòu),進(jìn)入枚舉算法學(xué)習(xí)和解題訓(xùn)練階段,兩組差距縮小,最后在期末考試時(shí)通過率幾乎一樣。(兩組平均分有所區(qū)別,分?jǐn)?shù)區(qū)間分布和先前積木編程是否有關(guān)系,需要進(jìn)一步研究)
從本次實(shí)驗(yàn)結(jié)果推測:學(xué)生所掌握的積木編程經(jīng)驗(yàn),對(duì)VB學(xué)習(xí)能夠產(chǎn)生一定的積極影響,其影響范圍較為有限。在學(xué)生對(duì)新知的理解上有促進(jìn)作用;在代碼編寫、算法設(shè)計(jì)等內(nèi)容上,沒有發(fā)現(xiàn)與之相關(guān)的明顯促進(jìn)作用。相比積木編程時(shí)97.8%的高通過率,實(shí)驗(yàn)組在代碼編程上通過率下降了33%。盡管是入門級(jí)的代碼學(xué)習(xí),但對(duì)于不少學(xué)生而言仍舊比較困難。
● 分析和結(jié)論
(1)積木編程經(jīng)驗(yàn)遷移的局限性,顯示出編程學(xué)習(xí)中的不同知識(shí)類型轉(zhuǎn)化和遷移的區(qū)別。識(shí)記及概念等陳述性知識(shí)遷移效果較好,提升了學(xué)生吸收消化新知識(shí)的速度。而作為一門實(shí)踐學(xué)科,編程中大量用到的自動(dòng)化基本技能和認(rèn)知策略卻難以順利遷移。不少學(xué)習(xí)過積木編程的學(xué)生,在代碼編程中仍遇到較多的學(xué)習(xí)困難。
(2)任何算法的實(shí)現(xiàn)都需要借助語言表述,而代碼和積木在其語言表述上存在巨大差異,使其成為兩種不同的自動(dòng)化基本技能。學(xué)生在積木編程學(xué)習(xí)中習(xí)得的拼圖表述方式,無法遷移到以單詞表述為主的代碼學(xué)習(xí)過程中。學(xué)生對(duì)代碼編程的困難在于單詞難記,語法難學(xué),語句難寫。同時(shí),積木式編程和代碼編程所解決的問題類型不同,認(rèn)知策略也不一樣。積木編程解決的問題類型通常為編寫游戲或故事,是面向?qū)ο蟮木幊?,以小貓(Scratch)為主角進(jìn)行的包括移動(dòng)、對(duì)話、控制、觸碰等一系列面向?qū)ο蟮木幊绦袨椋c學(xué)生的日常認(rèn)知習(xí)慣相近。而代碼編程是以數(shù)學(xué)問題為研究領(lǐng)域,是面向過程的編程,解決包括數(shù)值比較、累加累乘、窮舉、排序查找等問題,同時(shí)在設(shè)計(jì)算法的過程中,學(xué)生還受到數(shù)學(xué)學(xué)科思維的干擾。因此,無論學(xué)生之前是否學(xué)習(xí)過積木編程,他們?cè)诖a編程中遇到的許多問題都是新問題。
綜上所述,以Scratch游戲化編程進(jìn)行的教學(xué),對(duì)學(xué)生VB代碼編程的影響較為有限。積木編程最吸引學(xué)生的角色扮演和游戲編程,對(duì)學(xué)生今后數(shù)學(xué)問題建模及編程的能力塑造影響甚微。如果要更多地為遷移而教,也許應(yīng)該在積木編程中多些算法訓(xùn)練,但這些內(nèi)容是枯燥的,遠(yuǎn)不如游戲編程那么趣學(xué)、趣玩、趣創(chuàng)造。