0 引言
《普通高中信息技術課程標準(2017年版2020年修訂)》將計算思維列為高中信息技術學科的核心素養之一,計算思維是指個體運用計算機科學領域的思想方法,在形成問題解決方案的過程中產生的一系列思維活動[1]。計算思維基本原理的教學指導意義在于提升了教學的抽象層次,將目前面向知識傳授的單一層次拓展為面向知識傳授、方法與思維培養的兩個層次,并解析兩個層次的內在辯證關系[2]。高中信息技術課程中的Python教學不僅僅是教授學生編程知識和技能,更重要的是要教會學生界定問題、分析問題、抽象思維和有效思考,不斷地挖掘問題,得出解決問題的算法,最終將解決問題的過程遷移到解決日常各類問題中去。筆者認為,這才是高中信息技術課程培養學生計算思維的根本目標。
1面向計算思維培養的高中Python教學設計模式實踐應用:以遞歸部分的教學為例
前期,筆者參考相關教學理論,結合自身的教學實踐,以培養高中生計算思維為導向,構建面向計算思維培養的高中Python教學設計模式(以下簡稱模式)。該模式大體分為課程導入、課程實施、課程總結與評價三個模塊。整體教學設計模式如圖1所示。
筆者嘗試將該模式應用于教育科學出版社普通高中教科書《信息技術必修1數據與計算》遞歸部分的教學實踐,驗證該模式能否有效培養學生的計算思維,從而促進高質量編程教學。
1.1 前期分析
1.1.1 學習內容分析
本研究的授課內容選自教育科學出版社普通高中教科書《信息技術必修1數據與計算》第四章“計算與問題解決”的第三節“非數值計算—遞歸”。這節內容的學習目標是:1)體驗遞歸算法,并結合具體問題開展編程實踐;2)運用合適的算法形成解決問題的方案。
1.1.2 學習者特征分析
本研究的實踐對象是蘇州市吳江區蘇州灣外國語學校高一(2)、高一(3)兩個班級的學生,這兩個班級差異性較小,是平行班級,其中高一(2)班為本次實踐研究的實驗班,高一(3)班為對照班,班級人數均為26人。本教學實驗利用正常的授課時間進行研究實踐,均由筆者擔任授課教師。兩個班的學生都已經學習了第二章的Python基礎知識,掌握了Python語法、程序設計結構、自定義函數相關內容,能夠閱讀和完善簡單程序,但缺乏對算法的系統學習。因此,他們需要進一步學習基礎的思維方式和算法,用“算法的眼睛”看待生活,用算法的思維去解決實際問題,進而理解計算的本質。
1.2 課程開展
本研究的兩個班級授課內容相同,授課過程各異。其中,實驗班的教學過程依據模式中課程導入、課程實施、課程總結與評價三個模塊展開,而對照班則采用傳統的講授法進行授課。
1.2.1實驗班的具體教學過程
1)課程導入。教師播放自制微視頻“小P學編程”,視頻呈現小P求解 [1,n] (n表示非零自然數)的連續數之和的過程,讓學生感知情境,喚醒意識。
2)課程實施。該過程可用“引”“思”“拓”三個關鍵字簡要概括。模式中教師活動部分的“有效提問,引出主題”對應“引”,“剖析問題,啟發思考”與“問題深化,適度變形”對應“思”,“同類拓展,問題遷移”對應“拓”。一系列的教師活動旨在引導學生明確學習目標,思考問題、分解問題、抽象處理問題,并將解決問題的過程與方法遷移到與之相關的問題解決中,幫助學生理解算法和提升計算思維。
① “引”表示導引、引問。教師圍繞視頻提問:“視頻中小P運用了哪些方法求解 [1,n] 的連續數之和?”學生結合已有知識總結出用循環結構求和(圖2)、用自定義函數求和(圖3)的方法。教師繼續提問:“兩個程序的寫法不一樣,其算法核心相同嗎?求和的算法本質是什么?”通過教師的啟發引問,學生逐步深入學習主題和課程任務。
圖1面向計算思維培養的高中Python教學設計模式

