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