張麗軍
摘要:作者以Python編程與九年級(jí)數(shù)學(xué)奇妙的分形——科赫曲線繪制為例,介紹了跨學(xué)科整合計(jì)算思維的Python編程教學(xué)設(shè)計(jì)流程,以期為培養(yǎng)學(xué)生的計(jì)算思維和跨學(xué)科素養(yǎng)提供參考。
關(guān)鍵詞:計(jì)算思維;跨學(xué)科;Python編程;分形
中圖分類號(hào):G434? 文獻(xiàn)標(biāo)識(shí)碼:A? 論文編號(hào):1674-2117(2023)11-0036-04
《義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)》提出跨學(xué)科主題學(xué)習(xí),即為培養(yǎng)跨學(xué)科素養(yǎng)而整合兩種以上學(xué)科內(nèi)容開展學(xué)習(xí)的主題教學(xué)活動(dòng)安排,其目的是加強(qiáng)學(xué)科知識(shí)內(nèi)在關(guān)聯(lián)與整合,強(qiáng)調(diào)以真實(shí)問(wèn)題或項(xiàng)目驅(qū)動(dòng)引導(dǎo)學(xué)生經(jīng)歷跨學(xué)科主題活動(dòng)的全過(guò)程。跨學(xué)科整合計(jì)算思維的核心理念就是打破計(jì)算學(xué)科和傳統(tǒng)學(xué)科之間的界限,將計(jì)算思維以一種理念或模式整合到跨學(xué)科教學(xué)中,以實(shí)現(xiàn)交叉創(chuàng)新地解決問(wèn)題。由于編程被認(rèn)為是發(fā)展學(xué)生計(jì)算思維的工具之一,而計(jì)算思維工具又會(huì)對(duì)跨學(xué)科知識(shí)的理解與表達(dá)帶來(lái)創(chuàng)新,因此,圍繞Python編程來(lái)完成計(jì)算思維和相關(guān)學(xué)科的整合可以幫助學(xué)生更清晰地思考計(jì)算,培養(yǎng)學(xué)生的跨學(xué)科素養(yǎng)以及邏輯概念、解決問(wèn)題的能力。下面,筆者以人教版初中數(shù)學(xué)九年級(jí)下冊(cè)奇妙的分形圖形——科赫(Koch)曲線繪制為例,介紹具體的教學(xué)流程。
選擇項(xiàng)目
跨學(xué)科整合計(jì)算思維的教學(xué)需要思考什么樣的主題知識(shí)適合編程和學(xué)科融合,合適的主題知識(shí)一方面要以真實(shí)情境下真實(shí)問(wèn)題的研究和解決為重點(diǎn),注重學(xué)科核心概念及學(xué)科間大概念的整合,另一方面要與學(xué)生的已有的認(rèn)知和生活經(jīng)驗(yàn)建立聯(lián)系,在不同的任務(wù)階段選擇適合學(xué)生身心特點(diǎn)的活動(dòng)和工具,以問(wèn)題鏈和任務(wù)群作為跨學(xué)科學(xué)習(xí)支架來(lái)培養(yǎng)學(xué)生的計(jì)算思維。
筆者選取了人教版初中數(shù)學(xué)九年級(jí)下冊(cè)相似三角形的拓展部分“奇妙的分形圖形”,該部分介紹了科赫曲線的產(chǎn)生過(guò)程及原理,引出分形的自相似性的性質(zhì),本項(xiàng)目即以分形圖形——科赫曲線的繪制展開設(shè)計(jì),它是由瑞典數(shù)學(xué)家馮·科赫(H·V·Koch)在1904年提出的一種不規(guī)則幾何圖形,是現(xiàn)實(shí)世界中海岸線、動(dòng)脈等結(jié)構(gòu)的理想模型。它的繪制方法是把一條直線等分成三等份,將中間的一段用夾角為60°的兩條等長(zhǎng)折線替代,形成一個(gè)生成元,然后把每條直線段都用生成元進(jìn)行替換,隨著多輪迭代就會(huì)呈現(xiàn)出一條復(fù)雜的科赫曲線,這難以徒手繪制,但可以在計(jì)算機(jī)上直觀地生成科赫曲線來(lái)模擬海岸線、雪花等。
本項(xiàng)目的難點(diǎn)在于使用編程的遞歸思想來(lái)理解數(shù)學(xué)中分形幾何自相似性的性質(zhì)進(jìn)而探究自然科學(xué)領(lǐng)域的幾何形體,涉及計(jì)算機(jī)科學(xué)、數(shù)學(xué)、科學(xué)等學(xué)科知識(shí),學(xué)生在探究過(guò)程中需要掌握基本的Python編程知識(shí)和技能,了解如何將這些技能應(yīng)用于解決跨學(xué)科問(wèn)題。具體而言,在編程方面要能夠運(yùn)用Python中的turtle、自定義函數(shù)、遞歸算法等知識(shí)點(diǎn)繪制科赫曲線;在數(shù)學(xué)方面要了解科赫曲線的基本概念和繪制方法,知道分形幾何的基本思想;在科學(xué)方面能發(fā)現(xiàn)自然界展示的分形并能夠用它來(lái)描述不規(guī)則形狀和復(fù)雜現(xiàn)象。因此,教師需要引導(dǎo)學(xué)生綜合運(yùn)用以上知識(shí)解決真實(shí)情境中的問(wèn)題,鍛煉他們的編程能力,使其探索數(shù)學(xué)文化,發(fā)展學(xué)生的高階思維能力。
創(chuàng)設(shè)情境
本項(xiàng)目需要為學(xué)生創(chuàng)設(shè)真實(shí)生動(dòng)的探究情境,借助一些支架過(guò)渡到語(yǔ)言開發(fā)類編程工具的使用,以實(shí)現(xiàn)循序漸進(jìn)地貫穿計(jì)算思維的培養(yǎng)過(guò)程。
首先,教師呈現(xiàn)一座島嶼的平面圖,提出問(wèn)題“海洋與陸地之間,蜿蜒曲折的海岸線有多長(zhǎng)?”,學(xué)生討論后可能會(huì)猜測(cè)海岸線長(zhǎng)度的具體數(shù)值,這時(shí)教師可以點(diǎn)出海岸線長(zhǎng)度是個(gè)不確定的值,它取決于用多大的尺來(lái)度量,教師可以給學(xué)生提供數(shù)學(xué)工具GeoGebra改變標(biāo)尺的長(zhǎng)度測(cè)量曲線,學(xué)生發(fā)現(xiàn)當(dāng)用較短的尺子測(cè)量時(shí),海岸線的長(zhǎng)度會(huì)變長(zhǎng),不會(huì)趨向于某個(gè)確定的值。
接著,教師解釋海岸線由無(wú)數(shù)的曲線組成,當(dāng)放大海岸線的一段曲線時(shí),它和整體的形態(tài)非常相似,即海岸線的任意部分都包含和整體相同或相似的細(xì)節(jié),從而介紹分形及其性質(zhì)——自相似性。這時(shí),提問(wèn)“對(duì)于海岸線這樣的不規(guī)則形狀能否用一種數(shù)學(xué)模型來(lái)模擬它呢?”,自然引出可以用科赫曲線來(lái)模擬海岸線,教師呈現(xiàn)科赫曲線的二維動(dòng)畫,介紹其基本概念并讓學(xué)生根據(jù)概念嘗試在紙上或者使用計(jì)算機(jī)上的畫圖程序繪制1階科赫曲線,學(xué)生填寫學(xué)習(xí)任務(wù)單,并根據(jù)圖1,將1階科赫曲線分解為如下的步驟:
①將線段AB三等分,描畫完第一個(gè)三分之一長(zhǎng)度AC線段后,將畫筆按逆時(shí)針?lè)较颍ㄏ蜃螅┬D(zhuǎn)60°;
②描畫三分之一長(zhǎng)度CD線段,再按順時(shí)針?lè)较颍ㄏ蛴遥┬D(zhuǎn)120°,描畫三分之一長(zhǎng)度DE線段;
③按逆時(shí)針?lè)较颍ㄏ蜃螅┬D(zhuǎn)60°,描畫最后三分之一長(zhǎng)度EB線段。
在整個(gè)情境創(chuàng)設(shè)環(huán)節(jié)導(dǎo)入了來(lái)源于生活中的不規(guī)則現(xiàn)象,通過(guò)數(shù)學(xué)工具、二維動(dòng)畫、圖譜的形式幫助學(xué)生理解自然界的分形,展現(xiàn)出在研究實(shí)際復(fù)雜問(wèn)題時(shí)改變尺度、化繁為簡(jiǎn)、發(fā)現(xiàn)規(guī)律的做法。這體現(xiàn)了計(jì)算思維中自頂向下分解復(fù)雜問(wèn)題,抽象出數(shù)學(xué)模型的思想,同時(shí),運(yùn)用紙筆讓學(xué)生體驗(yàn)繪制科赫曲線,激發(fā)學(xué)生的興趣,形象地探索以抽象語(yǔ)言表達(dá)的數(shù)學(xué)模型。
分析算法
在上一環(huán)節(jié)教師讓學(xué)生初步體驗(yàn)繪制簡(jiǎn)單的1階科赫曲線的步驟,同時(shí)還要圍繞遞推和遞歸兩種角度分析繪制多階科赫曲線的算法,為下一階段使用Python編程精確地模擬奠定基礎(chǔ)。教師展示不同階數(shù)的科赫曲線(如圖2),讓學(xué)生分別在紙上畫出1階、2階、3階的圖形并思考從1階到2階每條線段發(fā)生了什么變化,總結(jié)規(guī)律。學(xué)生通過(guò)觀察得出規(guī)律:1階的每一條線段折起一個(gè)角形成2階,隨著階數(shù)遞增,每一條線段可以進(jìn)行無(wú)限次變換,成為帶有角的折線。在學(xué)生探究規(guī)律后,教師總結(jié):通過(guò)遞推的辦法,從局部到整體,由易到難,由小到大,每一條線段都經(jīng)歷該過(guò)程,從1階科赫曲線遞推衍生出更高階數(shù)的科赫曲線。
接下來(lái),教師拋出探究問(wèn)題“用遞歸的思想如何繪制高階曲線”,并提示學(xué)生把上述遞推過(guò)程倒過(guò)來(lái),如要繪制5階科赫曲線,假定4階是已知的,再經(jīng)歷一次變換,4階采用同樣的方法去處理,最后變成1階。這里教師要幫助學(xué)生理解遞歸算法必須有一個(gè)出口,可以是一條直線段,即為0階科赫曲線,至此不再往下擴(kuò)展,接下來(lái)就是倒推回所有的結(jié)果,從0階、1階一直倒推回5階。
教師繼續(xù)總結(jié)科赫曲線每次局部放大都和整體圖形相似,這種特性符合遞歸算法的特點(diǎn):①每一個(gè)問(wèn)題在形式上都相同;②確定結(jié)束條件,遞歸就是原問(wèn)題層層分解成子問(wèn)題,每次調(diào)用低一階,在計(jì)算思維中,自頂向下、先全局后局部的逆向思維即為遞歸思想。因此,算法分析有助于學(xué)生從遞推的自底向上、從小到大的正向思維轉(zhuǎn)向遞歸的逆向思維,教師讓學(xué)生作圖的過(guò)程可以輔助學(xué)生形象地理解遞歸函數(shù)的調(diào)用過(guò)程。
編程測(cè)試
在探究完1階科赫曲線的繪制步驟以及多階科赫曲線的遞歸算法后,教師請(qǐng)學(xué)生將算法轉(zhuǎn)換成編程語(yǔ)言。教師提出,用Python模擬科赫曲線可以被分解為3個(gè)層層遞進(jìn)的子任務(wù):①如何用代碼模擬1階科赫曲線?②如何模擬多階科赫曲線?③如何模擬科赫雪花島?
在學(xué)生明確子任務(wù)后,教師引導(dǎo)他們分析每個(gè)任務(wù)涉及的Python知識(shí)點(diǎn),任務(wù)①的程序會(huì)用到turtle海龜繪圖,任務(wù)②可以使用自定義函數(shù)、條件語(yǔ)句、turtle模塊、遞歸算法實(shí)現(xiàn),任務(wù)③則是在任務(wù)②的基礎(chǔ)上加上循環(huán)結(jié)構(gòu)。
任務(wù)①相對(duì)基礎(chǔ),學(xué)生根據(jù)學(xué)習(xí)任務(wù)單中1階科赫曲線的步驟,回憶移動(dòng)、轉(zhuǎn)向、角度等語(yǔ)法,接著自主編程,定義AB線段長(zhǎng)度為size,分成三等分,即可確定每次前進(jìn)長(zhǎng)度是size/3,前進(jìn)4次繪制AC、CD、DE、EB線段,使用forward、left、right等子函數(shù)完成代碼。
任務(wù)①主要考查學(xué)生對(duì)turtle函數(shù)旋轉(zhuǎn)角概念及方向的理解,大部分學(xué)生可以寫出如圖3所示的基礎(chǔ)程序。
任務(wù)②相對(duì)較難,教師可以組織學(xué)生2~3人為一組共同完成任務(wù)提升協(xié)作思維,同時(shí)為學(xué)生提供任務(wù)理解的支架即程序補(bǔ)全,如提供函數(shù)名稱及參數(shù),讓學(xué)生填寫函數(shù)體。圖4為多階科赫曲線的參考程序,自定義函數(shù)、遞歸算法、條件語(yǔ)句是整個(gè)程序的難點(diǎn),調(diào)用自身的遞歸函數(shù)需要設(shè)置科赫曲線主函數(shù)的參數(shù):size即線段AB初始長(zhǎng)度,n為階數(shù)也是迭代次數(shù)。函數(shù)體中運(yùn)用if條件語(yǔ)句,如果n=0,那么遞歸出口就是一條直線段,直接前進(jìn)size,否則即為高階科赫曲線通過(guò)函數(shù)koch(size/3,n-1)調(diào)用自身實(shí)現(xiàn)遞歸,對(duì)應(yīng)低一階每次前進(jìn)的線段長(zhǎng)度,直到0階結(jié)束。
此外,任務(wù)②的第二部分需要注意初始化定義turtle畫布大小、畫筆寬度、抬筆、落筆、畫筆隱藏等知識(shí)點(diǎn)。學(xué)生完成程序后需要對(duì)代碼進(jìn)行測(cè)試,可以修改參數(shù)大小觀察科赫曲線的變化,這里教師可以設(shè)計(jì)一個(gè)探究問(wèn)題:“如果將遞歸的出口設(shè)為1階科赫曲線,推廣到高階代碼的途徑應(yīng)該是2階及以上的科赫曲線,應(yīng)該如何修改呢?這與0階遞歸出口相比,哪一種程序會(huì)更加簡(jiǎn)潔易于理解?”該問(wèn)題鼓勵(lì)學(xué)生評(píng)估算法效率以及反思性提問(wèn),通過(guò)簡(jiǎn)潔的表達(dá)向同伴闡明做出某種選擇的理由,因此支架和探究性問(wèn)題結(jié)合起來(lái)可以評(píng)估學(xué)生能否提出優(yōu)化問(wèn)題的策略。
任務(wù)③是進(jìn)階任務(wù),教師讓學(xué)生探究如何模擬科赫雪花島,從整體和局部的角度引導(dǎo)學(xué)生思考一條科赫曲線和科赫雪花之間的關(guān)系。科赫雪花的繪制分為兩個(gè)層次,從0階科赫雪花看出,可將三角形三條邊分解為三個(gè)基本單元——稱為“邊”,是一條直線。從大于0階的科赫雪花可以看出,“邊”即為一條科赫曲線,可將其分為四個(gè)基本單元——稱為“線段”,因此科赫雪花可以看作是由三條科赫曲線組成,每一條科赫曲線又由四個(gè)線段組成。學(xué)生探究得出通過(guò)循環(huán)次數(shù)的計(jì)數(shù)完成科赫雪花圖案的繪制,這里自然引入for循環(huán)控制結(jié)構(gòu),將科赫曲線、轉(zhuǎn)動(dòng)角度、循環(huán)次數(shù)之間建立聯(lián)系,考查學(xué)生對(duì)360°周角概念的理解。科赫雪花效果的示例代碼如圖5所示。
任務(wù)③更加直觀地讓學(xué)生了解分形圖形的基本思想,整體幾何圖形是由一個(gè)簡(jiǎn)單的微圖形結(jié)構(gòu)自我復(fù)制、反復(fù)變換形成最終的圖案,其自相似的性質(zhì)與遞歸算法的思想一致。
總結(jié)反思
筆者設(shè)計(jì)了跨學(xué)科項(xiàng)目“繪制科赫曲線”,此項(xiàng)目將使用計(jì)算思維解決跨學(xué)科問(wèn)題的過(guò)程歸結(jié)為選擇項(xiàng)目、創(chuàng)設(shè)情境、分析算法、編程測(cè)試、總結(jié)反思,體現(xiàn)了抽象與分解、遞推與遞歸、測(cè)試與評(píng)估等一系列思維活動(dòng),學(xué)生在項(xiàng)目探究中需要掌握計(jì)算思維中重要的遞歸思想以便于他們探索更多的分形,如曼德爾布羅特集,同時(shí)遷移應(yīng)用設(shè)計(jì)自己的創(chuàng)意分形圖。
筆者認(rèn)為,信息技術(shù)與數(shù)學(xué)、科學(xué)融合的思路可以分為兩種,一種是將培養(yǎng)計(jì)算思維的工具如Python編程作為解決數(shù)學(xué)問(wèn)題的技術(shù)工具或者是一種知識(shí)建模工具,運(yùn)用編程建模,幫助學(xué)生建立程序設(shè)計(jì)、數(shù)學(xué)計(jì)算、科學(xué)認(rèn)識(shí)之間的聯(lián)系,學(xué)習(xí)的重點(diǎn)在于理解數(shù)學(xué)概念與科學(xué)推理。另一種是以編程為主,學(xué)習(xí)重點(diǎn)是計(jì)算思維的相關(guān)概念,以編程算法核心知識(shí)為主,而非以數(shù)學(xué)核心知識(shí)的學(xué)習(xí)為主線,將數(shù)學(xué)知識(shí)作為先修知識(shí),在Python中還原并解決問(wèn)題,學(xué)生需要完成的編程任務(wù)是依托數(shù)學(xué)知識(shí)用Python來(lái)表達(dá),掌握基本的Python語(yǔ)法和程序設(shè)計(jì)方法及思想。因此,確定跨學(xué)科主題尤其重要,以便綜合培養(yǎng)學(xué)生計(jì)算機(jī)科學(xué)領(lǐng)域的素養(yǎng)、數(shù)學(xué)素養(yǎng)、科學(xué)素養(yǎng)。
參考文獻(xiàn):
[1]中華人民共和國(guó)教育部.義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)[S].北京:北京師范大學(xué)出版社,2022.
[2]吳剛平.跨學(xué)科主題學(xué)習(xí)的意義與設(shè)計(jì)思路[J].課程·教材·教法,2022(09):53-55.
[3]張瑾,徐紫娟,朱珂,等.國(guó)際視閾下跨學(xué)科整合計(jì)算思維的課程模式研究[J].現(xiàn)代教育技術(shù),2022(12):49-57.
[4]崔志翔,徐斌艷.數(shù)智時(shí)代國(guó)際基礎(chǔ)學(xué)科計(jì)算思維教育發(fā)展的策略、方向與啟示——《PISA 2022數(shù)學(xué)框架》之思考[J].遠(yuǎn)程教育雜志,2022(06):13-21.