彭鵬



摘要:Python語言是目前較流行且易于上手的程序設計語言,Python程序設計是軟件技術專業的專業課程。文章結合斯坦福大學2025計劃的核心舉措之一“軸翻轉”進行教學改革嘗試,將教學環節改為四部分:1)速講Python基礎語法知識;2)項目技能模塊化分解;3)反補知識夯實技能;4)重新應用項目技能。以此方式提升學生的編程開發興趣,推動教學設計環節改革。
關鍵詞:Python程序設計;斯坦福大學2025計劃;軸翻轉;教學改革
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)16-0116-03
開放科學(資源服務)標識碼(OSID):
1 背景
2020年年底,在TIOBE于12月發布的最新排行榜中,Python漲幅占優,預計有望連續四年成為“年度編程語言”,在這一年中Python的漲幅最大,其次是C++、R語言等。Python語言逐步成為全世界最受歡迎的程序開發語言之一,而且生態系統應用越來越廣泛,廣泛應用于系統運維、圖形圖像處理、Web服務應用、網絡爬蟲、數據分析、辦公應用、機器學習、人工智能等業務領域。隨著人工智能時代的到來,Python強大的數據處理和科學計算能力體現出[1]。
1.1 Python程序設計語言的特色
Python程序設計語言是一種高層次的結合了解釋性、編譯性、互動性和基于面向對象的腳本語言,其語言的易讀性相對強大,相比于其他程序設計語言(C、C++、JAVA等)嘗試用的關鍵字以及一些標點符號,而且Python比其他語言更有相對特色的語法結構。
Python是一種解釋型語言,表示在開發的過程中無需編譯,可以直接運行,相當于PHP和Perl語言。Python是交互式語言,表示使用者可以在命令行提示符后直接執行代碼。Python還是一種基于面向對象的語言,表示Python支持繼承、封裝、多態的面向對象風格編程技術。最后Python支持廣泛的應用開發,對初級程序員相對友好[2]。
Python的特點:
1)易上手學習:語法關鍵字相對較少,結構相對簡單,而且Python具備明確定位的語法;
2)易閱讀理解:代碼清晰,結構要求嚴格,更易于理解;
3)易維護代碼:其源代碼相對于其他語言便于維護;
4)廣泛的標準庫:Python具備相當廣泛的庫資源,全球的開發者共同維護更新,支持各種功能,而且跨平臺,支持UNIX、Linux、Mac和Windows系統等;
5)支持互動模式:開發者可以在終端輸入代碼并直接運行獲取結果,支持測試和調試代碼;
6)可移植性:由于Python的開放特性,可以被移植到多個平臺;
7)可擴展兼容:Python支持在其代碼中添加并運行其他程序設計語言(如:C、C++);
8)數據庫支持:Python支持所有主要的商業數據庫接口方法;
9)GUI圖形化編程:Python支持圖形編程;
10)可嵌入式編程:開發者可以把python代碼嵌入到C/C++程序中,使程序獲得腳本化功能。
2 軸翻轉特色
目前我校軟件技術專業的專業核心課程有6門,包括C#程序設計、Java程序設計、數據庫應用與維護、軟件測試技術、JavaEE企業級開發、UML建模與設計模式;專業課共有4門,包括大數據分析與應用、Linux程序設計、數據結構、Python程序設計;專業基礎課共有6門,包括信息技術基礎、圖形圖像處理、計算機專業英語、軟件工程、計算機網絡、網頁設計與制作。隨著IT技術的迭代發展,Python作為程序設計語言愈發體驗出其重要性,所以Python程序設計也首次加入專業課當中。
為了更好地支持軟件技術專業學生的學習,結合斯坦福大學2025計劃,針對軟件專業學生進行相應的教學設計改革,斯坦福大學2025計劃包含四項核心部分:開環大學[4]、軸翻轉[5]、自定節奏學習[6]、有目的的學習[7]。其中軸翻轉是此次進行的教學改革。
軸翻轉(Axis Flip)是指由以往的強調知識轉換到注重能力培養。現在教育模式普遍采用課程知識的教學,課程教學的重點是學科知識,對學生的考核往往是以每章節的知識點掌握程度為標準,反而相對忽視了學生對該門學科的技能掌握,尤其忽略了該門技術在目前行業中的流行程度以及行業中目前流行的標準。斯坦福大學2025計劃提出的軸翻轉強調該門學科的知識與技能的相互替換,強調該門學科對應技術的技能掌握。
據了解,我校軟件專業學生經歷了兩年的學科學習和一年的頂崗實習后進入社會,依然無法滿足軟件企業崗位的要求,還需要在進行相應的學習,畢業生學到的知識與行業的要求差距較大,且動手能力較差。針對此現象嘗試進行教學改革的嘗試。
3 Python程序設計的教學實踐
通過之前對Python語言及斯坦福大學2025計劃中軸翻轉部分的分析,可以把教學設計重新改革,把整個教學過程分割成四部分:1)Python基礎語法知識;2)結合簡單項目分模塊化進行技能分解;3)根據項目技能涉及點反補知識;4)將知識點重新應用到項目的模塊當中完成任務。
3.1 速講Python基礎語法知識
工欲善其事必先利其器,任何程序設計語言都需要先學習語法基礎,在學習語法基礎之前就需要搭建好開發環境,用較少課時的時間讓學生在自己的機器上搭建好開發環境,教學使用基于Windows操作系統的Python3.8版本開發環境,開發工具使用PyCharm社區版,這兩種工具方便安裝,學生容易上手。
接下來用相對較快的時間把Python語言的基礎語法知識講授完畢,先讓學生對語法有一定程度的理解,如:標識符、關鍵字和數據類型,常量與變量,運算符與表達式,源程序的書寫風格,賦值語句,基礎輸入輸出,字符串操作,Python內置函數,程序控制結構,列表、元組、字典和集合,Python函數和模塊等。
在語法基礎學習完畢后即可開展下一步項目。
3.2 項目技能模塊化分解
興趣是最好的老師,為了能讓學生對Python程序設計持續產生濃厚的興趣,需要結合目前互聯網中實際應用到的代碼量相對較少的Python項目程序。我校軟件專業學生在開設Python程序設計課程之前已經學習過網頁程序設計,學生已經對HTML/CSS有一定程度知識儲備,并能熟練運用瀏覽器開發者模式進行元素查找,接下來將以相對簡單Python項目(爬蟲抓取網頁內容)為例。
第一步:布置任務,要求學生獲取豆瓣電影Top250頁面的電影排行榜前四頁的內容,將排行榜內容存儲于文本文件(如:douban100.txt),內容包含名次、電影名稱、導演、主演、時間、國家、類型、評分、評價人數等,并且將電影封面照片存儲于硬盤的top100的文件夾中,圖片名稱對應名次,效果如圖1、圖2。
第二步:帶領學生使用瀏覽器收集,逐頁打開網頁,手動復制文字存儲于top100.txt,封面圖片存于文件夾,通過人工步驟讓學生體會當工作量大的時候人工方式的弊端,并逐步引入程序化方式。
第三步:帶領學生使用谷歌瀏覽器的開發者工具功能,通過檢查排名第一的電影的網頁代碼,讓學生自己閱讀網頁代碼,通過閱讀發現之間的HTML元素的內容結構,效果如圖3。
通過閱讀代碼發現每一部電影的網頁代碼均存在于ol列表下的li標簽頁中,其中封面在class為pic的div標簽中,文字描述存在于class為info的div標簽中,之后引導學生自行打開對應div標簽進行更深一步的探索,如:封面圖片的鏈接地址、電影名稱、導演等。
第四步:引入XPath概念,快速講解XPath概念,告訴學生XPath可用來在XML文檔中對元素和屬性進行遍歷,并以電影排行榜的網頁教授使用XPath的使用方式,如:
電影封面的語法為//ol[@class="grid_view"]/li;
電影名稱的語法為div/div[2]/div[@class="hd"]/a/span[1]/text();
以此為例讓學生自行對剩下的內容,如:排行、評論數、評分等模塊進行編寫。
第五步:引入Python第三方模塊
此時介紹Python強大的第三方模塊庫,urllib庫、request庫和lxml的etree庫,先講解安裝模塊方式,然后演示程序寫法,最后帶領同學完成豆瓣排行榜第一頁的內容抓取。
第六步:通過程序完成剩下三頁的內容
通過分析電影排行榜的URL地址,引導學生需要對重復步驟代碼進行合并,使用之前學習的基礎知識循環進行操作,并對學生進行技術支持。
3.3 反補知識夯實技能
通過上一步的任務分解操作,總結其中的知識技能點,如:前三步涉及的HTML網頁設計技能,第四步涉及的XPath技能,第五步涉及的HTTP請求和第三方模塊使用方法等,對這些技能進行再次講解,加深學生對這些知識點的理解。
3.4 重新應用項目技能
鼓勵學生再次對代碼進行優化,并鼓勵學生進行其他網站頁面的網頁內容抓取,留下懸念如何避免某些網站的反爬蟲機制。
4 結束語
結合斯坦福大學2025計劃的軸翻轉特色,對Python程序設計進行相應的教學改革,并不按照教科書上固定的章節內容進行講授,而是在基礎語法知識講授后直接進行項目操作,通過項目設計的技能點反補教科書上對應的知識點,注重培養學生掌握的技能,并進一步提升學生對Python程序設計的興趣。教學改革要適應IT時代的發展,尤其是技術的迭代更新,Python程序設計課程的教學目的最終是以學生熟練掌握Python語言后能自己動手進行項目開發,并培養出自學能力。
參考文獻:
[1] 嵩天,黃天羽,禮欣.Python語言:程序設計課程教學改革的理想選擇[J].中國大學教學,2016(2):42-47.
[2] 張莉,金瑩,張潔.多樣化可擴展的Python教學體系探索與實踐[J].計算機教育,2017(8):18-22.
[3] 嵩天,禮欣,黃天羽.Python語言程序設計基礎[M].2版.北京:高等教育出版社,2017.
[4] Stanford University 2025. Open Loop University[EB/OL].[2020-12-12].
http://www.stanford2025.com/open-loop-university
[5] Stanford University 2025. Axis Flip[EB/OL].[2020-12-12].http://www.stanford2025.com/axis-flip.
[6] Stanford University 2025. Paced Education[EB/OL].[2020-12-12].http://www.stanford2025.com/paced-education.
[7] Stanford University 2025. Purpose Learning[EB/OL].[2020-12-12].http://www.stanford2025.com/purpose-learning.
【通聯編輯:謝媛媛】