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