甘肅省天水市電教館(741008) 李彥賓 甘肅省天水市秦安縣第一中學(271000) 魏鵬飛
高中信息技術課程是一門旨在提升學生信息素養、幫助學生發展思維能力的基礎性學科,新課標理念下信息技術課程呈現綜合性強、涉獵范圍廣、操作實踐要求高等特點。新課標立足核心素養,重視學生問題解決能力及計算思維能力的培養。學科大概念視角下育人目標發生轉變,由注重知識的學習轉向能力的培養。在此背景下,傳統編程教學已無法滿足新課程發展要求,具體表現為授課形式單一、課程內容陳舊、學科融合度不夠、學生參與度不高等問題,這種缺乏學生自主探究的編程教學,不利于學生計算思維能力的養成。Python實驗教學基于真實問題解決,教學內容指向多學科融合,是連接技術與素養的重要橋梁,是重構知識內化能力的重要樞紐,也是滲透學科知識、發展計算思維的重要手段。實踐證明,基于跨學科整合下的Python實驗教學授課形式多樣、教學內容新穎、跨學科整合度高、學生學習積極性強,更加有利于學生計算思維的提升,有利于學生創新意識和實踐能力的培養。
Python實驗教學是指在編程教學時,利用實驗教學的原理和章程開展教學活動,課堂教學以學生為中心,教師更多的是以“教練員”的身份出現,是課堂的組織者、引導者和幫助者,學生以小組為單位通過創設實驗條件控制實驗過程,引起實驗數據的變化以預測事物發展變化的趨勢或模擬跨學科中難以理解的學科知識。教學活動以現實情境中跨學科問題為任務切入點,以Python編程環境為實驗探究工具,以數據可視化或驗證實驗假設為探究目的。教學過程歷經創設實驗情境、提出探究假設、學生自主探究、數據可視化或驗證探究假設等過程,以實現知識的重構及遷移,例如:將Pyhton編程與數學、物理、化學、生物等學科進行整合,可直觀呈現學科數據,不僅增加了編程的趣味性,還加深了學生對學科知識的理解和掌握。
計算思維是指個體在運用計算機科學領域的思想方法形成問題解決方案的過程中產生的一系列思維活動。具備計算思維的學生,能夠采用計算機可以處理的方式界定問題、抽象特征、建立結構模型、合理組織數據;通過判斷、分析和綜合各種信息資源,運用合理的算法形成解決問題的方案;總結利用計算機解決問題的過程和方法,并遷移到與之相關的其他問題解決中[1]。用編程的思想理解計算思維,可將其劃分為問題分解、問題抽象、設計算法、方案評估、問題遷移五大要素框架:①分解:是指將問題涉及的數據或過程進行拆分,界定關鍵問題,制定初步解決步驟;②抽象:模式識別形成背后的一般原理,能夠過濾細節,抽取現象的本質,建立模型;③算法:為問題解決制定的步驟與規則并編程實現,整合資源,制定、細化問題解決方案;④評估:思考解決方案的適用性,不斷修正和改進直到最優,評估問題解決效率;⑤遷移:總結問題解決的過程與方法,運用到相關問題的解決中。
傳統的編程教學主要采用單向灌輸、被動接受的教學模式,課堂形式單一,授課內容以學科知識為主。其優勢在于學生可在短期內對知識進行快速掌握,缺陷在于學生習得知識是零散的,不成體系的,當面臨解決現實情境中真實的復雜的問題時,不利于知識的遷移與活用。
傳統的編程教學授課內容基本局限于本學科知識,跨學科知識較少。課程教學主要以教授基本語法和基本算法為主,教師習慣采用傳統經典案例作為教學示例,例如:通過計算圓的面積來講解程序的順序結構、變量及基本語法規則等;通過判斷一個三位數是否為水仙花數來講解枚舉算法等。教學內容面向知識本身,雖然有助于傳統意義上的應試教育,但是這種缺乏趣味性、探究性及交互性的編程教學,不利于學生知識的重構與遷移,不利于學生計算思維能力的提升。
興趣是最好的老師。課堂教學能最大限度激發學生學習興趣及積極性,是課堂教學成功的一半?,F階段的編程教學課堂形式單一、缺乏探究性、內容陳舊,久而久之,學生的積極性不高,會產生厭學情緒。
教學評價是對學生學習效果的檢驗,新課標注重學生的學習態度、自主探究能力及協作探究能力等體現學習過程的階段性評價要素。受傳統教學內容、教師觀念等因素的影響,傳統編程教學評價偏向于總結性評價,缺少多元化的過程性評價,不利于學生自主學習能力的養成性培養。
計算思維是信息技術學科核心素養中最為重要的組成部分,直接影響著學生問題解決能力的培養。新課標倡導通過跨學科主題培養學生的計算思維能力及問題解決能力,編程教育是落實新課標跨學科主題的有效方式之一,也是信息技術課程可持續發展的關鍵要素。同時,新課標要求課程要從“技術本位”轉變為“科技并重”,側重學生信息素養的提升,實驗是連接技術與素養的重要橋梁。Python實驗教學既有編程的知識體系又有實驗的探究性過程,通過解決跨學科問題達成素養目標,全面培養學生自主學習、自主創新、合作探究的核心素養,為培養學生具備終身學習能力與創新能力奠定基礎。
Python實驗教學在很多方面都超越傳統的編程教學,其形式更加豐富多樣,技術手段更具時代特點,是數字化背景下創新信息技術課堂教學的先行者。Python實驗教學幫助學生直觀深入地理解學科原理、技術以及工程思維,拓展教師的評價維度。信息技術學科特點要求學生既動腦也動手,實驗教學增加過程性評價比重,通過發現問題、制定方案、解決問題、得出結論等一系列探究過程,培養學生高階思維能力,促進核心素養落地。
數字化學習與創新能力是信息技術新課標定義的學科核心素養之一,課標要求根據實際需求,選擇恰當的數字化工具開展自主或協作學習,創造性地解決問題。Python實驗教學具有真實的問題解決、跨學科整合、任務驅動、探究學習及知識的重構與遷移等特點,與數字化學習與創新核心素養的育人價值高度一致,是落實數字化學習與創新能力核心素養的著眼點和重要抓手。Python實驗教學區別于傳統意義上的分科實驗教學,內容更豐富、形式更多樣、主題更具跨學科性。所以,在課程教學中教師應該打破信息技術與數學、物理、化學等學科間的壁壘,充分發揮信息技術的優勢,促進多學科融合,引導學生選擇諸如Python編程軟件、虛擬仿真軟件、在線模擬軟件等數字化工具進行數據采集、分析、建模、得出結論、驗證假設,讓學生真實體會知識的獲取過程,掌握科學研究的一般方法。
Python實驗情境的創設應遵循開放性、探究性及科學性原則,創設情境是Python實驗教學的首要環節,也是尤為重要的環節之一。實驗情境應來源于學生日常生活中真實的復雜性問題,亦能和學科知識建立聯系。以“投骰子”為例,投骰子是學生日常生活中常見的趣味性游戲,很容易激發起學生的學習興趣,投骰子背后的科學問題是隨機事件,又能與數學知識建立聯系。
Python實驗教學注重學生的探究體驗,讓學生歷經問題探究的整個過程顯得尤為重要,通過在線模擬體驗投骰子的整個過程,可讓學生初步了解實驗探究的基本步驟及背后的科學原理,為后續利用Pyhton編程設計算法模擬該過程做鋪墊。在課程教學中教師事先準備好“投骰子”在線模擬軟件的鏈接并于課前發送至學生端,學生以小組為單位,在教師的引導下打開模擬軟件開始模擬實驗。每個小組投擲1枚骰子12次,并記錄每次投擲出現的點數,實驗結束后填寫“點數標記與概率統計表”,統計表的行表示骰子的點數1~6,列表示投擲的次數1~12,行和列的交叉處表示某一次投擲出現的點數并通過畫圓做標記,最后通過出現的點數和除以投擲總數計算出各點出現的概率,其點數標記及概率統計表見表1。

