林國斌

摘 要:文章借鑒運用數學建模思想,以培養計算思維的六種子能力融入教學活動中,構建了基于發展計算思維的課堂教學模式,并以“枚舉算法”一課的教學為例,探討如何運用該模式進行教學的實施并提出相關建議。
關鍵詞:信息技術;計算思維;數學建模;教學模式;枚舉算法
一、 引言
《普通高中信息技術課程標準(2017年版)》明確把計算思維列入學科的核心素養。如何發展學生的計算思維值得一線教師進行更深入的教學實踐與探索。為此,筆者嘗試借鑒運用數學的建模思想,以培養計算思維的六種子能力融入課堂教學實踐中,尋找一種發展學生計算思維的有效教學模式。文章以教科版高中信息技術必修一4.1節中的“枚舉算法”教學為例,探討如何運用數學建模思想發展學生的計算思維。
二、 數學建模思想與計算思維
計算思維簡單的理解就是像計算機一樣處理和解決問題的思路和能力。計算思維主要可以劃分為如下六個子能力:問題形式化、抽象問題特征、建立結構模型、分析和組織數據、問題解決過程自動化、解決方案系統化。計算思維的本質是抽象和自動化,抽象是將真實世界中的事物或者解決問題的過程通過分解、簡化等方式轉化為計算機設備可處理的數學模型。可見,建立問題解決的模型,運用合理算法求解模型是培養計算思維的關鍵,而如何由抽象到建模到求解模型學生往往無從下手,這也是發展計算思維的難點。借鑒數學的建模思想,通過親歷數學的建模解模過程為解決學生計算思維的形成發展提供了可行的方案。
數學上的建模過程主要歷經:從實際問題入手,進行抽象、簡化、假設,建立數學模型、求解模型,進行模型評價改進。建模思想運用于教學過程可簡化為四個階段:①建立模型,主要是針對真實情境問題,抽象出問題的形式特征,建立可處理的數學模型;②求解模型,通過組織數據,設計算法,編程實現達到求解問題的自動化;③運用模型,遷移運用到類似問題,形成系統的解決方案;④模型迭代,針對運用問題,調整完善模型的求解算法,改進模型。圍繞這一建模流程,嘗試采用模型解決的思維方式,提出基于建模思想的教學模式,用以發展學生的計算思維。
三、 基于建模思想的計算思維培養教學模式
運用建模思想結合計算思維培養的六個子能力,構建基于發展計算思維的教學模式(圖1)。該模式以建模流程為主線,以培養學生的計算思維能力為目標,進行教學活動設計。在教學中,教師作為主導為學生提供“腳手架”,引導學生進行自主探究學習,建構知識。學生充分扮演教學主體的角色,在歷經計算思維六個子能力的訓練中,提升和內化學生的計算思維。
圖1 建模思想的計算思維教學模式
四、 基于建模思想的計算思維培養的教學實施
根據上述的教學模式,在“枚舉算法”這一課中,采用“尋找逃逸車輛”這一項目主題,設置相關教學任務,以落實計算思維的培養。
(一)創設情境,呈現問題
【情境】播放《明星大偵探》節目片段引入新課,《明星大偵探》欄目組要來尋找班級偵破推理高手,給大家提出考核任務——“尋找逃逸車輛”。要求學生4人為一小組,組隊參賽。考核任務相關線索及要求放置在一個密碼為1位小寫字母的壓縮包里,請證明你的實力,盡快破解密碼拿到考核任務。在學生順利完成密碼破解后,教師提問學生驗證了幾次密碼才破解成功?如果密碼是2位小寫字母,破解難度有多大?師生一起回顧破解的過程,與學生一起總結提煉出該問題的形式:列舉所有解+判斷正確解。演示計算機破解密碼的過程,引入枚舉算法學習課題。通過創設情境,以一個簡單的密碼破解問題,讓學生親歷枚舉法解決問題的基本思路,通過師生的一起歸納,實現了求解問題的形式化表達的思維能力。通過了解計算機破解密碼優越性,引發學生思考用計算機編程解決問題的必要性和意義。
(二)自主探究,建構模型
學生拿到“尋找逃逸車輛”案情:某地發生一起逃逸案,確定是當地車輛但車牌號后5位號碼不明,警察找到如下線索:①車牌后五位都是數字且后一位是6;②前兩位數字是72;③車牌后五位數字能被48整除。請為警察找出該車牌號。學生完成學案探究任務一——“為警察提供破案思路”。學生對關鍵線索進行分析,引導學生用自然語言來描述三個關鍵線索,明確枚舉求解車牌號碼的三個關鍵點:枚舉對象、枚舉范圍、枚舉驗證條件,讓學生抽象出尋找逃逸車牌號碼問題的特征,即求一個五位數:72??6,滿足被48整除的所有數字這一問題特征。引導學生進一步思考車牌號的枚舉范圍和檢驗方式,繪制流程圖,描述出、找出所有符合的車號牌的算法,為建立求解枚舉算法的數學模型奠定基礎。完成流程圖后,梳理出問題解決的邏輯過程,自主建構枚舉算法解決問題的一般數學模型:枚舉解+篩選解+輸出解。引導學生實現抽象問題特征并建立模型的計算思維能力。
(三)求解模型,解決問題
學生自主建構枚舉算法的求解模型后,完成考核任務二——“編程找出可能的車牌號”。提出探究任務:①分析算法求解過程中運用幾個變量,他們的初值和終值分別是多少?②編程找出所有車牌號需要運用什么程序結構?③判斷符合條件,運用什么程序結構,判斷的表達式是什么?④如何枚舉72??6中間的兩個未知數,直接用Range(72006,72996)實現枚舉行不行?小組成員分工協作一起完成半成品“找出車牌號.py”的代碼,并在OJ平臺上調試運行,測試結果。教師提供微課視頻資源并全程巡視,幫助學生發現代碼編寫過程中的錯誤,并及時指導。學生通過分析組織數據、學習微課視頻等完善半成品代碼,實現找出車牌號碼問題算法,求解出枚舉算法模型為:枚舉解(循環語句)+篩選解(條件語句)+輸出解(或統計解的個數),培養學生由組織分析數據到模型解決問題過程自動化的計算思維能力。
(四)運用模型,遷移提升
學生通過程序驗證,找到四個車牌號,繼續完成考核任務三——“找出誰是逃逸者”根據警察的線索:逃逸者確定是A、B、C、D四個車牌號車主,經過審問,A說:“不是我。”B說:“是C。”C說:“是D。”D說:“C說得不對。”已知四人中只有一人說的是假話。請幫警察找出真正的肇事者。提出探究任務:1. 判斷“誰是肇事者”的枚舉對象、枚舉范圍、驗證條件分別是什么?2. 用1(表示真)、0(表示假)填寫《四車主真假話對照》。3. 四人中只有一人說的是假話,以上表格中數值相加為多少?如何用程序語句表達這個判斷?教師講解:邏輯運算表達式的書寫。引導學生思考如何書寫判斷誰是冠軍的表達式。之后讓學生完成“求解誰是肇事者.py”的關鍵語句代碼,并在OJ平臺上調試運行,測試結果。讓學生學會遷移解決其他同類型的問題,實現思維方法的遷移延伸,從而形成解決方案的系統化的計算思維能力。并在解決類似問題的過程中,學會分析問題的共性與特性,提升計算思維品質。