王飛
當前Python程序設計教學現(xiàn)狀和問題分析
目前,中學教師整體編程水平不高,部分甚至處于零起點。我們通過與教師交流和問卷調查了解到,絕大多數(shù)中學信息技術教師對于新技術和新內容具有較高的求知欲,但對于在中學階段開設Python語言教學,一半以上持反對態(tài)度或處于困惑狀態(tài)。
設計教師培訓方案前,需要對中學Python教學中的需求進行整理,并從中選取適用于教師的案例,選擇適當?shù)慕虒W方式。當前,采用Python語言的教學方式主要有如下幾種。
1.基于一般算法問題開展教學
基于常見的數(shù)學問題,經(jīng)過一系列的算法演示,生成最終的結果。常見的案例如航海問題、生成問題、排序問題、數(shù)字猜謎游戲等。
此類內容的選取降低了教師備課的難度,可以充分借助以往經(jīng)驗,有利于夯實學生的語法基礎。其劣勢在于對Python語言的特點呈現(xiàn)不夠,優(yōu)勢無法凸顯,不利于信息技術知識的梳理和思維方法的提升。
2.基于圖形繪制問題開展教學
利用Turtle庫(類似Logo語言)繪制圖形,在繪制圖形的過程中滲透相關知識。引入Turtle庫幫助學生在學習的過程中生成更多生動形象的內容,能有效地激發(fā)學生的興趣和參與度。由于語句相對簡單,學生可以將主要時間、精力聚焦在思維層面。但是單一應用Turtle庫,生成的作品和圖形應用價值較低,實際意義不盡如人意。
3.基于圖形化界面程序開發(fā)開展教學
Python提供的Tkinter庫和Pygame擴展庫可以使用戶進行圖形化程序的開發(fā),從而使Python也可以設計美妙的交互式界面。教師從界面入手,以功能分析作為引入,從搭建界面開始,通過編寫事件觸發(fā)代碼,實現(xiàn)各種功能。整個教學的內容主要以編寫觸發(fā)事件為主,強調面向對象的設計方法。
圖形化庫的引入使得教師的備課難度加大,界面的搭建和事件的響應需要大量面向對象的知識。大量的準備工作和搭建工作需要教師在備課時完成,課上需要學生完成的任務量相對較少,學生所學比較有限,投入產(chǎn)出比偏低。
4.基于數(shù)據(jù)處理應用開展教學
數(shù)據(jù)處理是Python最大的優(yōu)勢之一,借助豐富的工具和強大的數(shù)據(jù)處理能力,結合大數(shù)據(jù)平臺接口,可以設計很多有實際意義的項目。
數(shù)據(jù)處理任務可以充分發(fā)揮Python的能力,選取實際生活中的真實問題,帶領學生充分體驗信息學中收集信息-處理數(shù)據(jù)-應用數(shù)據(jù)的整個流程,引導學生充分感知計算思維在問題解決中的巨大價值,也可以很好地和數(shù)學、科學、文學等問題進行整合。這種教學方式要求教師能熟練運用Python語言,同時需要有較強的數(shù)學基礎,對教師要求較高。
5.基于人工智能技術體驗開展教學
Python在機器學習算法設計和大數(shù)據(jù)處理方面的優(yōu)勢明顯,上手容易,適合廣大師生從應用層面進行發(fā)掘和實驗,可以作為開展人工智能教學的重要實驗工具。Python語言加上智能平臺接口是目前人工智能技術教學實施可行的途徑。但該類內容過于綜合,從對大數(shù)據(jù)平臺的調用到對生成的結果數(shù)據(jù)進行解析,應用的基礎知識較多,生成的數(shù)據(jù)結構復雜,教學難度較大。
基于問題解決的培訓方案設計
鑒于上述問題,開發(fā)一套具有普適性的培訓方案,為教師提供相應的學習方法,保證其在今后能夠獨立不間斷學習才是問題的關鍵。而解決這一問題的關鍵在于培訓過程中基本思路和方法的滲透,站在問題解決的角度對Python相關內容進行知識的重新建構。
1.面向對象的方法與計算思維
Python語言是一門面向對象的動態(tài)解釋型語言?!叭f物皆對象”是Python語言的一個重要特點。圍繞這一特點,在指導學生學習的過程中,應該關注Python語言在解決問題時的基本思路。
與面向過程的語言聚焦問題的解決步驟不同,面向對象的思想方法強調將一個綜合問題看成一個復雜的系統(tǒng),然后抽象出相關的、不同類型的對象,通過對對象具體狀態(tài)的描述(屬性)和執(zhí)行的功能(方法)去解讀系統(tǒng),最后將這些關系進行組合。
以游戲開發(fā)為例,面向對象的設計理念不是按照游戲的執(zhí)行步驟和規(guī)則對其進行一步步描述,相反是要將游戲中的內容進行不同的分類與概括,如可控角色、敵人、獎勵等,然后依次對他們的狀態(tài)(外觀、動作等)進行描述,同時對其可以進行的操作進行概括性描述(封裝過程)。在描述之后,根據(jù)不同類型的內容創(chuàng)建具體的角色,根據(jù)上述描述的內容進行具體對象的創(chuàng)建(繼承、多態(tài))。最后是對規(guī)則進行描述,從而完成游戲的設計。
鑒于此種思想,學生和教師關注的不再是簡單的語句,更多的是考慮系統(tǒng)背后的聯(lián)系與數(shù)據(jù)的利用過程(如表1)。
2.問題解決方法的重構
在面向對象的基礎上,利用Python語言解決問題的主要流程可總結為:在分析系統(tǒng)的基礎之上,利用開源工具包構建對象,建立聯(lián)系,通過特有的方法和屬性完成對象的調用。程序的運行過程則是在程序三大結構基礎之上對項目的過程進行描述和使用。最終,將生成的一系列內容轉換為最基本的數(shù)據(jù)類型(字符串、列表、字典、元組、集合等)操作,通過這些數(shù)據(jù)進行條件的判斷和流程的控制。
3.知識重構
在方法論的基礎上,我們會看到,程序越到底層面臨的內容越具體,問題越聚焦。因此,教學應強調最基本的知識,然后關注應用層面的升華。中學信息技術教師不需要掌握過多的開發(fā)庫的應用方法和復雜的語法結構,而是要能夠根據(jù)課程標準的要求,將Python語言中最基本最核心的內容進行提煉和整理。教師應嘗試充分發(fā)揮Python的膠水特性,讓知識節(jié)點存在關聯(lián)不至于孤立,內容更加綜合化?!?Python教學實施策略與建議
1.實施的一般模式與方法
開展Python語言教學,建議使用項目教學方式。整個過程分為項目分析、分解問題、技術轉換、數(shù)據(jù)處理和拓展引申幾個環(huán)節(jié)。
首先對事件的流程進行分析,然后從中提取相關的對象。在提取對象后考慮要將問題進行分解,關注不同條件下對象的執(zhí)行過程,同時思索每一步需要執(zhí)行的技術要點。在完成要點分析后,考慮向具體的程序執(zhí)行過程轉化,在轉化的過程中,教師注意引導學生與現(xiàn)有的知識建立聯(lián)系,區(qū)分哪些是學生通過已有知識可以解決的內容,哪些是沒有學過的內容,對于新知識可以考慮借助學案或者提供工具包和源碼的方式幫助學生突破難點。在程序編寫的過程中,要注意數(shù)據(jù)的流向、運算和處理過程,要關注影響判定結果的核心數(shù)據(jù),同時還要注意實施過程中生成的內容,關注收集與存儲方式,這些內容可以作為程序二次開發(fā)使用。最終的任務一定要開放,具有可拓展性。在拓展層面,教師要考慮兩方面的內容,第一從代碼結構到功能能否更加簡潔與優(yōu)化,第二是否可以添加拓展功能。
2.項目實施過程的建議
在項目的實施過程中,任務一定要綜合,條理清晰,分解的問題既要有交集,又要保持問題解決方式方法的獨立性,使學生可以用若干節(jié)課完成一個復雜的任務。每個基本問題都可以轉化為若干個技術要點進行分析和實現(xiàn)。對于程序需要調用或生成的資源要建立合理的文件路徑進行管理,教師一定要在這個過程中指導學生學習數(shù)據(jù)收集與整理的技巧與方法。在后期的拓展中,引導學生從數(shù)據(jù)處理的角度進行拓展與延伸,補充新的功能。
3.實施的案例應用——人臉對比項目思考
(1)進行項目分析
項目分析內容如表2所示。
(2)核心代碼
核心代碼包括攝像頭采集的實現(xiàn)、人臉對比結果的呈現(xiàn)、對比后數(shù)據(jù)的應用三個部分。
①攝像頭采集。攝像頭的采集使用OpenCV擴展庫,控制攝像頭捕獲動態(tài)圖像。利用快捷鍵實現(xiàn)直接拍照功能,捕獲當前幀的信息,生成圖片文件。②人臉對比。利用百度工具包實現(xiàn)接口調用,將對比組圖片進行編碼傳遞給服務平臺接口,通過服務端進行識別判斷,將判定結果的數(shù)據(jù)返回給客戶端。③對結果的應用。此部分內容可以讓學生進行拓展,通過拿到的對比結果制訂相應的規(guī)則,根據(jù)判定條件完成相應的操作,如直接輸出信息、修改數(shù)據(jù)庫狀態(tài)、語音簽到等。
綜上所述,基于Python語言的程序教學在學科教學中還有很長的道路需要摸索,廣大信息技術教師在不斷淬煉新知和能力的同時,還需要關注學科體系的建設和學科核心素養(yǎng)的發(fā)展,在曲折中行進,不斷提升自己的教學水平和專業(yè)地位。
參考文獻:
[1]林偉,樊磊.在高中信息技術課中培養(yǎng)學生計算思維的有效方法探討[J].新課程研究(下旬刊),2017(10):10-13.
[2]劉向永.面向核心素養(yǎng)的高中信息技術課程標準修訂——訪教育部高中信息技術課程標準修訂組組長任友群教授[J].中國信息技術教育,2017(12):4-8.
[3]沈曉彬.淺談高中信息技術學科中核心素養(yǎng)的培養(yǎng)[J].中華少年,2017(09):165-166.
[4]鐘建業(yè).高中信息技術教學評價指標體系研究[J].中小學信息技術教育,2017(03):56-58.
[5]胡正勇.高中信息技術核心素養(yǎng)的內涵分析[J].教育信息技術,2017(Z1):138-141.