顏鼎 江蘇省南京市鼓樓區教師發展中心
算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。信息科技學科作為一門以“解決問題”為學習目標之一的學科,具有鮮明的算法特征:關注學生的思維過程、過程架構與創新品質的培養。在新課標背景下,在課程實施過程中,如何有效培養學生的算法,是中小學信息科技學科教師關注的重點內容。
適合兒童的編程平臺具有明確的任務主線,項目目標清晰,其作品可在短期內通過一定的程序達成。作為一種顯性的、具有算法思維特征的內容,編程平臺具有門檻低、模塊化、封裝化的特點。因此,筆者認為,信息科技教學的算法內容,可依托兒童編程課程實現,通過教師的合理引導,學生可以進行程序的編寫、作品的表達。借助編程平臺的設計,信息科技教師可以明確算法的基本設計路徑,以具體的內容載體,進行初期的教學設計嘗試。
在課堂教學過程中,基于算法進行的教學設計具有鮮明的特征。本文以兒童編程課程為例,探索在信息科技學科中基于算法的設計模式。
新課標強調任務推進,在兒童編程課程的教學設計中,算法關注具有實際意義的問題,以問題求解的過程作為教學的導向,進而推動教學進程。在基于算法的教學設計中,教學課件、學件及作業形式等,都應圍繞算法的演進,進行針對性的教學設計。
(1)原設計。《編程軟件圖章》一課的教學重點為兒童編程平臺畫筆模塊中的“圖章”“清除”命令,涉及兒童編程平臺“畫筆”“外觀”“動作”等模塊的內容。在常規課的教學過程中,教師一般采用以下的流程進行教學:介紹“圖章”和“清除”命令;演示“圖章”程序的搭建方法;學生練習編寫“圖章”命令的程序。
(2)思考焦點。在此過程中,在教師沒有給予學習情境的情況下,學生為何要進行“圖章”的學習?學習“圖章”以后能做什么?哪些情況下需要使用“圖章”模塊?這些問題都未能進行有效的設問,因此學生對“圖章”的算法是缺乏心理預設的。在實際上課時,學生僅僅是在模仿教師的程序搭建過程,而并沒有進行有效的自我構建的過程。這樣的學習過程,是機械學習的技能模仿,缺乏必要的算法過程。
(3)改進型設計。在基于算法的“圖章”教學過程中,首先確定教學重點為“圖章”程序的自然語言表達。選擇從生活中提煉具有實際意義的活動為任務目標,將問題的解決作為推進教學過程的導向主線。在此基礎上,以問題的逐步解決來分層進行教學重點的學習,通過具體的活動載體來承載學習任務。
在“圖章繪百花”一課中,首先確定算法主線,進行與此相關的問題組件設計,層層推動任務行進路線,進而將認知內容得以具體化。
算法設問:教師展示只有一個花瓣的圖例,詢問學生,可否稱之為花朵?學生質疑,花瓣數量不夠→問題產生:如何能在較短時間內,形成一朵完整的花?→師生進入新授環節。
算法析問:一花一世界→解決花瓣的瞬間復制問題;五彩爛漫時→解決花朵的變色問題;動態花精彩→解決花朵的循環旋轉問題。
算法追問:導入不同角色的花朵,促發學生思考如何能讓這些花朵達到心儀的動作方式?→學生探索實現途徑→通過修改程序、嘗試程序積木的方式來進行任務的達成。
算法拷問:學生總結四個任務的實現過程,梳理出程序思考的過程,繪制出共性的流程圖,并結合今天的主題進行兒童編程平臺的功能鏈接,從而加深意義學習的過程。
在基于算法的教學設計過程中,學生帶著算法思維,進行有目的的任務推進活動。在導入部分,算法的實施目標明晰、合理,符合兒童認知規律;在解決問題部分,任務層層推進,推動學生不斷進行有關算法的思維過程,從四個顯性問題的解決中,潛移默化地學習了隱性的知識內容。
算法分解是適應義務教育階段學情的要求,學生不僅能夠理解算法的過程,還能夠通過具體的實例對算法進行分解,明晰每一個部分的具體意義。通過回溯算法等方式,將任務進行逐步的拆解,再根據實際情況進行認知內容的疊加,從而形成明晰的結構主線。
(1)原設計。兒童編程平臺中“旋轉方式”模塊的學習是常見的內容,對應的是有關動作方式的算法內容。常見的設計方式是:教師演示工作對象的旋轉過程,指出實現旋轉的程序模塊,引導學生進行相關的練習。
(2)思考焦點。在常規的教學過程中,工作對象自身缺乏運動意義,算法與對象的旋轉只有技術關聯,缺乏意義關聯。在學生完成一個任務后,沒有對程序進行分解的路線支架,所以學習過程機械單調,難以深入。
(3)改進型設計。教師將“旋轉方式”作為一種角色運動的程序支架,讓實物的旋轉和程序同期出現,讓學生思考角色和程序之間的關聯。在完成了第一組“角色+程序”的組合之后,再出示另外的“角色+程序”組合,給學生充分的回溯思維的過程,以達到知識遷移的目的。
算法前置:從一個花瓣變成十個花瓣的腳本入手,分析腳本與動畫之間的關系。
算法研讀:一個花瓣是如何變成十個花瓣的,將猜測的結論通過程序來進行驗證,最終得出先“向左/右旋轉360/10度”,再將“復制”“粘貼”的過程“重復10次”后,可以得到十個花瓣的結論。此時,留下設問:“旋轉角度”和花瓣數量之間有怎樣的聯系?
算法鏈接:依據上面活動的結論,提出“數字與邏輯運算”中的關聯。課件中繼續出現四瓣花、五瓣花、七瓣花,讓學生對相應的腳本進行自然語言的表達。至此,突破本課中的教學難點:旋轉角度和花瓣數量之間的聯系。
在新課標背景下,在基于算法的教學設計過程中,教師將著力點從講解程序的編寫過程,改變為讓學生分析程序的組合原理。通過每個花瓣的旋轉角度的分析,學生可以理解到“數字和邏輯運算”模塊中的運算的自然意義。學生在對實物與腳本進行對應分析后,加深了對程序本身的理解,也鞏固了思維過程的嚴密性。
新課標要求對算法實際問題求解,在解決問題的策略中,具有多途徑和一定的開放性,鼓勵學生能夠在合理的情況下,通過多種方式來解決實際問題。
(1)原設計。在《定義過程》一課中,常規的設計方式一般采用以下教學流程:教師演示一個正方形的繪制方式→講解如何用定義過程的方式繪制正方形→讓學生練習,如何通過定義過程的方法繪制正方形→教師演示如何通過“copy”與定義過程組合,繪制出較為復雜的圖形→學生進行拓展練習。在實際教學中,常常出現學生只會畫正方形組成的圖形,而無法遷移到其他圖形的情況。
(2)思考焦點。在本節課設計中,程序編寫教學難度跨度較大。教師在教學中,易采用較為保守的講授式教學模式。但是此教學過程突出的問題在于學生知其然,不知其所以然,導致學習過程模仿的痕跡明顯,沒有必要的遷移和拓展過程,導致缺乏個性化的作品呈現,不符合新課標的理念。
(3)改進型設計。在基于算法的教學設計中,注重從學習任務中提取出具有變量特性的元素,將其應用于學習過程,以此開展構建個性化的作品。
算法解析:從卡通兔導入,分析頭部是如何演變出耳朵的?(分析其組成,找出其中的變量)
算法體驗:在分析出圓形的組合規律后,進行基于圓形的圖形繪制,嘗試出多圓組合的形式。
算法指導:引導學生分析“利用定義好的基本圖形,可以畫出這樣的一組圖形嗎?”,從課件中讓學生分析組成復雜圖形的變量,再給學生思考的空間,由點及面,進行多層次的變量定義。
算法實踐:定義圓形→圓形組合;定義橢圓形→定義橢圓形組合。
算法再構:分析多定義命令的程序。
算法組建:定義兩個基本圖形→繪制正方形、三角形組合的復雜圖形,并進行自我喜好的作品加工。
算法迭代:引導學生在作品中找出共性的內容,反思自己的作品,進行更富有個性化的圖形繪制,繪制兔子的嘴巴、鼻子、領結等部位。
基于新課標算法的教學設計注重了變量引發的變式,及變式帶來的學生個性化的問題解決方案。在基于算法的“定義過程”的設計中,教師將更多的關注點放在了引導學生思考,讓編程軟件真正成為個性化的創作工具。
基于新課標的算法教學設計,將學習過程進行了項目化的提升,實施中要關注以下幾點:第一,算法各要素的融合方式。算法過程之間是相互依存、相互促進的關系。如果只關注分析問題,而不進行必要的數值邏輯計算,那解決問題的途徑只能是紙上談兵,無法落地。第二,避免陷入過于復雜的算法之中。不可忽視問題框架的設計,要在合理合情的情境下進行,在同等條件下,尋求最佳的解決途徑、最佳性價比。第三,引導學生用信息科技學科思維全面認識和思考。算法是信息科技學科的靈魂,作為教師,要能夠積極地喚起學生多角度的遷移能力和拓展意識,避免封閉的、線性的認知習慣。