表1 點數標記及概率統計表
教師引導學生分析表1中的實驗數據,得出如下結論:在投擲次數有限的情境下,每次出現的點數都是隨機的,各點出現概率值相差不大。上述實驗是在投擲次數較少的情況下出現的實驗結果,那么隨著投擲總次數的逐漸增加,各點出現的概率是否趨于相同?當投擲總次數增加至幾千甚至幾萬時,如何開展實驗?教師通過第1個設問引發學生的深度思考,引導學生提出探究假設,隨著投擲總次數的逐漸增加,各點出現的次數趨于相等,并接近某個確定值。教師通過第2個設問引導學生認識到人工解決復雜性問題的局限性,并指出利用計算機程序解決問題的方便和快捷。
利用Python模擬“投骰子”的過程,是開展Python實驗探究的首要環節,也是后續實驗數據的重要來源,該階段的探究要用到Python的內置庫Random,這部分內容是學生的知識盲區,需要教師提供相關的學習支架。其內容主要包括:①random.random()函數:隨機產生一個0~1之間的浮點數;②random.randint(a,b):隨機產生一個a~b(包括a和b)之間的一個整數。為了加深學生的理解,教師可選擇一兩個教學案例,就random庫的用法做針對性的講解,為學生進行自主探究掃清知識上的盲區。
通過前面的實驗環節,學生對“投骰子”的實驗過程已經有了較為深入的理解。如何通過建立數學模型將手動實驗轉化為計算機自動實驗,進行思維的遷移是培養學生計算思維能力的重要環節。通過抽象建模,投擲骰子可以遷移至數學問題隨機數;由于投擲次數較多,出現的點數情況也較復雜,需要定義一個變量用來存儲多個數據,學生很容易聯想到前面學習過的列表數據類型,所以記錄數據可遷移至Python中的列表;計算概率可以遷移至數學知識c=p/n(c代表概率,p代表各點出現的次數和,n代表骰子總數)。在該階段的教學中,為了增加學習的趣味性,教師可通過數據的可視化真實還原投骰子的過程,即:通過程序自動標記每次投擲出現的點數情況。在該階段的教學中要用到Python數據可視化第三方庫matplotlib,這部分內容在第2章“知識與數字化學習”中學生已經接觸過,教師只需要引導學生建立數據域,matplotlib庫就會自動繪制出投點圖,當投擲總數為100,用x軸表示投擲次數,用y軸表示出現的點數標記,點數軌跡圖如圖1所示。

