夏立



當今社會,基于數學知識,應用編程原理所設計的“程序”無處不在。編程作為一種技能,將不再只是程序員的專利,而成為一種趨向于全民所需要掌握的普及性能力,同時將上升成一種思維方式,更好地應對人們在人工智能時代所面對的需求和挑戰。
編程與計算思維
2017年7月,國務院頒發的《新一代人工智能發展規劃》提出,作為人工智能抓手的編程教育需要逐步進入中小學生的課堂,立足于激發學生對編程學習的興趣,培養學生探索與創新精神和解決問題的能力。不過,中小學階段的人工智能與編程的課時主要還是同信息技術課程與綜合實踐課程共享,人工智能與編程教育的師資隊伍、課程內容與教學環境都還處于建設過程中。
作為計算機編程知識的底層基礎,如何在數學學科中融入編程教育的相關知識,并將信息技術技能同數學學科進行交叉結合是一個重要的課題。數學知識與編程技能的有效融合,可以改變現有數學學科反復刷題與機械背題的現狀,并幫助學生借助計算機編程的技術手段,培養并鍛煉學生的計算思維和解決具有實際意義問題的能力。
計算思維(computational thinking)概念是周以真教授于2006年提出的,她認為計算思維本質上是一種運用計算機科學的基本概念進行問題求解、系統設計并對于人類行為進行理解的思維方式。
在數學領域,計算思維的思考方式表現在:能借助計算機技術,理解某些數學基礎知識(例如:數字邏輯、排列組合、概率問題、四則運算、流程圖等)。
近幾年,同編程知識緊密相關的數學案例多次出現在全國及各地的高考試題中。圖1列舉了2018年天津高考數學試卷的一個試題。
從題干本身來看,這個題目是一個選擇題,圖1中的流程圖完整地繪制了一個程序,其中包含了輸入、判斷、循環、輸出等基本的計算機編程知識。由于N的預設值為24,在沒有編程工具輔助的情況下,學生需要使用代入法進行計算,計算步驟如下:
1)N=24
2)24 是否可被3整除?是
3)N=24/3=8
4)8是否小于或等于3?否
5)8是否可被3整除?否
6)N=8-1=7
7)7是否小于或等于3?否
8)7是否可被3整除?否
9)N=7-1=6
10)6是否小于或等于3?否
11)6是否可被3整除?是
12)N=6/3=2
13)2是否小于或等于3?是
14)輸出N的值為:2
使用代入法對上述試題進行計算,需經歷14個步驟和四次循環判斷,才可以得出最終的結果。如果將題干中N由24改為2400,或者2400000,并且依然使用代入法進行計算的話,那么解答這道題目的工作量之巨大,但考核的技能卻僅僅是簡單的計算,如果僅使用紙筆計算的話,運算效率就會非常低下。而從編程知識的角度考慮,圖1中試題的思考路徑僅需如下3個步驟:
1)代入N的值:24
2)判斷:N能否被3整除?Yes:執行賦值語句 N=N/3? No: 執行賦值語句N=N-1
3)判斷:N的值是否小于或等于3?No: 跳回第二步,開始循環,直到“Yes”,輸出N的值。
要實現上述3個步驟的運算,我們就需要利用合適的編程語言。例如,高中信息技術課程標準中所推薦的Python編程語言。對圖1中的試題進行重構,我們僅需要簡單的幾行代碼就能快速降低重復計算中的時間和人力耗損。
關于圖形化積木類編程
圖2所展示的Python代碼為使用由深圳點貓科技有限公司(編程貓)開發的Python編程工具:海歸編輯器中的代碼編程界面,對于圖1中的試題的重構示例。
從編程的角度入手,該試題的思考路徑為:賦值、輸入、循環、判斷和輸出。上述路徑就是非常規整地利用編程思維的角度去解決數學問題。當N的值如題干所示為24的時候,結論為2,若N的值為假設的2400,則結論為3。上述結論的得出,都是由計算機程序經過運算瞬間得出的。
雖然Python語言本身相較于其他代碼類編程語言尤其具有易理解、易上手的優點,但是考慮到學習代碼編程本身是一件需要進行長期投入的事情,因此對于無編程基礎的中小學生來說,圖形化積木類編程的學習,成為了學界推薦的手段。圖3是使用積木類型的Python編程工具:海歸編輯器中積木編程界面,針對圖1中的試題,進行積木模塊化的呈現。
相較于代碼類編程,積木類型的編程因其將實際生活場景中的積木性質遷移至編程環境中,并利用形狀、顏色、嵌套等視覺上直觀可視的邏輯關系,將復雜的代碼編程,以圖形化積木的拼裝組合的形式展示于編程界面中,成為了非常適合新手和孩子入門的編程語言。圖3案例界面中的圖形化編程代碼組合,就包括了“事件”“運算”“控制”“變量”等各種深層次的編程知識。學生在進行編程操作的時候,就是將圖1中的流程圖,以積木拼接的方式,依靠簡單的編程知識,按順序進行拼接,就可以實現圖3的編程樣例。解題中所產生的思考邏輯與計算過程,可以以拼搭積木的方式全景展示,靜態于紙面的數學題目可以以一種動態的方式呈現。
靈活使用代碼編程手段與圖形化編程手段解決數學問題,是計算思維在數學領域中的實際應用。這種應用考慮到了學生的實際認知水平。
瑞士著名的兒童心理學家皮亞杰將兒童的認知發展分成了四個階段:感官動作期、前操作期、具體操作期和形式操作期。具體來說,感官動作期指孩子從出生到一歲半的年齡時期,這個時候的孩子對于世界剛剛開始有初步的認識,認知世界的方式主要通過手、腳以及身體其他部位的觸感,并不具備對于事物的分析與推理能力。前操作期指孩子從一歲半到七歲的階段,這個年齡段的孩子具備比較基礎的邏輯推理能力,可以理解圖像與圖像之間的關聯,能夠理解基本的數量關系。具體操作期指孩子七歲到十一歲這個年齡段,大致可以對標小學階段的跨度。這個年齡段的孩子具備了一定的邏輯推理能力,可以理解圖像與圖像之間的關聯,也可以理解部分文字信息中的邏輯關系,但是還不具備從具體的文本信息、圖像信息之間抽象出背后原理的能力。形式操作期指孩子十二歲到十五歲的年齡段,大致是在初中的學習階段。這個時候的孩子具備了從具體到抽象進行歸納總結的能力,主要的特點是可以從現象中進行背后原理的剝離并在其他環境中進行二次利用。例如孩子可以從“勾三股四弦五”這樣具體到數字的案例,抽象到“勾股定理”或“畢達哥拉斯定理”的理解,并從無理數的角度進行其他類似案例的再應用。對應到編程與數學結合的領域,圖2的代碼編程因其抽象的文本邏輯特性,就比較適合處于形式操作期的孩子理解,即對應初中及以上的年齡學段。而圖3的積木性質的編程工具,則因其對于代碼間抽象邏輯的積木式簡化,按照皮亞杰的理解,就非常適合處于具體操作期(小學階段)的孩子理解。計算思維的培養以及計算思維同學科的結合,需要具體考慮學生的認知水平,并結合適合的計算思維實踐工具。妥帖的工具選擇,才能真正地起到培養孩子數學同編程相結合的能力。
編程能力作為最重要的信息技術能力,已經應用于學科知識的學習中。一線教學與實踐的關注點,正在從“學習編程”(Learn to code)逐漸轉向“通過編程學習”(Code to Learn),而“STEM”創新教育中的數學學科(Mathematics)是最直觀的“通過編程進行學習”的應用場景。合理應用針對數學的算法編程工具和技巧,可以使數學知識中的邏輯關系完整呈現,對于學科老師和學生都會起到很大的助益。編程技能作為實現思考邏輯與計算過程的重要技能,可以幫助學生提高分析、解決問題能力,真正將信息技術應用到學習數學學科知識的過程中。適度與合理的數學與編程教育,將對面向未來的創新型人才培養起到重要作用。
作者單位:香港理工大學