崔艷麗 李宇翔



課程核心素養目標
①結合數據信息情境觀察并識別均勻、正態和冪律三種數據分布形態。(信息意識)
②分析信息情境,提取問題關鍵特征,用適當的數據結構進行抽象建模,設計合理算法繼而編程解決。(計算思維)
③在學習過程中,評估數字化學習資源并根據需要合理選擇。(數字化學習與創新)
④在用程序解決問題的過程中熟悉列表、列表遍歷,區分循環和分支適用的問題情境。(計算思維)
⑤通過課堂實踐和數據實驗,直觀感受計算機強大算力對數據處理的價值。(計算思維、信息社會責任)
學業要求
《普通高中信息技術課程標準(2017年版)》中關于必修《模塊1 數據與算法》中的內容要求是:“1.7 掌握一種程序設計語言的基本知識,使用程序設計語言實現簡單算法。通過解決實際問題,體驗程序設計的基本流程,感受算法的效率,掌握程序調試與運行的方法?!?/p>
教學內容分析
本教學案例是“用程序進行數據模擬”單元教學的第2課時。單元總體設計思路是緊扣“數據、算法”的學科大概念,以用程序解決問題的基本知識和能力為主線,包含呈遞進關系的4個課時,如圖1所示。
學情分析
本單元的教學對象是高一學生,他們每周有一次信息技術課,兩節連堂進行,因此筆者嘗試設計微型項目和單元教學,在同一主題下,使每周的學習內容相對完整而又逐層推進。他們大都對信息技術課有興趣,并初步具備良好的邏輯推導和問題解決能力,愿意主動思考問題,有較好的自學習慣,能根據需要查閱資料支持學習過程。學生已經掌握程序的一些基礎知識,能理解并基本正確使用三種程序結構,初步學習過列表和字典數據類型,對函數封裝有一定了解,對程序解決問題的過程有一定認識。但面對復雜信息情境,他們無法將學過的知識有效整合來抽象建模設計算法并編程解決。
教學難點
①針對復雜的數據模擬情境,提取問題關鍵特征,繼而確立數據結構與算法編程模擬。
②列表遍歷(列表中元素的逐一讀取及修改)的方法。
③循環和分支適用的不同情況。
教學過程
1.明確單元主題
通過單元第1課時的學習,學生對程序模擬問題情境預估結果有了一定認識。本節課從計算機發明的最初目的(完成大量復雜的計算)說起,提示學生計算機幫助人類解決了很多人力難以解決的問題,途徑之一就是用計算機為現實問題甚至假想問題建模,通過改變一些變量值和條件,借助計算機的強大算力來進行研究預測。繼而明確本單元主題:結合問題用計算機程序進行數據模擬。
2.提出本節課的問題情境,引發懸念
利用計算機教室的局域網環境,筆者在課前設計了問題情境瀏覽網頁和預估結果投票網頁。問題情境來源于一個與經濟學相關的模擬人類財富流動的項目,項目所得的結論是人類財富經過多次即使接近于均等機會的分配后總是會出現所謂的馬太效應。為貼合單元設計主題和實際教學情況,筆者對項目進行改良,將情境預設為學生感興趣的游戲平臺(如圖2),并以網頁形式發布,要求學生先閱讀分析問題并進行預測,同時以在線投票方式迅速反饋學生預測結果,引發課堂懸念。該問題的復雜度,使得學生無法靠現有的數學知識推導結論,凸顯了程序解決問題的必要性。
3.師生討論,明晰問題,抽象建模,確立算法
在完成問題瀏覽和結果預測后,結合問題情境,師生共同討論后提取問題關鍵信息“每啟動一輪分配機制,會依次讓每個成員拿出1個能量值隨機贈送給其他成員”?;诖耍龑W生結合程序知識進行抽象建模及算法思路的梳理。這個教學環節至關重要,明確清晰的分析對學生的實踐過程起到決定性作用。因此,筆者借助表1所示的問題串,以師生討論的方式,突破問題情境和算法與程序之間的屏障。
4.學生實踐環節
受課堂教學的多種客觀因素制約,再清晰的思路引導都可能無法幫助學生克服因語法代碼不熟悉導致的學習障礙。筆者認為,突破此學習難點可采用以下教學方法:其一,提供條理清晰的學習資料,供學生有疑問時查詢使用;其二,請學生以代碼接力的方式在教師電腦上合作完成。代碼接力活動順利進行的前提是課前要對問題科學分析,課上進行思路明晰,并輔以代碼提示。下頁圖3所示是本節課的思路引導和代碼簡要提示。
在實踐過程中,筆者隨時觀察學生的完成狀況,并設計了如下頁表2所示的五個接力環節,其中學生3和學生4完成的是本節的程序難點。參與課堂代碼接力活動的學生既需明了自己要完成的部分,也要理解之前的代碼,這除了能幫助他們更好地把握程序,還起到了很好的同伴示范作用,一定程度上實現了協作式學習。
以學生3完成的難點為例,在實際上課時,參與接力的學生所編的程序片段如圖4所示,這顯然不符合情境要求。突破該難點的方式是結合之前所學的抽取不重復學號的問題,輔以如圖5所示的流程圖引導。
課堂中的問題五花八門,作為一個實踐導向明顯的學科,再精心的設計也無法完全幫助學生實現舊知和新問題情境的準確鏈接。因此需要教師靈活把握課堂節奏,用課堂生成性問題來動態推進學習進程。例如,在編程實踐中,有一個學生所編的代碼片段如圖6所示,執行結果顯示,輸出的數據是呈正態分布的。教師用此代碼與學生討論了兩個問題:①while條件是否能保證贈予的是其他人?②如果某成員的能量值變成0,其暫時不參與贈送在程序中有體現嗎?此前,學生已經弄清楚了程序如何體現贈送的含義,經過討論,學生修改和完善了代碼,輸出了如下頁圖7所示的直方圖。
5.以立體式課堂總結串聯前后學習內容
課堂總結環節分為三個層面:知識總結、拓展思考和項目展望。知識總結是引導學生對本節用到的知識進行提煉,同時是對算法與程序實現的主要基礎知識的回顧。拓展思考部分會提示學生改變程序中的關鍵變量,觀察輸出結果的變化并分析原因。項目展望是對單元后兩課時的項目——基于數據模擬探究乒乓球賽制做簡要說明和展望,希望學生能做相關思考。
教學反思
筆者設計這個單元教學的初衷是既希望能夠聚焦計算思維的提升,緊扣數據與計算的學科大概念,又希望能貼合大部分學生的實際能力和教學的基本情況。同時筆者還考慮在學完必修1中關于算法與程序實現的基礎知識后,除了按照教材上的思路進行詞頻分析外,有無可能設計一系列的問題情境,帶領學生更深層次理解計算機程序解決問題的方法,同時承接后續的數據處理單元。在明確單元教學目標后,筆者以《計算機模擬》作為單元課程開發的主體內容,通過用程序模擬一系列具體問題下的數據,將計算思維的形式化(如抽象出算法解決問題的一般過程)、模型化(如用結構化程序表示算法)、自動化特征滲透到課程內容中。單元設計路線是從生活實例出發,結合學生基本情況和學習興趣,逐漸延伸到數據模擬實驗。單元學習的歸并路徑是對問題情境關鍵信息的提取,抽象量化問題的核心特征,繼而確立算法和數據結構編程解決。貫穿單元的教學策略是合作式學習策略。
在完成教學實踐后,筆者也發現了其中的不足:①課堂教學進行了明確的算法思路引導,但事實上程序解決同樣問題的算法常常不唯一。②該單元部分問題情境顯得真實性不夠,是否引發了學生的深度學習值得商榷,同時也沒能充分關聯學科的前沿知識。筆者希望能在后續的數據處理學習中開展小組合作式的基于真實數據的項目式學習,對這些問題進行彌補和改進。
點? 評
《普通高中信息技術課程標準(2017年版)》提出了學科大概念和學科核心素養,并建議以項目教學方式設計單元教學,最終實現提升學生學科核心素養的目標。
從整體內容安排看,在本教學案例中教師充分考慮學生基本情況,并根據課時安排特點設計了單元的教學內容,不拘泥于整體單元項目,而是利用可在連續課時中完成的、層次遞進的、學生熟悉的情境中的若干問題展開,從而達成單元教學目標。這使得單元內容既圍繞一個直接指向學科大概念和學科核心素養的核心主題,又便于教學實施,并且使學生的學科素養水平達到遞進提升的目標。
從單元教學邏輯看,本教學案例聚焦計算思維培養,設計了一連串學生力所能及的程序模擬情境,從簡單有趣的概率問題開始,明確計算機模擬的意義,繼而創設了一個相對復雜的問題情境,完成思維建構,在此基礎上引入實踐中真實情境下的程序模擬。在微觀問題解決的過程中映射宏觀的學科大概念和思維特點,實現了問題與程序的有機鏈接,能夠促進學習的高通路遷移。在復雜度逐漸提升的問題解決過程中持續引領學生理解計算機模擬的基本要點,包括明晰問題的關鍵特征、建立模型、明確問題的算法和數據結構等等。學生經歷了從具體問題到抽象原理再到具體問題的學習過程,逐漸形成持續性的理解,實現計算思維的提升。
從教學實施策略看,在本教學案例中教師采用多種教學策略助力學生突破學習難點。首先,在關鍵核心問題的分析上通過精心設計問題鏈,以提問及追問的方式引導學生思考,突破算法設計的難點。其次,在編程實踐中,尊重學生個體差異,設計“編程接力”環節,由多位學生合力完成編程任務,既幫助學生樹立信心,又鍛煉其協作意識及能力,突破編程驗證算法的難點。最后,在學生學習的全過程中,教師提供較為全面的學習資源作為學習支架,助力學生個性化自主學習,突破學生個性化學習難點。
(點評人:北京市東城區教育科學研究院信息技術教研員 李宇翔)