② “思”表示思考問題、直擊問題本質。學生經過思考與討論回答:“上述兩個程序的求和算法思路一樣,都是在已有項求和的基礎上重復累加后一個值。本質上而言,求解 [1,n] 的自然數和就是求解[1, n-1] 的連續數之和再加上 n 。”教師結合教學目標,進一步深化問題,繼續提問:“上述自定義函數的功能是什么?如何改寫自定義函數,實現求和算法的本質?”學生經過認真思考與討論,結合函數的功能分析,重新設計算法和修改代碼,最終以[1,n-1]的連續數之和加上 n 作為函數返回值(圖4)。然而,學生在運行程序時發現程序報錯,教師進行適當引導:“調用的參數一直在減少1,最終參數可能變為負數,符合題意嗎?”學生經過思考和討論,增加“回歸條件”,實現遞歸的合理退出(圖5)。教師結合學生的上述實踐過程,啟發學生歸納與理解“遞推”與“回歸”的過程,明晰遞歸的本質,學生進行完善并補充。

圖5完整的遞歸求和
③ “拓”表示拓展、延伸。當學生已經掌握了遞歸的核心知識點,并能結合具體問題開展編程實踐,教師進一步深化問題:“《棋盤放麥子》故事中,64個棋盤中總共有多少麥粒?\"學生需要舉一反三,分析實際問題,采用遞歸算法,編寫Python程序(圖6)。學生已經能根據具體應用問題正確寫出遞歸程序。教師作進一步拓展:“如何用之前學的迭代算法計算麥粒總數?”學生根據先前知識編寫代碼(圖7)。教師提出“分析遞歸與迭代的關系”,引導學生在面對具體問題時,要運用合理的算法形成解決問題的方案。

3)課程總結與評價。教師引導學生回顧解決問題的全過程,從聯系已有知識到剖析問題本質到全面理解算法到問題深化變形到拓展知識體系,學生學會在遇到類似問題時能學以致用。學生完成自我評價,從知識學習和計算思維兩個方面正確認識自我的學習效率和學習方法。
1.2.2對照班的具體教學過程
1)教師以“求解[1,n]連續自然數之和”導入新課。2)結合PPT課件,教師講授遞歸的定義,強調遞推關系式與回歸條件,學生體會算法。3)教師集中講解,演示遞歸求解 [1,n] 連續自然數之和的Python程序,學生練習編寫程序。4)教師講解遞歸求解階乘的問題。5)學生進行自我評價。


1.3 效果分析
實驗班與對照班采用相同的自我評價表(表1),從知識學習和計算思維兩個方面進行評價,結果如表2所示。
表2兩個班的評價情況統計

由表2數據可知,在各評價因素的達成度方面,實驗班均高于對照班。這表明,筆者構建的模式對培養高中生的計算思維是有效的。在實施教學實驗前,兩個班級的整體水平沒有顯著差異,但教學實驗實施后,實驗班的學生更注重分析和思考問題本質,能在理解知識后進行編程,并通過試錯發現新知,課堂參與度高,能很好地完成變式訓練,最終有意識地對自己解決問題的方案和過程進行評估。對照班的學生則更多地關注教師的演示與代碼,思維存在惰性,課堂上回答問題也不是很積極。
2 總結與反思

本研究構建的面向計算思維培養的高中Python課程教學設計模式從課程導入、課程實施、課程總結與評價三個模塊,將培養高中生計算思維的方法與途徑融入日常編程教學。學生通過問題驅動的學習方式,將知識的建構與思維的發展融入運用Python解決實際問題的過程,這有助于其提升計算思維能力。但是該研究還存在以下幾點問題。
表1自我評價表

1)缺乏前測實驗。實驗中的兩個班級是平行班級,做前測實驗可以更好地通過數據檢測兩個班級的計算思維是否真正處于同一水平、學生實際的計算思維水平是否相當。如果實驗中增加前后測對比統計,實驗將更嚴謹。
2)樣本數量少。由于學校實行小班化教學,研究的測試樣本較少,難免存在一定誤差,所以在后續研究中需要擴大研究范圍,為教學設計普適研究提供更有力的數據支撐。
3 結束語
本文構建了面向計算思維培養的高中Python教學設計模式,并結合具體的教學案例對該模式進行應用與分析。筆者深知,對高中生計算思維的培養來說,編程技術只是外顯的工具,教師與學生的教與學邏輯和思維方法才是本質。希望本文構建的教學設計模式能夠在高中信息技術課堂上真正落地,有效提升學生的計算思維水平。
4參考文獻
[1]中華人民共和國教育部,普通高中信息技術課程標準(2017年版2020年修訂)[S].北京:人民教育出版社,2020.
[2]沈軍.基于計算思維的大學程序設計課程教材建設新思路[J].計算機教育,2019(7):29-32.