丁德武,涂霞,王美能,宋前暉,雷超
(1.宜春學院數學與計算機科學學院,江西宜春 336000;2.宜春市實驗中學,江西宜春 336099;3.宜春市第六小學,江西宜春 336099;4.宜春市宜陽學校,江西宜春 336099)
計算思維(Computational Thinking)這一概念的提出最早是源自計算機科學領域,主要是指使用計算機科學的基本理念來解決問題的一種思維方式,其本質是抽象和自動化[1-2]。在網絡信息化時代,計算思維與人們的工作、學習與生活均密切相關,可以說是每個人都應當掌握的思維方式。
隨著人工智能時代的到來,編程教育已經成為中小學信息技術學科的重要內容。2017年,國務院印發了《新一代人工智能發展規劃》(國發〔2017〕35號),要求“實施全民智能教育項目,在中小學階段設置人工智能相關課程,逐步推廣編程教育”[3]。2018年,教育部印發了《教育信息化2.0行動計劃》(教技〔2018〕6號),提出了要“充實適應信息時代、智能時代發展需要的人工智能和編程課程內容,……并將信息技術納入初、高中學業水平考試”[4]。這些高屋建瓴的“規劃”與“計劃”均充分說明了青少年編程教育已經被列入到我國的基礎教育之中。
與此同時,計算思維也已經逐步拓展到中小學教育領域,引起了全世界計算機科學家和教育工作者的積極關注,例如:國際教育技術協會、計算機科學教師協會等知名組織,微軟、谷歌、百度等知名企業都在研究計算思維如何進入中小學教育[5]。2017年的《地平線報告(基礎教育版)》指出“培養中小學生的計算思維是21世紀一個重要的課題”[6]。自2021年起,計算思維測試也已經被納入國際學生評估項目。我國于2018年頒發的《普通高中信息技術課程標準(2017版)》也突出了計算思維的地位,把計算思維列入了信息技術學科的四個核心素養(即信息意識、計算思維、數字化學習與創新、信息社會責任),要求學生形成運用計算思維分析、解決問題的關鍵能力[7]。
然而,盡管受到了社會各界的普遍關注,如何把計算思維整合到中小學教育中仍然面臨著眾多挑戰,例如:沒有與新課標相配套的教材、知識系統性往往不強、教學方法較為單一、教學評價也不夠全面等;而C、C++、Java等傳統編程語言的復雜性使得計算思維能力的編程實踐尤為困難。為了將計算思維有效融入中小學教育中,我們基于Python語言來探索中小學生的計算思維能力培養。
Python是由荷蘭人Guido van Rossum開發的一種解釋型、面向對象高級程序設計語言,近年來在數據分析、機器學習、人工智能等領域廣受歡迎[8]。在其眾多優點之中,“簡單易學”使得這門語言非常適合編程初學者,因而在中小學生的編程教育中獨具優勢。
作為一種“新型”計算機語言,Python不僅語法簡潔,而且可讀性非常高。作為示例,下面給出了C、C++和Python幾種不同語言中用來交換兩個數值的函數(圖1)。如圖所示,C語言版本的數值交換函數需要解釋指針和函數的參數傳遞等復雜的概念,C++語言版本的數值交換函數則需要解釋引用這一概念,而Python版本的數值交換函數僅需要直接交換兩個變量的值即可。就簡潔性而言,Python語言的優勢顯而易見。

圖1 C語言、C++語言和Python語言版的數值交換函數對比
另一方面,計算思維的第一功能是提出問題與設計解決問題的模型,而不僅是具體實施計算的過程。因此,在中小學基于Python語言來編寫程序,能更好地引導學生將注意力放到實際問題的分析和解決上,能更有效地融入計算思維的教育,進而有助于學生激發學習的積極性、提升計算思維能力。此外,隨著大數據與人工智能時代的到來,Python語言逐漸在各行各業中受到廣泛關注。因此,基于Python語言來開展中小學生計算思維能力的培養還具備鮮明的時代先進性,更能適應時代的要求。
綜上,Python語言不僅更加符合中小學生的編程能力,也更能適應計算思維能力培養的實際需求。因此,我們使用Python語言來助力中小學生的計算思維教育,通過在中小學數學、信息技術等課程中滲透計算思維的思想來提升計算思維教育的水平。

