姜華 江蘇省江陰高級中學
筆者在教學中發現這樣一個問題:在教學中,如果直接展示知識體系,使學生正面理解后進行記憶;或者直接示范標準的技能與方法,讓學生觀摩后再進行模仿;當學生遇到困難或者失敗時,直接提供相應的解決方案……這些做法當堂可以達成教學目標,但學生很容易遺忘,而且不會拓展應用。這說明,僅通過機械識記、簡單模仿追求表面上的成功,并不意味著學生實現了有效的學習。那么,如何通過設計一個有效的學習支架,實施課堂有效教學,讓學習真實發生?
有效失敗理論為這一教學問題提供了啟發。新加坡的卡普爾(Manu Kapur)教授在2008年提出了“Productive Failure(有效失敗)”概念,并以此展開了教學研究。在這一理論的指導下,教師在教學的初始階段不提供結構化的認知支持,讓學生遭遇失敗,但學生經過個體、小組探索形成了知識建構,即學生在表現上是失敗的,但學習真實發生了。根據這一理論,為了促進學習真實發生,可以利用預設學生的學習失敗來重新設計教學活動環節,利用故意設置的陷阱讓學生遭遇失敗,進而從中學習。
筆者在高中信息技術課堂中開展有效失敗教學實踐時發現,預設合理的失敗、設計失敗發生后的學習支架是關鍵。本文結合教學實踐,總結出三種常見的學生“失敗”場景,并提出了相應的教學支架設計實施策略。
教學設計片段:
師:請同學們打開“1基礎代碼.py”文件。這是什么結構?這個程序的功能是什么?
生:順序結構。
師:任務一主要是考查大家基本技能的掌握情況。請同學們在基礎代碼上進行修改,繪制一個五角星。(學生動手操作,用Python實現五角星形狀的繪制,教師巡視指導,找到采用不同算法設計的學生,列出學生A和學生B的代碼,如下頁圖1所示,請學生A回答。對比分析兩位學生算法的區別,適時請學生B補充回答)

圖1
循環結構發揮了程序繪圖的優勢——重復執行,使程序代碼更合理,提高了可讀性和可擴展性,當要繪制十個、二十個角的星形時,循環結構的優勢會更凸顯。
本案例是算法的三種基本結構教學之后的綜合應用,重點是引導學生探究問題的算法,通過使用順序、分支、循環三種基本結構解決問題,體驗不同算法效率的差別。在教學中,教師為學生提供了繪制一個正方形的基礎代碼,因為學生對turtle模塊的使用還不熟悉,提供基礎代碼可以減少學生編寫基礎代碼的時間,而且提供的是一個順序結構的代碼,很多學生可能會因為思維定勢,直接沿用順序結構的方法繪制五角星,導致失敗。這樣的失敗,結果是正確的,只是代碼不夠簡潔,方法不夠高效,不是最優的方案。教師通過對比分析的學習支架,展示不同算法,幫助學生明確利用循環結構可以簡化代碼,高效地完成五角星繪制。
這一類型的失敗,因結果無誤,學生無法即時發現失敗,所以是隱性的失敗。針對這種失敗,學習支架可以是探究性活動表,通過設計相應表格,聚焦學生的注意力,通過活動表的信息,引導學生發現失敗。還可以通過前后代碼對比分析等活動,幫助學生明確失敗的原因,進而形成正確的認識,實現對新知的學習。在此過程中,需要根據實際情況適時增加協作支架,通過學生間的協作,共同發現問題,減少學生的認知負擔。
例如,在《讓機器人更聰明——做出判斷的分支》一課的教學過程中,在學生設計防疫模塊的溫度比較運算活動時,教師使用int()函數對input()函數接受的string類型數據強制轉換為整型數據。在開展活動時,當學生輸入整數的溫度時結果是正確的,但如果輸入小數的溫度就會報錯,所以筆者設計了活動記錄表,以情境支架引導學生進行算法測試,并提供int()、string()函數說明等學案資料,使學生在體驗比較運算符的同時遭遇新的“失敗”,并引導學生將注意力集中在“導致失敗的原因是什么?如何解決?”等問題上,不讓學生過分遭遇失敗,有效引導學生學習發生。
教學設計片段:
師:Python非常貼心,為我們設計了range()函數,它可以直接生成一組連續增加的數字,構建for循環的迭代列表。[學生打開執行learn2.py,如圖2所示,體驗for-in語句執行過程和結果。教師展示講授執行過程,以及range(start,end,step)語法]

