劉安寧



【摘 要】在編程教學中,學生會出現各種錯誤,教師要以此為契機,采用編程糾錯教學策略促進學生學科核心素養的發展。教師首先要充分意識到程序設計過程中糾錯能力與學科核心素養之間密切的關系;其次要深究學生編程中出現錯誤的根源;最后要采用有效的糾錯策略提高學生的糾錯能力。
【關鍵詞】編程糾錯;教學策略;核心素養
【中圖分類號】G434? ?【文獻標識碼】B
【論文編號】1671-7384(2024)02、03-100-03
2017年7月,國務院發布的《新一代人工智能發展規劃的通知》促進了程序設計語言在中小學教育普及。圍繞編程教學,近年來衍生出很多卓有成效的研究成果,涵蓋教學模式、課堂改革、教學實踐、學生發展等領域,但是目前缺少完善、系統、創新的編程糾錯教學策略研究。
編程糾錯教學策略是指在編程教育中采用特定的方法和技巧,幫助學生識別、理解和糾正在編程學習過程中出現的錯誤和問題。程序糾錯是編程教學中不可避免也不可缺少的環節,教師要充分發揮編程糾錯教學策略的潛力,助力學科核心素養的發展,需要從以下方面做起。
相互促進——厘清糾錯能力與核心素養關系
程序設計的本質是將人類形象思維轉化為計算機的抽象思維,在該過程中,可能會出現各種錯誤、非預期結果。糾錯能力即為發現、解決、更正這些問題的綜合能力。學生糾錯能力的提高能夠促進學生學科核心素養的發展,學生學科核心素養的發展又會反作用于學生糾錯能力,兩者相互促進,相輔相成(圖1)。
糾錯能力的提高能夠促進學生學科核心素養的發展。第一,促進信息意識的發展。糾錯需要學生對信息有強烈的靈敏性,學生要通過多途徑獲取信息、收集信息、篩選信息、分析信息、利用信息解決問題,樹立信息意識。第二,促進計算思維的發展。計算思維可以簡單表征為用計算機創造性解決問題的能力,解決錯誤的過程也是提高計算思維的過程。第三,促進數字化學習與創新能力的發展。糾錯過程中需要充分利用各種數字化學習工具,提高糾錯的效率,如利用檢索工具、論壇、博客、調試工具、英語翻譯工具、思維導圖、表格等,通過豐富解決問題的途徑和手段,促使學生多樣化的創造性學習發生。第四,促進信息社會責任感的生成。糾錯主體多元化,從單一的個人、師生糾錯到小組間、班級內共同糾錯,再到網絡求助或解答錯誤,增強了學生在信息世界的主人翁意識,培養了學生的信息責任。學科核心素養的發展又會促進糾錯能力的提高。當學生的學科核心素養得到較好的發展時,學生能夠更好地利用核心素養解決編程中的問題。
在編程教學中,有些教師往往忽略了程序糾錯的專項訓練和能力培訓,因為教師沒有意識到糾錯能力與學科核心素養之間密切的關系。因此,教師要在基于正確認識兩者關系前提下,在編程糾錯教學中抓住機會,恰當引導,精選策略,以促進學生學科核心素養的長遠發展。
探明癥狀——歸納學生編程錯誤類型及成因
根據學生能否自行解決問題,筆者將編程錯誤分為“無阻錯誤”和“有阻錯誤”。“無阻錯誤”是指學生能夠理解的錯誤,主要由粗心、疏忽等原因造成,通過錯誤提醒,學生能夠自行解決。此類錯誤不會對學生程序編寫形成阻力,學生已經習得相關問題的解決方案并內化了相關知識技能。“有阻錯誤”是指超出學生認知范圍的錯誤,即使程序給出了錯誤提示,學生依然不能理解,無法獨立解決問題。此時若沒有良好的糾錯策略,學生將無能為力,這是阻礙學生正確編程的重要因素。
針對“有阻錯誤”,教師需要結合學生無法解決錯誤的根本原因,為學生探索解決策略,將“有阻錯誤”轉化為“無阻錯誤”,其具體策略如下(圖2)。
第一類編程錯誤原因可歸結為語法等基本知識掌握不牢固。“無阻錯誤”發生的前提是學生已經掌握了基本的語法,能夠讀懂相關錯誤提醒,針對提示修改程序。教學實踐表明,編程初學者很難從容應對由于粗心而造成的錯誤,如使用了中文輸入法輸入字符、括號不匹配、關鍵字拼寫錯誤等。這些本應劃分到“無阻錯誤”的范疇,但由于初學者剛剛接觸編程,基礎知識和語法掌握不牢,對于程序的認識還處于“不知所以”的階段,因此這些錯誤被動成為“有阻錯誤”。但此階段持續時間較短,一般發生在程序設計課程的初期,經過反復訓練,學生能夠自動將此類錯誤轉化為“無阻錯誤”。
第二類錯誤原因是雖然語法已掌握,但是不能學以致用。學生掌握了基礎編程語法后,并不意味著能夠靈活應用。在實際編程中,常常出現以下現象:語法能夠記住,但使用起來卻錯誤百出。學生在語法的理解與應用之間存在較大偏差,究其根源,學生的學習停留在表象,沒有深入本質。布魯姆將認知領域的教學目標分為六個層次:識記、理解、應用、分析、綜合、評價。此時學生的學習處于前兩階段,因此造成學用割裂,當由淺層學習走向深度學習后,自然而然能達到后四層學習目標。
第三類錯誤是邏輯錯誤,產生原因是解決問題的思路出現偏差。邏輯錯誤沒有提示,因此程序順利運行后,還需要對運行結果的全面性和正確性進行檢查。修改邏輯錯誤對學生能力提出了更高的要求,不僅要求學生能夠改正錯誤,更要能發現錯誤。解決此類問題,首先調試是關鍵,如果發現不了錯誤,何談改正錯誤?其次,要培養學生的計算思維,提高學生算法設計能力,使之正確界定問題,全面考慮各種情況,建立健壯的算法模型。
明晰路徑——優化編程糾錯教學的基本策略
1.利用數字化工具,多渠道認識錯誤
筆者通過課堂觀察、師生交流和課下調查,發現學生面對錯誤提示時有兩類阻礙:一是無法讀懂英文提示的含義;二是英語提示能夠讀懂,但提示過于籠統,不知道如何進行改正。針對問題一,可以借助英語翻譯工具將英語翻譯成漢語,當查閱次數增多時,學生無意中就會記住關鍵單詞,從而讀懂表層含義。讀懂表意并不意味著就能解決問題,還要能夠理解其深層含義,知道同一種錯誤類型可能由哪些原因導致,即能解決問題二。
為了提高學生課上編程練習的效率,傳統教學中往往由教師直接告知學生錯誤原因,并指導學生改正錯誤。在該過程中,學生是知識的接受者,而非探究者,學生養成依賴外界解決問題的習慣,形成思維惰性。因此,要讓學生通過查閱資料,自主解決問題,讓學生在“發現—修正—調試”的迭代探索中糾錯。同一錯誤可能由多種原因導致,學生通過搜索引擎、網絡論壇、博客等路徑收集、辨別、篩選信息,獲取解決問題的潛在方法,利用自行獲取的知識不斷調試,直到修正錯誤、解決問題。該過程不是直線式的探究,而是螺旋上升的,每一次修改、調試錯誤都能夠給予學生啟發,無形中提高了學生的糾錯能力。學生利用豐富的數字化工具和資源,能夠全方位、多角度、深層次認識編程錯誤,探究解決問題的方法,促進信息意識的形成,養成自主學習的習慣。
2.形成糾錯記錄單,分類總結錯誤
糾錯記錄單主要針對代碼中有提示的錯誤,將程序編寫中遇到的錯誤按類型劃分、標注出錯誤提示和原因、記錄出錯語句、統計出錯頻次,形成學生糾錯檔案。糾錯記錄單的形式可以是表格、思維導圖等,只要能將關鍵要素清晰記錄下來即可。筆者給出了表格和思維導圖兩種記錄方式的示例(圖3)。
糾錯記錄單能促使深度學習發生。糾錯記錄單是學生在編程實踐中根據實際情況,自主解決問題后,對問題進行的總結、提煉和反思。學生經過一系列的主動學習和程序調試,學習在不知不覺中內化,深度學習已經發生。糾錯記錄單是學生的查詢手冊:學生常常會多次遇到相同的問題,但是信息技術課程間隔較長,學生容易遺忘。因此通過查詢糾錯記錄單,可以幫助學生快速解決類似錯誤,提高編程效率。糾錯記錄單助力學生個性化學習:不同錯誤的出現頻率在一定程度上反映了學習過程中潛在的問題和困難點,學生可以針對薄弱點進行個性化學習和練習。糾錯記錄單幫助教師優化教學過程:對教師來說,糾錯記錄單是反饋教學效果的一個重要依據,教師可以對班級所有學生的記錄單進行統計分析,據此來調整教學過程,突破重難點。
3.逐步調試,定位邏輯錯誤
編程常見的邏輯錯誤有:運算符使用不正確、語句的先后順序不對、條件語句的邊界值不正確、循環語句的初始值與終值有誤等。發生邏輯錯誤系統不會有提醒,因此需要程序設計者細心地閱讀程序、分析程序、調試程序。在進行程序調試時,測試數據的選取要有代表性、全面性,要特別注意特殊數據和邊界值。
以Python為例,常用的調試方法有三種:一是通過輸出函數輸出變量值進行驗證,方法簡單快捷,但是每次修改都需要重新運行程序;二是利用Debug工具進行斷點調試,圖形界面功能強大,使用簡單;三是通過pdb或ipdb等命令行進行調試,方便快捷,但需要記住相應指令及其功能,學生掌握起來有一定難度。綜合各種方法的優缺點和學生學情,筆者為學生介紹了前兩種方法。
4.培養計算思維,減少邏輯錯誤
在定位好邏輯錯誤后,還要能夠分析錯誤原因,進行錯誤修改。邏輯錯誤的本質是算法設計出現問題。算法設計與計算思維息息相關,要想從根本上解決問題,必須從培養學生的計算思維做起。
首先,在教學過程中,要以真實情境為背景,讓學生對實際問題進行界定、抽象特征、建立模型、設計算法,提高學生分析問題、解決問題的能力。其次,借助畫筆等工具繪制流程圖,加深學生對問題的整體理解和建構。再次,充分發揮學生的自主性和能動性。算法應該是在學生的交流探討中生成的,而不應由教師生成。當學生在算法設計過程中出現錯誤時,教師要循序善誘,引導學生逐步分析,獨立解決問題。最后,鼓勵學生進行發散思維,讓學生通過分享不同的算法設計思路,碰撞出思維的火花,提出多樣化的問題解決方案。
5.形成互助小組,創建良好氛圍
一個人的能力是有限的。教師要善于利用集體的力量,發揮集體的智慧,促進學習實現“1+1>2”的效果。在教學實踐中常常出現這種趣事:學生A的程序出現錯誤,苦思冥想半天仍然無法定位錯誤;學生B幫他檢查,找到錯誤后提示學生A,學生A恍然大悟,學生B成就感滿滿。
對于學生A來說,這個錯誤點常常不是因為他不會而找不到,而是由知覺的理解性和整體性決定的。大腦為了節省注意資源,在重復某些操作時(如重復閱讀相同內容),會從整體上去感知、理解,從而抑制了對個別成分(部分或細節)的知覺。對于學生B來說,閱讀他人的程序本身就是一種學習,能夠幫助同學修正錯誤,說明其知識和技能得到了內化,形成了自己的糾錯策略。另外,學生B通過幫助同學獲得了較強的自我效能感,擁有較強自我效能感的學生在面對困難和挑戰時,會更加努力、堅韌地迎接挑戰。
良好的學習心態在編程學習中至關重要,通過互助小組,形成積極向上的學習氛圍;同學間彼此“找茬”,既提高了學生的自我效能感,獲得了良好的學習體驗,又解放了教師,將課堂還給學生。
程序糾錯的過程不僅是迭代完善程序的過程,更是培養、提高批判思維和邏輯思維的過程,是發展、促進學生學科核心素養的過程。本文為編程糾錯教學提供了思路,以期通過恰當的編程糾錯策略,提高學生的自主糾錯能力,發展學生的學科核心素養。
作者單位:江蘇南京市高淳區淳輝高級中學
編? ?輯:馮安華