吳詒南 莫志恒 黃凱琳
在現階段深圳小學的信息技術課程中,諾寶及Scratch都已列入課本教材,而在各校的校本課程中,更有開設更深難度的Scratch,以及Arduino、Python、NOIP等形式的編程。筆者在近幾年的課堂教學中,深感編程設計對學生思維發展有較大的促進作用, 本文就少兒編程教育對思維能力的影響談談自己的淺見。
一、背景分析
美國前總統奧巴馬曾提出“每天編程一小時”的活動,提倡孩子們從小開始接觸和嘗試編程,奧巴馬自己也是以身作則,寫了一段簡單的代碼。而在更早之前,英國就已經將“編程”列入了青少年的必學課程,隨后一些發達國家也紛紛效仿,編程學習的低齡化已成為近年來全球教育的新趨勢。
于我國而言,國務院在2017年下發的《新一代人工智能發展規劃》文件中,明確指出應逐步開展全民智能教育項目,在中小學階段設置人工智能相關課程、逐步推廣編程教育,將中小學編程教育提到了一個較高的位置。更在2018年教育部發布的《教育信息化2.0行動計劃》文件中,則提出推動落實各級各類學校的信息技術課程,并將信息技術納入初、高中學業水平考試中,一些機器人競賽還有相應的加分。
而在深圳,也在近年將諾寶、Scratch等編程課程納入信息技術教材,學校更是鼓勵教師開展各式編程課程做為課程標準外的補充,旨在編程教育中培養少兒的邏輯、抽象和創新思維的能力。且小學生處于身心發展的關鍵期,同時課業壓力相對于初高中學生而言較小,是學習編程的好時期。
二、編程設計對少兒思維、能力發展的影響
1.編程設計鍛煉學生的系統思維
系統思維就是人們運用系統觀點,把對象互相聯系的各個方面及其結構和功能進行系統認識的一種思維方法。只有系統思維,才能抓住整體,抓住要害,才能不失原則地采取靈活有效的方法處置事務。整體性原則是系統思維方式的核心。
在信息課堂編程教學中,對于不同的程序語言,均是要求學生須在每個程序任務前進行整體的分析:把一個復雜的大問題,拆解成更可執行、更好理解的小步驟(分解)→找出相似模式,高效解決細分問題(模式識別)→聚焦最重要的信息,忽視無用細節(抽象)→設計一步一步的解決路徑,解決整個問題(算法)。尤其是當學生面對的是復雜度較高的任務時,孩子首先需要通過將復雜任務拆分為一個個小任務,然后逐個擊破,最終解決問題、完成任務。在這個任務拆分又重新組合的過程中,鍛煉學生須立足于整體,從整體與部分的相互作用過程中來認識和把握整體。
2.編程設計提升學生的抽象思維
小學中高年齡段的孩子,處于抽象思維培養的重要啟發與蓄勢階段,初中階段是抽象思維質變期,而高中則是思維成熟期。對于學齡段的學生來說,成熟前的思維可塑性大,而在初中思維質變期前,做好抽象思維的蓄勢與啟發準備至關重要,而編程設計,無疑是非常合適的一門課程。
學生在編程過程中,從具體問題出發,聚焦重點,忽略無用的信息,并抽取關鍵信息。在編程中,包含“語句、方法、類、包、模塊、子系統”等不同層級的抽象,孩子們在編程過程中能鍛煉聚焦關鍵信息的能力。
3.編程設計培養學生縝密的邏輯思維
程序設計可分為四個步驟:
(1)將復雜、龐大的問題分解成幾個小問題分別解決(分解);
(2)分解完問題之后,單獨檢視、思考每一個小問題,搜索解決方案(模式識別);
(3)剖析問題核心,細節模糊化(抽象);
(4)確定解決路徑(算法)。
學生在編程設計中經常以這樣的模式進行思考,有利于潛移默化地培養他們自身的思維習慣,在算法過程中,尤其能鍛煉學生的抽象思維。編程中只有“0”與“1”——“對”與“錯”,沒有模糊值的存在。在調試程序的過程中,須不斷對程序合理性、是否符合邏輯進行判斷與分析,如果程序無法正常運行或運行結果與期望值不符合,就證明算法中出現了錯誤,一旦程序中出現bug,我們就要重新把整個任務的順序走一遍并關注每一步的結果,通過不斷的回溯、調試和糾錯,直到程序成功運行為止。
曾經有人舉過一個例子:以“買蘋果”這個日常生活問題為例,普通人的想法是:我要買1斤蘋果,其它的再說。
而編程者的想法是:
(1)我要買1斤紅富士蘋果,我接受的價格是10元/斤;
(2)正常情況下1斤蘋果需要1個袋子放下,以防萬一我會帶2個袋子;
(3)附近有3家水果店,我會依次訪問這3家水果店。
可見,編程學習者的思維習慣,在考慮問題時更為縝密。而在日常生活、學習和工作中,運用編程的四步驟——即“編程思維”:分解→模式識別→抽象→算法,將大的問題拆分成多層,實現“自上而下,逐步分解,直至理順”。
三、途徑探析
如何在信息技術編程課程中培養學生的思維能力?筆者認為,可在教學中采取如下策略:
1.設計漸進式的課程體系
編程教育——尤其是在校本課堂上,教師有一定的自主性,可在課程內容的設計上循序漸進、有機銜接,每個階段的學習更有側重點而避免相關的重復。
可參考美國CSTA稍作優化后形成的改進版本課程體系:根據該課程體系,對三年級以上的孩子進行漸進式的編程課程設計,剛接觸編程的低年段學生,以圖形化、游戲化的編程為主,重在體驗與樂趣,比如可采用Scratch,借助積木式的編程工具創建動畫和游戲,在過程中逐步掌握控制、模塊、執行、變量等編程概念,在后期學習中,可與智能硬件相結合設計難度更高的項目。
而對于有程序學習基礎的四年級以上學生,經過前邊的學習能初步具備邏輯能力,可在此時結合學生的興趣設置Arduino或樂高課程,這兩種編程方式可靈活結合各種硬件、傳感器等設計好玩實用的作品。但在這個階段教師須注意對學生的引導與鼓勵,此時不僅要求學生要有一定的毅力,具有編寫程序的思維能力,還應有一定的動手搭建能力。
Scratch、Arduino或樂高課程都屬于圖形化編程的范圍,但后期Arduino或樂高會對學生的動手搭建能力有更高的要求,如果只實現程序但沒用相應的實體作品做為載體,同樣不能視為一個合格成功的作品。
Python代碼編程適合五年級以上的學生,是一種面向對象的動態類型語言。面向對象的程序思想可以很好地鍛煉學生的抽象、邏輯思維,代碼可實現復用與封裝,學生可用Python制作小游戲或開發網站等。
2.邊玩邊學
把Scratch做為少兒編程的起步,圖形化的語言易于孩子接受和使用,且能寓教于樂,讓孩子們獲得創作中的樂趣。現階段Scratch軟件已開發Windows系統、蘋果系統、Linux系統下運行的版本,軟件中各種造型能迎合該年齡段孩子的興趣,用積木式的圖形拖拽實現程序可操作性強,而且Scratch雖然界面非常兒童化但功能卻非常全面,基本的要求都可以滿足,不僅可以應用在其它課程中,如在數學、物理學、或者美術課可以通過Scratch完成某些學習目標,甚至可以使用Scratch編寫各式各樣的小游戲,非常有趣。
筆者在教學中經常以做小游戲為任務,比如大魚吃小魚、接蘋果、打地鼠等,將教學目標與一節課的重難點有效內化在游戲制作的過程中,學生既學到了知識,又自己制作出了游戲作品,達到了邊玩邊學的目的。
3.創設自主探索空間
學生在編程學習的起步階段依賴教師是很自然的事情,但如果想要學生成為學習過程的主體, 成為課堂的主體,教學過程的設計就必須以學生為中心為起步點,立足于學生獨立性的發展與自主探究,實現教與學的真正互動。
在編程教學中,教師在起步階段可手把手帶學生,一步一個腳印走得比較細致,但在幫助學生建立起初步的編程思維,以及掌握軟件的基本指令之后,就應放手讓學生自己進行程序的設計與編寫。
例如在Scratch教學中,制作打地鼠的小游戲:
(1)教師與學生共同對“打地鼠”程序進行總體的設計分析,確定程序的流程圖。
(2)教師對學生進行程序的角色分析與動作分析。
出于Scratch的游戲基于角色而設計的這一點而考慮,角色是游戲的基礎,所有動作指令都添加在角色上,每個角色有不同的指令動作,通過各個角色的相互協調,最終實現預設的效果。因此筆者在Scratch教學中非常重視對程序角色和動作的分析,而學生在理清這兩個要素后,基本就能把控整個程序的設計。而完成程序分析之后,筆者就將課堂時間交由學生自主把握,隨堂進行觀察與個別指導。
(3)學生自主完成編程,教師在學生完成程序后,回顧講解與分析具體的腳本。
教師在整節課的過程中,最重要的步驟是與學生共同完成對程序的總體設計分析,以及完成角色和動作的分析。但在課堂結束收取學生作品的過程中,筆者常常會發現“與眾不同”的作品——學生會用幾種不一樣的實現方式來完成程序而不拘泥于一種分析模式,在展示和解析學生作品的過程中,其實整節課也完成了讓學生自主探索的目標。
總體說來,教師在編程課堂中,并不是單一的講授與教授者,而是做為引導者與觀察者的角色,程序的設計、分析及最后的腳本編程及調試,教師無法替代學生完成,只能一步一步地引導學生建構思路,最后形成自己的作品。
責任編輯 邱 麗