圖2
請同學們嘗試用range()函數輸出2到10之間的偶數。(學生嘗試輸出五個偶數,并分析失敗原因,討論“顧前不顧后”、步長的含義,如圖3所示)

圖3
本案例是《繁花曲線——周而復始的循環》一課的教學片段,重點是理解range()函數的應用,探究語法的特征和作用。在設計時,充分利用range()函數使用過程中可能出現的問題,如學生對函數的參數理解不到位、設置不當,導致無法成功輸出2到10之間的偶數。這里的失敗屬于參數等細節處理不到位導致結果有誤或者有偏差,失敗有顯性的失敗結果和特征。針對這一類型失敗的場景,可以使用問題鏈式的學習支架,引導學生開展獨立探究活動,通過對比分析,使學生聚焦于認知沖突和引起失敗的原因,引發思考。同時,還可以使用協作學習支架,學生互助解決“失敗”,從而促進學習的發生,最后教師總結,幫助學生更好地理解知識點,加深印象。
再如,在《數據的計算》一課的教學過程中,由于分類匯總的操作是初中的技能要求,隨著時間的推移,學生對分類匯總操作要先排列這一知識點已經遺忘或者模糊,在這種情況下,教學中可以故意設置陷阱,提供亂序的數據表,學生根據現有模糊知識儲備來解決問題,必然導致失敗。教師以此問題為契機,讓學生自主探索或小組合作探索出錯的原因,最后提示分類匯總也稱“分類后匯總”。這樣,通過比較、協作等支架,學生能深刻理解分類匯總前排序的作用和意義。
教學設計片段:
活動一:編寫防疫機器人“小江”的聊天模塊。
師:剛剛我們已經實現了最簡單的人機對話(如圖4),請大家思考一下,我們是如何獲取用戶的姓名信息,并輸出姓名進行對話的?(學生回答)這里有一個關鍵點,就是變量name。(教師講解變量的定義、命名規則、賦值等)恭喜大家,完成了“小江”的第一個功能模塊,但有同學在調試程序時發現了一個Bug,無論輸入什么信息,小江都是同樣的回答,好像智能機器人“小江”不是那么智能,這主要是因為“小江”還沒有判斷的能力,正如我們今天的課題一樣,判斷分支讓機器人更聰明,期待同學們運用本節課判斷分支等知識改進“小江”2.0智能升級版。

圖4
在《讓機器人更聰明——做出判斷的分支》一課的教學設計中,筆者以探究防疫機器人“小江”的設計為主線,將課堂情境化教學與生活化教學相融合,用“小江”的幾個功能模塊探究活動串起整個課堂,采用精準定位、螺旋上升的學習方式。將教學活動置于現實的生活背景之中,激發了學生作為生活主體參與活動的強烈愿望。但是,設計一個現實生活中的防疫機器人,即便是僅僅探究防疫機器人相關算法也是不可能的事,失敗是必然的。這種“失敗”表現為課堂活動成功,但體驗上感覺“失敗”。針對此類問題,筆者的設計思路是關注學生的興趣點和本課的知識難點,設計一個有一定挑戰性和激勵性的任務,用一次似乎不完美的“失敗”體驗,完成新知識的學習,通過互動式教學支架,讓學生明白理性的判斷是建立在理性的認識基礎上的,點燃學生進一步學習知識和知識遷移的主動性,以達成學習和發展的目的,并使情操得到真正的陶冶。
綜上所述,教學中可通過教學設計,引發學生的認知沖突,使其遭遇失敗,教師則根據不同的失敗場景,針對性地提供學習支架,為學生提供幫助,在學生解決當下問題后撤去幫助,實現概念轉變和方案優化,將學習主動權逐步轉移給學生,從而促進學習的發生。在具體教學中,如何選擇合適的學習支架展開教學,需要結合失敗的場景和學情分析,了解學生已有的學習經驗和生活經驗。同時,教師需要注意根據實際問題提供新的支架,既不讓學生過分遭遇失敗,也不讓學生直接獲得解決策略,有效引導學生的學習發生與思維發展。