陳鵬
◆摘? 要:枚舉算法是計算機批量處理數據的重要方式,也是計算機效率遠超人力的體現,是python基礎課程中難度的一大跨度,同樣也是整個高中信息技術python算法的重要組成部分。枚舉算法中優化枚舉算法的策略,是計算思維的核心思想。本文主要研究基于理解性學學習的高中信息技術教學。第一部分簡要的從實際問題入手,介紹枚舉算法設計的一般過程、核心要素、優點缺點,理解和體驗枚舉算法的意義。第二部分是以實例演示并實踐分析枚舉算法,從解決實際問題的層面去理解和初步應用枚舉算法。第三部分是基于理解性教學的課程評價。本文主要基于理解性教學的教學理念,分享新教材枚舉算法教學的啟示和本次研究的創新之處。
◆關鍵詞:信息技術;理解性教學
在信息技術學習中,實踐無疑是最好的老師,為了提高實踐效率,必須先做好理解性教學。理解性教學是一種新興的教學方式,它反映了人們把所呈材料應用到新情境中的能力,其核心在于要求學習者根據已有的經驗或知識對新信息或知識的解釋、舉例、聯系、比較、建構等。目前,理解性教學的理論已經逐步成熟,但其中大部分理論與第一線的實際教學相脫節,缺乏可操作性。為此,我以《枚舉算法》這節課為例,對理解性教學在高中信息技術課堂中的應用進行了實踐探索。
《枚舉算法》是《python程序基礎》課程模塊的重要組成部分。本次教學案例運用“信息技術理解性教學模式”,在學習枚舉算法的同時,更加注重對學生理解能力和計算思維能力的培養。下面從教學目標、教學實施、教學評價方面來講述。
一、確定教學目標
根據信息技術新教材、新課標,結合普通高中學生的學情,我設計了以下教學目標:
1.認識枚舉算法的概念,歸納枚舉算法的三要素以及優缺點,能舉例說明枚舉算法在生活中的應用實例。
2.圍繞“馬克思手稿”這一主線,掌握枚舉算法求解問題的基本過程,掌握縮小枚舉范圍的優化思想。
3.通過用枚舉算法解決實際問題的實踐,培養學生的計算思維以及對信息技術學科的興趣。
針對以上的教學目標,本節課我們主要需要思考以下一些基本問題:
(1)什么生活案例可以直觀體現枚舉算法的核心價值?
(2)什么樣的學習活動能促進理解,循序漸進,深入理解?
(3)什么樣的實踐可以增進知識和技能,激發興趣?
我們預期學生將會理解:
(1)枚舉算法的基本結構、應用領域;
(2)算法的優化是無止境的;
(3)枚舉算法對日常生活來說真的很實用。
二、探索實踐理解性教學的教學設計
1.舉例思考枚舉算法的概念和意義,首先解決“為什么要學”的問題
我們在之前“循環程序結構”中學習過,循環結構可以代替人力去解決重復度極高的任務,那么生活中有哪些類似的實際問題可以通過循環結構非常方便地求解呢?帶著這個問題,我們來開始探討。
通過教師的引導,我們進行舉例和歸納。通過生活中的密碼問題、毒藥問題等,我們可以歸納出枚舉算法的概念:將問題的所有可能的解一一列舉,判斷每一個列舉的可能解是否為正確的解。
以“雞兔同籠”為例,通過對比解析算法,總結出枚舉算法的特點:枚舉算法的思維方式更簡單,更容易實現,它暴力的判斷了所有可能性,幾乎能保證百分百的正確率。但是枚舉算法的速度可能很慢,就算借助計算機技術,也需要一定程度的優化算法。
為了讓學生更容易將實際問題的枚舉算法與程序語言對接,將理論轉化為實際應用,教師提出枚舉算法三要素,一起探究每一個枚舉問題中出現的枚舉范圍、枚舉對象、判斷條件,與程序中的循環序列、循環變量、條件表達式相對應,更容易分析。通過這一系列的抽象建模過程,學生對枚舉算法的程序設計就有了一定知識基礎。
2.圍繞“馬克思手稿”這一主線,編寫程序,掌握枚舉算法的應用,培養優化枚舉算法的思想
馬克思手稿:有男人、女人、小孩共30人,吃飯共花了50元;每個男人花3元,每個女人花2元,每個小孩花1元;問男人、女人和小孩各有幾人?
以馬克思手稿趣味數學問題為例,教師引導學生進行抽象建模和編寫程序。我們將問題解決過程按照枚舉范圍的不同分為三個層次:
暴力枚舉。首先,引導學生完成最直觀的抽象建模,設計變量男人x、女人y、小孩z,初步劃分各變量的范圍,利用三重循環實現枚舉。這是最簡單實現、最直觀的枚舉法。它既突出了計算機超高運算速度的優越性,也體現了枚舉算法的核心特點:枚舉所有可能性。暴力枚舉的速度太慢,在列舉時有可以提前排除的情況,因此可以優化。
減少枚舉范圍以及枚舉對象。第二步,引導學生利用數學知識,通過公式x+y+z=30縮小變量枚舉范圍,將小孩z用30-x-y的公式代替,減少了枚舉對象。
優化。枚舉算法還能優化嗎?教師引導學生展開討論,對枚舉范圍和枚舉變量是否還能減少。通過x+y+z=30和3x+2y+z=5方程相減,得到2x+y=20,可確定x的范圍可縮小為[0,10],y的范圍可縮小為[0,20],進一步縮小循環變量的范圍,提高枚舉算法的效率。通過對同一算法的多次優化實踐,學生建構起枚舉算法優化的一般過程,感受到算法優化的樂趣。
3.實踐與拓展
信息技術作為一門技術課程,只有通過實際操作和反復練習,才能掌握和鞏固新的知識。
通過剛才的學習,我們對枚舉算法的編寫和優化已經有了較多認識。最后,以“孔雀開屏數”為題,教師引導學生體驗抽象建模的過程,同時,學生以本節課掌握的知識為基礎,設計算法、編寫程序、討論算法的優化,在這一過程中,學生相互討論、交流感受,比賽誰的算法最簡潔、最效率。
三、理解性教學的評價標準
本節課既是重要的算法進階課,又是對之前所學的python語句語法、控制結構、解析算法的綜合運用,根據課前調查,學生會將枚舉算法與循環結構畫上等號,其主要原因是:學生對枚舉算法的特點不熟悉,難以區分枚舉算法和普通的循環結構有什么區別;作為課堂教學的主體,大多學生自主探究能力、聯系和應用已有經驗的能力有所欠缺,很難深入去歸納新的知識,需要教師適當引導。本節課采用“理解性教學模式”,將教學內容與學生實際情況緊密結合,對教學內容進行有效的開拓處理,讓每一個學生都成為“主角”。
基于對“理解”的認識,在闡明什么內容可以證明理解的基礎上,針對本節課三個教學目標,我設計了兩種“理解性教學”評價標準:
解釋。目前課堂上,對于學生掌握的理論知識,教師采取的評價準備往往是填空、選擇題,缺乏了對學生建構知識、理解知識的鍛煉。本節課針對枚舉算法的概念、三要素等理論,我們首先引導學生舉例現實問題、聯系以往循環結構的知識、歸納枚舉特點,然后讓學生用自己的話說出自己理解的枚舉算法,其中包括“是什么,為什么和怎么用”這一類問題。學生只有經過自身對知識的建構,實現知識的遷移,才能更容易靈活應用于實際問題。
應用。在上一階段完成解釋枚舉算法的前提下,本階段要求學生把所學的知識有效地應用于新穎和變式的情境中。傳統課堂上,枚舉算法的學習往往只要求學生能掌握跟蹤變量、讀懂算法,完全以解題作為課堂目標。接受這樣的學習,學生根本無法獨立寫出完整的代碼。本節課針對枚舉算法的應用,通過步步引導學生抽象建模、優化算法,要求學生熟練掌握枚舉算法的知識,透徹地了解如何運用這些知識解決實際問題,最終寫出“馬克思手稿”題解的代碼,并逐步優化。
理解性的“應用”還要求學生把知識與具體情境相結合,對知識進行創新。因此本節課設計了拓展任務“孔雀開屏數”,讓學生能從多個視角,運用枚舉算法解決難題,這種靈活運用的能力正是理解性應用中所不可或缺的能力。學生只有表現出對枚舉算法的重構和再創造,這樣的應用才是自發性的、理解性的。
傳統高中信息技術教學的教學內容缺乏深度和廣度,如今新課程改革,在新課標的要求下,教師充分地認識到教學必須要超越理論知識、操作技能,追求理解性教學成為高中信息技術教師的教學理念。本文旨在以“枚舉算法”為例,為提高高中信息技術理解性教學的效果貢獻一點小小的力量。
參考文獻
[1]何燁,盛群力.理解的六種維度觀——知識理解的新視角[G].全球教育展望,2006.35(07):27-29
[2]潘旭東.為理解而教——對理解性學習的基本認識[G].小學教學參考,2017(23):1-4
[3]張益軍.例談高中信息技術理解性教學實踐[G].中國信息技術教育,2013(12):46-47,88