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