陳前永 章偉





摘 要:本文探討在小學開展程序設計語言Python教學的緊迫性和必要性,提出教學的前趨課程、核心課程和拓展課程設計,通過案例說明小學階段開展Python編程語言教學的實施路徑和策略。
關鍵詞:Python;Scratch;可視化;計算思維
中圖分類號:G434 文獻標志碼:A 文章編號:2096-0069(2019)02-0082-05
收稿日期:2018-10-24
基金項目:廣東省深圳市2017年度教育科學重點規劃課題“在中小學開展‘人工智能’教育實踐研究”(zdfz17020)
作者簡介:陳前永(1964— ),男,陜西漢陰人,深圳市羅湖區信息技術教研員,主要研究方向為中小學信息技術教育、中小學創客教育;章偉(1982— ),男,安徽安慶人,深圳市螺嶺外國語實驗學校信息技術教師,主要研究方向為創客教育和教育信息化。
為應對人工智能未來可能給社會發展帶來的影響和變化,需要在中小學階段設置適應信息時代、智能時代發展需要的人工智能相關課程,逐步推廣編程教育。在中小學開展編程語言教學,首先是教育對時代變革的呼應。在信息時代,學生更需要掌握一種簡約的編程語言,將腦海中的創意通過編程語言快速、輕松地實現。而Python語言是目前公認的較好的編程語言,它能將大量煩瑣的編程任務用庫函數的形式封裝起來,用它編寫程序簡單、易讀、篇幅小,具有容易學習上手的特點。雖然程序語言簡潔但是可以完成很多復雜的任務,輕松解決科學計算、大數據分析、機器學習等復雜問題。
一、 Python編程語言教學概述
Python使用函數、對象、模塊和庫來擴展語言,不僅能讓學生通過指令不斷和計算機交流,把主要精力用在算法思維和程序的邏輯結構上,還能在編程過程中用接近自然語言的方式來讓代碼達意、可讀、簡潔精確。例如,要繪制圖1,利用Python語言只需幾條簡單語句:
import turtle as t #導入內部繪圖函數庫turtle,并且給庫一個別稱t,別稱主要是為了書寫簡便,程序中t完全可以用turtle代替t.color('red')#設置畫筆顏色為紅色for x in range(36)#循環36次,x代表循環次數t.forward(200)#畫圖海龜向前移動200步t.left(170)#畫圖海龜轉向170度
Python語言教學能更好地發展學生的核心素養。在利用Python語言進行項目式編程的任務過程中,為解決不斷出現的問題,學生必須在查閱書籍、網絡搜索的基礎上,通過自主探究、同伴協作來糾正錯誤,并最終解決程序中存在的問題。在問題解決的過程中還會涉及英語閱讀、數學、幾何等方面的知識,這是學生在成長過程中必須學會的知識和技能。
Python語言語法簡潔清晰、結構簡單、關鍵字少,閱讀一個符合規范的Python程序就感覺像在讀英語一樣。這就使得小學生在編程過程中無須關注太多語法細節和計算機底層知識,而更多地專注于應用計算機解決問題的思路和方法,降低了學習的門檻,有著極佳的成就感體驗。
在中小學開展Python語言教學可以讓學生在用計算機編程解決問題的過程中,學會分析提取問題的關鍵,理解解決問題的方案和步驟,然后編寫代碼,并通過調試修改達到預期結果,也就是培養計算思維和解決問題的能力。同時在以問題驅動為導向的Python語言教學過程中,學生能夠將所學到的編程知識和大腦記憶中的真實任務情境聯系起來,有利于學生去理解生活中常見的自動化工具的工作邏輯、工作原理。比如停車場車牌自動識別系統,所涉及的知識點是計算機視覺、機器學習,在Python中主要通過調用OpenCV庫來實現。教師將課堂上學生學習的Python知識與實際生活結合,讓其感覺到計算機解決實際問題的作用,幫助其建立學習自信,激發其進一步學習的欲望,讓Python成為部分學生施展個性的舞臺。
二、Python編程語言教學的策略和過程
2012年修訂的《基礎教育信息技術課程標準》指出,在小學課程模塊“算法與程序設計入門”中要以程序為基礎,以算法為核心,不以代碼編寫訓練為目的,而以程序設計方法和算法思想的體驗為宗旨。
我們在小學三年級開設的程序設計課程中,選取Code.org在線編程提供的豐富資源作為學生入門編程課。由于Code.org在線編程不需要編寫任何代碼,也不需要理解那些復雜的概念,學生只要理解完成一個任務的邏輯,就可以通過拖拽方塊方式完成程序的編寫,因而易于培養興趣,易于理解程序設計的思想。這種直觀的圖形化拖拽方式編程摒棄了代碼,以接近自然語言的方式表達程序設計,并進行直觀驗證受到學生的歡迎[1]。學生通過Code.org在線編程課程的學習,初步理解了程序的邏輯結構,有了這個基礎,學生再學習Scratch圖形編程就變得非常自然,為Scratch圖形編程教學奠定了基礎。
在教學實踐中我們體會到,在小學高年級段,學生的數理邏輯已經逐步形成,如果僅僅講授Scratch圖形編程會存在一些問題,主要表現在:(1)Scratch圖形編程功能有限,其主要用于編寫一些交互性的游戲程序,更為復雜一些的計算則難以實現,如一些復雜圖形的繪制、數據統計、文本處理等。(2)編程思維的訓練方面,學生在用Scratch解決某個問題時,常常過于關注細節,缺乏對一個問題的整體解決步驟的理解,缺乏整體觀、大局觀。(3)對于較復雜的程序,Scratch腳本就顯得非常繁雜,非常不利于閱讀理解。
為解決這些問題,我們選取Python語言作為小學高年級段的進階編程語言,雖然Python并未使用圖形化的編程,但其大量的內置函數將一些具體小任務的實現細節封裝,使得學生可以把注意力集中到解決問題的邏輯上,寫出的代碼也便于閱讀理解,從而更加符合高年級學生從形象思維過渡到抽象思維、數理思維的智力發展過程,有利于培養學生的計算思維及數字化學習能力。
由于Python語言提供了豐富的圖形計算生態環境,借助自帶的海龜繪圖庫及第三方庫可以方便地實現圖形繪制,因而它符合學生的思維發展過程,從Scratch教學到圖形化手段的Python教學,承上啟下,過渡自然流暢。加之計算結果的可視化,可以達到吸引學生學習程序設計的興趣、引導學生建立學習自信及培養學生現代計算思維的目的[2]。
Python自帶圖形庫Turtle是Python語言中一個很流行的繪制圖像的函數庫,是一個小學生學習高級語言編程的最佳載體。可以編寫指令讓一個想象的小烏龜在屏幕上來回移動,這個海龜帶著一支筆,在一個橫軸為x、縱軸為y的坐標系原點(0,0)位置開始,根據一組指令的控制來繪制線條。通過程序設計,能以各種很酷的模式移動海龜,不僅可以繪制出令人驚嘆的圖像,還能夠在這個過程中讓學生掌握Python的基本語言結構及基本的程序設計思想,如交互、選擇、判斷、順序、循環等程序結構。
Python 3還可以集成Pygame Zero庫,這是個便于使用Python編寫2D游戲的庫,能將Scratch中編寫的小游戲用Python重現。實際教學中,可以以Pygame Zero為教學用庫,以小學生熟悉的正多邊形為基礎構建教學資源,摒棄傳統的章節知識點教學模式,將相關的數據類型、運算操作符、變量、輸入、循環、嵌套、圖形界面、函數等知識點滲透到每章節的項目任務中。選取的任務要由易到難,在教學過程中采用案例教學法(即課堂以案例開頭),逐步增加問題的變量和條件,引入新的程序設計語法要素,逐步增加程序的復雜度[3],循序漸進地引導學生不斷擴展解決問題的思路。
我們構建了如圖2所示的16課時校本教材結構,以海龜圖形庫為教學主體貫穿整個學期,在每個章節的任務教學中滲透知識點的教學,以項目式小任務來驅動學生主動學習、協作學習。在這個過程中,教師通過指導發掘出共性問題進行重點講解,把有限的課堂時間還給學生進行思考和實操,改變了以往枯燥的理論教學模式。
鑒于Python 3.7自帶的集成開發環境IDLE界面相對于小學生來說并不友好,我們選擇MU 開發環境,它支持中文界面并能直接驗證,這就使得學生能夠及時體驗到成功的喜悅,非常適合初學者。
三、 Python編程語言教學案例
自帶庫海龜繪圖是小學Python語言教學中常用的入門教學用庫,在校本教材的第三課,我們常常用剛剛破殼的小海龜歷經千難萬險走進大海的故事來帶領學生進入Python語言圖形世界。
(一)教學情境
播放紀錄片《海龜奇妙之旅》中小海龜從沙灘躲避海鳥、毒蛇等進入大海的片段,引出Python世界里也有一只小海龜,它必須繪制不同的圖形闖關才能逐漸強大起來,最后遨游于Python世界,從而引出本課學習的內容——海龜繪圖。
教學方法上采用案例教學法和任務驅動法,通過案例的示范讓學生理解命令、使用命令,隨后通過案例演化出普通任務,生成進階任務,在任務驅動中鼓勵學生模仿創作,遇到難點自主學習、協作學習,逐步拓展解決問題的思路和方法。
(二)引入新知
首先是教師示范并講解基礎命令:在MU編輯器中輸入“import turtle as t”,繼續輸入命令“t.forward(100)”,執行后可以看到一只海龜從一個XY坐標系(畫布)(0,0)開始在屏幕上向右移動并畫下一段長100像素的線段,在輸入“turtle.left(90)”后海龜原地向左旋轉了90度,如果繼續重復輸入這兩個命令,就能繪制出一個邊長為100像素的正方形。隨后給出課堂小任務,請學生在老師示范的基礎上結合已有的數學知識嘗試繪制三角形、五角星。
從這個入門范例及基礎任務中可以看出,Python是以接近自然語言的方式編程,將類似的命令進行組合,只要有一定的英語基礎,小學生就可以很輕松地繪制復雜的圖形,運用新知完成熟悉的簡單任務,不僅增強了其學習自信心,還能為其接下來的學習做好積極的心理準備。
接著講解如表1所示的turtle庫基本繪圖命令并張貼于黑板上以便學生參考使用。
(三)運用新知
發揮想象,先在學習單上繪制圖形樣式,然后參照表1在MU中新建程序文件,編寫代碼,實現復雜的圖形設計,如“seth( )”可更改海龜方向,“goto( )”可至不同坐標繪制圖形,“pencolor( )”可設置不同的筆畫顏色等。自由創作能較好地適應學生的個性特點和能力差異,幫助其運用所學內容。在這部分的授課方式和課堂語言的組織上,重點突出對學生思維的誘導、指引并進行總結歸納,使學生從“我要做什么”向“我要怎么做”轉變,最后做到“我還能這樣做”[4]。
(四)交流展示
通過巡堂指導,根據學生完成的情況和課堂時間,挑選部分有代表性的作品如表2所示,鼓勵學生主動分享作品,講解創作思路和創作方法。通過作品展示、師生互評,不僅能夠活躍課堂氣氛,促進學生之間的交流與合作,而且更是學生自我反思和自我判斷的過程,在思考、欣賞同學作品的過程中,對所學知識進行鞏固。同時收集學生運用基礎命令編程過程中遇到的難題和期望的更便捷的命令,如循環、多種顏色的使用、填充圖形等,為下節課的開展做準備。
(五)新課預演
根據課堂交流中學生遇到的問題快速演示圖3中所示圖形,進一步激發學生的創作欲望和學習興趣,也有利于其課后深入思考或自主學習。以課堂生成的問題為教學內容,不僅能真正做到讓學生成為課堂的主體,讓其在課堂中的生命活力得到最大限度的釋放,而且對教師而言,以學定教可以打破以往傳統教學的課堂知識體系導致的學用失衡,促進教學相長。從教學實踐情況來看,學過Scratch的小學高年級學生都可以很好地學習Python語言。Python海龜繪圖編程學習目的明確、過程清晰,只要教學內容和案例處理得當,學生有自主學習熱情且整體參與度高,課堂任務的完成效果就很好,整節課的互動性和趣味性就會增強。
四、總結和展望
《教育信息化2.0行動計劃》提出“完善課程方案和課程標準,充實適應信息時代、智能時代發展需要的人工智能和編程課程內容”,表明從國家層面對編程教育進入中小學教育有了明確的要求。從教學實踐看,以小學高年級學生的思維模式和認知能力,他們完全可以接受Python語言課程,及早了解、掌握Python會為他們進行下一步人工智能的學習打下良好的基礎。學習編程并不是要讓學生掌握編寫程序的技巧,而是讓其逐步接觸、理解、體驗編程的邏輯操作、算法、數據結構、工程設計等通用的工程方法和數學知識[5],這些核心知識的掌握和能力的提升才是編程教學的根本目的。
參考文獻
[1]施曉軍.每個人都應該學習編程[J].中小學信息技術教育,2014,(z1):158-160.
[2]黃天羽,嵩天.以圖形牽引興趣的Python案例教學方法與實踐[J]. 計算機教育,2017,(8):32-37.
[3]趙霞,張五旬,韓忠明,等.Python語言教學中問題解決能力和創新能力的培養實踐[J].計算機教育,2017,(9):6-10.
[4]章偉.培養計算思維的小學編程校本教材開發與應用:以應用Scratch創作“迷宮大戰”為例[J].中小學數字化教學,2018,6(3):55-57.
[5]劉欣.追本溯源探尋編程教育的本質[J].中國科技教育,2018,(1):10-13.
(責任編輯 杜丹丹)
Abstract: This paper explores the urgency and necessity of Python programming language teaching in primary schools,puts forward the forward curriculum,core curriculum and extended curriculum,and illustrates the implementation path and strategy of Python programming teaching in primary schools through cases.
Key words: Python;Scratch;visualization;computational thinking