盡管對計算思維的具體定義尚存有爭議[9],但一般可以認為計算思維就是將現實世界的問題轉化為能夠利用計算機處理的問題的思維模式[10]。因此,在我們的教學活動中,我們對中小學生計算思維培養的目標定位為能夠利用Python語言來解決現實問題的能力與習慣。一般而言,我們首先通過分析數據和界定問題來明確問題的實質。然后,可以通過分解問題和抽象特征將問題轉化為可計算化的描述方式。最后,建立模型、設計解決問題的方案和步驟并給出解決問題的Python程序。這里,通過Python語言來編寫程序、解決現實問題是培養中小學生實踐計算思維能力的關鍵所在,通過編程實踐才能將計算思維有效地融入中小學教育中。
本節將介紹幾個我們在實際教學過程中使用Python助力中小學生計算思維教育的教學案例。
本案例以長方體的體積和容積設計了這樣一道題目:一個長方體玻璃容器,從里面測量長、寬均為2分米。先向容器中倒入5.5升水,再把一個蘋果放入水中,這時量得容器內的水深是15厘米。請問這個蘋果的體積是多少?
(1)分析數據和界定問題:①現在的體積和5.5升水相比有變化嗎?②為什么會有這樣的變化?③它們相差的體積是誰的體積呢?經過分析討論,我們得出該問題涉及長方體、長、寬、高、體積和容積等概念,問題的實質是與體積計算有關(涉及單位的換算)。
(2)在分解問題和抽象特征環節,問題可以分解為:①求現在的體積是多少;②將水的容積轉換成體積;③求蘋果的體積是多少。
(3)最后,可以使用體積計算公式來計算體積,并通過Python編程完成本題。代碼如下:

該程序輸出結果為:蘋果的體積為0.5立方分米。
這部分內容的主要教學目標是:①會分析實際問題中的數量關系并會列一元二次方程;②能正確分析問題中的數量關系;③會找出實際問題中的相等關系并建模解決問題。在實際授課過程中,我們首先圍繞這些教學目標,通過視頻引入(最新勒索病毒的傳播)和圖片引入(夏季常見傳染病預防知識)等方式向學生介紹了相關知識。隨后,詳細講解了教材提供的幾個例子。
這里,我們介紹這樣一道題目:某種植物的主干長出若干數目的支干,每個支干又長出同樣數目的小分支,主干、支干和小分支的總數是91,每個支干長出多少小分支?
(1)分析數據和界定問題:這個例子和引例(一個傳染病的例子)中的數量關系有何區別?經過分析討論,我們得出:每個樹枝只分裂一次,而每名患者每輪都傳染,進而明確了問題本質。
(2)分解問題和抽象特征:我們利用如下示意圖分解了每個樹枝的數量關系,并設了未知數。

圖2 某種植物主干、支干和小分支數量關系
(3)隨后,我們建立了一元二次方程模型:
1+x+x2=91,即x2+x-90=0。
并使用了Python的SymPy庫來解這個一元二次方程,這里SymPy是一個Python科學計算庫,它有一套強大的符號計算體系可用于完成諸如多項式求值、求極限、解方程等計算問題。代碼如下:

該程序輸出結果為:[-10,9]。
(4)最后,回到現實問題。我們檢驗了一元二次方程的根(其中-10不合題意,舍去),得到實際問題的解為9,即每個支干長出9個小分支。
本節內容中,在講解完算法的概念和幾個例題之后,我們給出了幾個練習題用于幫助學生鞏固相關知識。本案例介紹這樣一道練習題:寫出求一元二次方程ax2+bx+c=0根的算法。
(1)分析數據和界定問題:這個題目的目的非常明確,就是讓學生使用一元二次方程的求根公式來復習鞏固算法的概念。問題的實質與一元二次方程的求根有關(涉及a、b、c值的輸入)。
(2)在分解問題和抽象特征環節,我們寫出求該一元二次方程根的算法,如下:
第一步,計算Δ=b2-4ac;
第二步,如果Δ<0,則原方程無根;如果Δ=0,則原方程存在唯一根;否則(即Δ>0時),原方程存在兩個根:

第三步,輸出無根、唯一根(x)或兩個根(x1,x2)等相關信息;可以合并到第二步中。
(3)最后,通過Python編程完成本題。代碼如下:

若a、b、c值依次輸入為:1、-2、1,該程序輸出結果為:該方程存在唯一根x=1.0。
每一門學科的學習思維都是在平時的學習中慢慢形成的,計算思維也是如此。要想在中小學教育(如數學、信息技術等課程)中逐步滲透計算思維的培養教育,教師在教學過程中設置的教學內容是十分重要的。通過研讀國家各類編程與計算思維教育方面的“規劃”與“計劃”,在正確理解這些標準指導文件對計算思維能力培養各項要求的基礎上,我們對課程與教學內容的設置進行了探索與實踐,形成了“使用Python語言助力中小學生計算思維教育”的教學改革方案。
目前,我們已經重組了部分教學內容,完善了相應的教學計劃、應用案例與教學課件等各類教學材料,初步實現了相關教學內容的“計算思維”主題化教育,并在宜春市實驗中學、宜春市第六小學和宜春市宜陽學校等學校的教育教學中做了嘗試。本文結合教學實踐,展示了幾個基于Python編程的中小學生計算思維能力培養的具體教學案例,相關工作應能夠為中小學生計算思維能力培養提供一些參考,對中小學數學、信息技術類課程的教育教學也有一定的借鑒意義。