錢逸舟 方璐
項目驅(qū)動式教學(xué)的理念一經(jīng)提出便在全球范圍內(nèi)獲得廣泛關(guān)注,不同的國家和地區(qū)紛紛根據(jù)本地的教育現(xiàn)狀對項目驅(qū)動式教學(xué)進行本土化嘗試。項目驅(qū)動式教學(xué)重視從真實情境中提取驅(qū)動型問題,將學(xué)科內(nèi)容與真實問題解決情境有機整合,旨在鍛煉學(xué)生的高階思維與問題解決能力,這與我國新課改理念不謀而合。以信息技術(shù)課程為例,《普通高中信息技術(shù)課程標準(2017年版)》提出,信息技術(shù)課程要注重培養(yǎng)學(xué)生的信息素養(yǎng)、問題解決能力等多種高階思維。同時,當前高中信息技術(shù)課程中越來越多地引入Python編程作為教學(xué)內(nèi)容,而項目驅(qū)動式教學(xué)便是幫助學(xué)生綜合使用已經(jīng)學(xué)到的Python編程知識,鍛煉問題解決能力的一種教學(xué)方式。因此,根據(jù)驅(qū)動式教學(xué)理念對高中信息技術(shù)課進行重構(gòu)具有可行性和必要性。本文將以“蒙特卡洛法求圓周率”一課為例,介紹此類教學(xué)的主要流程。
● 前期分析,選擇項目
項目驅(qū)動式教學(xué)的核心在于尋找一個合適的探究項目。筆者認為,一個好的探究項目應(yīng)具有以下特點:①項目解決的是一個真問題,具有真實的生活或?qū)W科背景;②項目的難度和內(nèi)容適合本年齡段學(xué)習者的能力;③項目具有可探究性,問題的結(jié)論通常無法直接獲得,需要經(jīng)過科學(xué)實驗或計算機建模等手段推導(dǎo)得出。
本文選擇的“蒙特卡洛法求圓周率”問題就符合以上特點。首先,蒙特卡洛法求圓周率指的是在單位正方形內(nèi)構(gòu)造單位圓,隨后在整個區(qū)域內(nèi)投點,根據(jù)落在圓內(nèi)的點數(shù)與投點總數(shù)的比值求出圓周率的方法,其中,為保證精確,投點總數(shù)通常較大,因此計算落在圓內(nèi)點數(shù)顯得較為困難,此時就可以自然引入計算機模擬的方式協(xié)助探究。學(xué)生在探究過程中,既可以復(fù)習學(xué)科知識,又能夠鍛煉問題解決和高階思維能力。其次,本項目并非零散的知識拼接活動,而是對已學(xué)知識的有機整合與靈活運用。在本項目中,學(xué)生將運用Python編程中的循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)、隨機模塊(Random)以及計算函數(shù)等知識點,解決依托于真實情境的問題,檢測自身對Python編程的掌握程度。因此,本項目是一個非常好的能夠幫助學(xué)生學(xué)以致用的項目。需要指出的是,蒙特卡洛方法同時也是一種經(jīng)典的統(tǒng)計學(xué)方法,在使用蒙特卡洛法解決問題時,學(xué)生也可以同時鍛煉數(shù)學(xué)學(xué)科中的“概率與統(tǒng)計”單元的內(nèi)容,一舉多得。
如圖1所示,本項目在教學(xué)中主要經(jīng)過“問題導(dǎo)入,激發(fā)動機——梳理流程,測試程序——拓展問題,自主探究”三大步驟,下面詳細介紹具體的流程。
● 導(dǎo)入問題,激發(fā)動機
在正式教學(xué)前拋出導(dǎo)入問題,有助于激發(fā)學(xué)生的學(xué)習動機,調(diào)動課堂學(xué)習積極性。以“蒙特卡洛法求圓周率”為例,教師可以邀請學(xué)生一起回憶之前學(xué)習的與圓周率有關(guān)的內(nèi)容,隨后讓學(xué)生思考并討論以下問題:提供一個直徑為1的圓,怎樣盡可能精確地求得圓周率的值?學(xué)生自由討論約3分鐘后,請想出不同方法的學(xué)生介紹自己的想法,并穿插介紹如“割圓術(shù)”“測量法”等多種方法。接著,教師在單位圓外做外接正方形,可得圓面積為圓周率除以4,正方形面積為1,那么圓面積與正方形面積的比值為圓周率除以4。也就是說,只需要找到另一種可以代表圓面積與正方形面積比值的方式,就可以求出圓周率的值。
隨后,教師展示如圖2所示的教學(xué)模型,從模型中觀察可知,圓的面積可以用圓內(nèi)小正方形的數(shù)量表示,而外接正方形的面積則等于總 的小正方形數(shù)量。同時不難看出,總的小正方形數(shù)量N是影響結(jié)果的關(guān)鍵值,N越大,小正方形越趨于一個點,得到的圓周率值越準確。因此,可以將無限縮小的小正方形比作一個個小點,推導(dǎo)可得到如圖3所示的等式。推演過程不需要所有學(xué)生掌握,學(xué)生只需要了解推演結(jié)果即可,在后續(xù)的編程訓(xùn)練中會繼續(xù)深入學(xué)習。
● 梳理流程,測試程序
在介紹完蒙特卡洛法求圓周率的數(shù)學(xué)推導(dǎo)過程后,邀請學(xué)生嘗試使用蒙特卡洛法在白紙上測算圓周率的近似值,隨后思考自己使用蒙特卡洛法求圓周率的流程,畫出流程圖。這一步可以幫助學(xué)生進一步理解知識點,同時也可以把復(fù)雜的過程分解為可編程的子問題。同時,在紙上推演得到的圓周率值通常與真實的圓周率值相差較大,因此可以自然引入Python編程進行更為精確的模擬。在這一環(huán)節(jié)中,蒙特卡洛法求圓周率問題可以被分解為三個子問題:①如何用代碼模擬在單位區(qū)域內(nèi)投點的過程?②如何計算圓內(nèi)的點的數(shù)量?③如何將圓內(nèi)的點的數(shù)量轉(zhuǎn)化為圓周率值?
在明確問題的分解與模型的抽象后,教師需要引導(dǎo)學(xué)生結(jié)合學(xué)習過的Python編程知識,將先前繪制的流程圖轉(zhuǎn)化為如圖4所示的示例代碼。其中,子問題一可以采用Random函數(shù)產(chǎn)生隨機數(shù)代表投點坐標;子問題二可以結(jié)合數(shù)學(xué)知識,如果投點的坐標到原點距離小于1,則證明投點位于圓內(nèi),同時結(jié)合判斷和循環(huán)語句完成多次計數(shù);子問題三則采用換算公式完成。學(xué)生此時不需要寫出具體的代碼,只需要針對流程圖對程序簡單勾勒。
● 拓展問題,自主探究
在完成對程序的簡單設(shè)計后,學(xué)生可以上手進行編程。此時教師要注意,雖然學(xué)生已知曉程序的主要結(jié)構(gòu),但由于學(xué)生對知識點的掌握程度以及自身能力不盡相同,應(yīng)根據(jù)個體差異性為不同的學(xué)生布置不同的任務(wù)。對學(xué)習基礎(chǔ)較好的學(xué)生,可以只提供函數(shù)名稱和輸出部分的內(nèi)容;對學(xué)習基礎(chǔ)較薄弱的學(xué)生,可以采用“填空”的形式,如抹去第10行與第8行代碼,只要求寫出重點代碼即可。
對學(xué)習基礎(chǔ)較好的學(xué)生,應(yīng)當鼓勵其進行更深層次的探究。此處的探究方向有二:其一,可以將程序作為探究圓周率值的實驗工具,鼓勵學(xué)生改動重復(fù)次數(shù),畫出“圓周率值—重復(fù)次數(shù)”的函數(shù)圖像,對蒙特卡洛法有更深入的了解;其二,布置學(xué)習遷移任務(wù),學(xué)習遷移任務(wù)的難度不應(yīng)過高,應(yīng)與本節(jié)課知識緊密相關(guān),同時在學(xué)生的最近發(fā)展區(qū)內(nèi)。本例中采用“套環(huán)為什么總是套不中”這一案例作為提升學(xué)習的問題。下面對套環(huán)問題進行簡單介紹。
套環(huán)問題來源于真實的生活情境:在生活中隨處可見的套環(huán)游戲,規(guī)則是將套環(huán)整個套中設(shè)定的物體就算勝利。它聽上去非常簡單,但事實上的勝率總是不理想。這其中是否暗含著一些數(shù)學(xué)或科學(xué)原理?可以將套環(huán)問題視為如圖5所示的數(shù)學(xué)模型,假設(shè)以原點為中心、直徑為1的圓為需要套中的物體,設(shè)定直徑為2的套環(huán)。套環(huán)是否套中物體就可以看作套環(huán)的圓心到物體圓心(原點)的距離是否在[0,1/2)的范圍內(nèi)。根據(jù)蒙特卡洛方法,只要重復(fù)次數(shù)足夠多,就可以得到較為準確的投中物體概率值。
● 總結(jié)
本文以“蒙特卡洛法求圓周率”一課為例,介紹項目驅(qū)動式的信息技術(shù)課的主要實施流程。總體來說,項目式學(xué)習主要包括“導(dǎo)入—流程—程序—拓展”四個步驟,而Python只是作為輔助建模與實驗工具。與此同時,筆者認為,項目驅(qū)動下的信息技術(shù)課堂若要具備可實施性,可以嘗試深度整合其他學(xué)科,針對其他學(xué)科課標內(nèi)的重難知識點進行擴充與復(fù)習,如本文中介紹的信息技術(shù)與數(shù)學(xué)學(xué)科的整合案例。這樣設(shè)計出來的課程不但對信息技術(shù)學(xué)科的學(xué)習有幫助,而且可以反哺于其他學(xué)科的掌握。當然,由于筆者并未進行教學(xué)實踐,本文的觀點也不過一孔之見,期待未來有更多優(yōu)秀的信息技術(shù)整合其他學(xué)科的教學(xué)案例可供參考。