圖1 骰子出現的點數軌跡圖
程序編寫采用面向對象設計思維,通過函數將各模塊功能進行封裝,模擬投擲通過roll()函數實現,存儲點數通過 Record_points()函數實現,計算概率通過Calculate_probability()函數實現。編程的難點在于各點出現次數的累計上,在實際授課過程中發現學生會選擇建立2個列表來分別存儲骰子的點數值和出現點數累計值,用這種方式解決問題無可厚非,但是為了體現算法的高效性,這種算法并不是最優的,教師需要引導學生對算法進行優化。通過認真分析會發現列表的下標與骰子的點數值之間有著天然的對應關系,有了這種對應關系,就可以通過定義一個列表來同時存儲骰子的點數值和各點出現次數的累計值(如圖2)。

圖2 編程截圖
組織學生運行程序,分別輸入投擲點數為100、1 000、10 000,查看程序執行結果,填寫概率統計表,統計表的列表示投擲總次數,行表示骰子的點數值,行和列的交叉處表示各點出現的概率值。分析實驗數據,得出實驗結論,隨著投擲點數的逐漸增加,各點出現的概率趨于相同,接近固定值1/6,從而驗證實驗假設成立,概率統計表見表2。

表2 概率統計表
文章圍繞高中信息技術新課程標準學科核心素養“計算思維”的培養展開討論,首先對Python實驗教學、計算思維的概念進行了界定,然后討論了傳統編程教學在培養高中生計算思維能力上存在著授課形式單一、課程內容陳舊、學生參與度不高、過程性評價缺失等問題,接著深度探討了Python實驗教學的價值和意義,最后以真實情境“投骰子”為教學案例,通過“創設學科情境,激發探究欲望”“在線模擬實驗,統計實驗結果”“分析實驗數據,提出探究假設”“教師提供學習支架,掃清實驗盲區”“拓展遷移思維,建立數學模型”“程序編寫,解決問題”“運行程序,驗證實驗假設”等7個環節的教學過程,介紹了具體的教學方法, 以期為一線信息技術教師開展Pyhton實驗教學,滲透計算思維,落實核心素養提供借鑒。