張莉+金瑩+張潔
摘 要:以“用Python玩轉(zhuǎn)數(shù)據(jù)”若干次公選課的學(xué)生為基礎(chǔ),提出多樣化可擴(kuò)展的Python教學(xué)體系,即基于學(xué)生特征將學(xué)生分成人文社科類、理工類和商學(xué)類3種模式,具體闡述如何通過內(nèi)容和方式兩個(gè)不同維度對3類學(xué)生的3種模式進(jìn)行Python多樣化教學(xué),最后建議將這3種模式便捷地?cái)U(kuò)展到單獨(dú)的人文社科類院系、理工類院系和需要進(jìn)行專業(yè)定制的院系。
關(guān)鍵詞: Python;多樣化;可擴(kuò)展;教學(xué)體系;問題求解
0 引 言
當(dāng)今時(shí)代計(jì)算機(jī)、網(wǎng)絡(luò)、移動互聯(lián)、人工智能等飛速發(fā)展,人們的思維方式發(fā)生了翻天覆地的變化,各行各業(yè)對計(jì)算機(jī)的需求也越來越多,計(jì)算機(jī)基礎(chǔ)教學(xué)面向非專業(yè)學(xué)生,致力于培養(yǎng)計(jì)算機(jī)應(yīng)用人才,將計(jì)算的理論、技術(shù)、方法、思想應(yīng)用于各領(lǐng)域中,推動行業(yè)發(fā)展的同時(shí)帶動科技的進(jìn)步和社會的發(fā)展,同時(shí)也成為創(chuàng)新創(chuàng)業(yè)的原動力和主戰(zhàn)場,是未來新興產(chǎn)業(yè)誕生的搖籃。程序設(shè)計(jì)是培養(yǎng)學(xué)生理解計(jì)算思維并用計(jì)算機(jī)求解問題的重要方式,而Python[1]因?yàn)槠浜啙?、易用和?qiáng)大特別是擁有十分豐富、功能完備的第三方庫,近幾年在全球引起極大的關(guān)注,在計(jì)算機(jī)和其他相關(guān)領(lǐng)域大放異彩,其易用性甚至在人文領(lǐng)域都有很大的市場,這是以往計(jì)算機(jī)程序設(shè)計(jì)語言無法實(shí)現(xiàn)的。
除了在Coursera平臺和中國大學(xué)MOOC在線平臺開設(shè)的“用Python玩轉(zhuǎn)數(shù)據(jù)”MOOC課程吸引了大量各個(gè)學(xué)科的學(xué)習(xí)者外,2015年秋季南京大學(xué)開設(shè)了“用Python玩轉(zhuǎn)數(shù)據(jù)”公選課,同樣受到了很大的關(guān)注。選課學(xué)生分布在全校各個(gè)院系,有計(jì)算機(jī)、電子和軟件學(xué)院這樣的專業(yè)院系,也有數(shù)學(xué)、天文、大氣、生科等理工科院系,還有部分中文、歷史、哲學(xué)等人文社科類院系,而文理兼收的商學(xué)院學(xué)生占了較多的比例。能否借鑒MOOC平臺上眾多學(xué)習(xí)者的經(jīng)驗(yàn)和公選課上不同類學(xué)生的特征設(shè)計(jì)課程體系,將Python課程由公選課順利納入新一輪大類/院系計(jì)算機(jī)基礎(chǔ)課程的教學(xué)計(jì)劃中,是我們一直在思考的問題,目前通過幾輪探索和實(shí)踐形成了多樣化可擴(kuò)展的Python教學(xué)體系。
1 多樣化可擴(kuò)展的Python教學(xué)體系
基于學(xué)生的特點(diǎn),可將“用Python玩轉(zhuǎn)數(shù)據(jù)”選修課學(xué)生分成3類,分別是人文社科類、理工類(將專業(yè)學(xué)生歸到理工類)和商學(xué)類,圖1所示是4次課程具體的學(xué)生分布?;诓煌膶W(xué)生群體特征,可將3類學(xué)生對應(yīng)分成3種培養(yǎng)模式,如圖2所示,從計(jì)算機(jī)基礎(chǔ)教學(xué)核心培養(yǎng)目標(biāo)計(jì)算思維和問題求解[2]的角度考慮,對人文社科類學(xué)生著重基礎(chǔ)問題的求解,對理工類學(xué)生著重高級問題的求解,對商學(xué)類學(xué)生進(jìn)行專業(yè)定制的培養(yǎng),主要在內(nèi)容和方式這兩個(gè)維度實(shí)施不同方案,形成多樣化可擴(kuò)展的Python教學(xué)體系,如圖3所示,將人文社科類模式和理工類模式直接擴(kuò)展到人文社科類和理工類院系,將商學(xué)類模式擴(kuò)展到各類需要進(jìn)行專業(yè)定制的院系。
2 不同維度的教學(xué)體系實(shí)施
2.1 不同的內(nèi)容維度
2.1.1 課程內(nèi)容
“用Python玩轉(zhuǎn)數(shù)據(jù)”課程主要內(nèi)容是用Python處理、分析和展示數(shù)據(jù),從Python基本語法開始,到在Python中如何從本地和網(wǎng)絡(luò)上獲取數(shù)據(jù),再到表示數(shù)據(jù)、對數(shù)據(jù)進(jìn)行處理和分析及可視化,最后設(shè)計(jì)GUI界面用來表示和處理數(shù)據(jù)及用Python進(jìn)行實(shí)踐開發(fā),共分為6個(gè)模塊8個(gè)章節(jié),如圖4所示,其中教學(xué)體系的3種不同模式在內(nèi)容上的區(qū)別主要體現(xiàn)在數(shù)據(jù)獲取與表示、Python高級數(shù)據(jù)處理與可視化、面向?qū)ο蠛蛨D形用戶界面、項(xiàng)目實(shí)踐這4個(gè)部分。
2.1.2 不同內(nèi)容維度實(shí)施方案
我們以網(wǎng)絡(luò)數(shù)據(jù)獲取、數(shù)據(jù)處理與可視化、項(xiàng)目開發(fā)這3個(gè)部分為例說明人文社科類、理工類和商學(xué)類這3種模式在內(nèi)容上的不同,基本設(shè)計(jì)原則是盡可能貼近不同類學(xué)生的特征和各自用Python進(jìn)行應(yīng)用開發(fā)的特點(diǎn),并能培養(yǎng)他們的創(chuàng)新思維和發(fā)揮其潛能,以更快更好地在各自領(lǐng)域中求解問題。
1)網(wǎng)絡(luò)數(shù)據(jù)獲取。
網(wǎng)絡(luò)數(shù)據(jù)獲取主要通過3種方式:一是利用Requests庫抓取網(wǎng)頁,再利用BeautifulSoup庫和re(正則表達(dá)式)模塊進(jìn)行網(wǎng)頁內(nèi)容解析獲取數(shù)據(jù);二是利用Web API或基于Web API的第三方模塊直接獲取數(shù)據(jù);三是利用現(xiàn)成的語料庫或從網(wǎng)頁上直接下載數(shù)據(jù),同時(shí)學(xué)生還需要了解http協(xié)議的一些知識。表1為3類學(xué)生在網(wǎng)絡(luò)數(shù)據(jù)獲取上需要掌握的知識、工具、模塊等內(nèi)容的大致比較。
人文社科類學(xué)生只要掌握基本的網(wǎng)絡(luò)知識,數(shù)據(jù)主要利用第三方API和現(xiàn)成的語料;商學(xué)類學(xué)生需要掌握數(shù)據(jù)抓取和解析的基本內(nèi)容;而理工類學(xué)生則需要掌握更多的內(nèi)容甚至是中大型爬蟲框架Scrapy的基本知識。
2)數(shù)據(jù)處理與可視化。
“用Python玩轉(zhuǎn)數(shù)據(jù)”課程數(shù)據(jù)處理和可視化主要使用著名的Python開源生態(tài)系統(tǒng)SciPy,重點(diǎn)介紹SciPy中包含的NumPy、Matplotlib和pandas這3個(gè)核心模塊,數(shù)據(jù)處理主要使用NumPy和pandas模塊,可視化主要使用Matplotlib和pandas模塊,3類學(xué)生3種模式在這部分也有不同內(nèi)容的要求,主要體現(xiàn)在表2。
人文類學(xué)生主要掌握幾個(gè)模塊的基礎(chǔ)部分并能完成基本的統(tǒng)計(jì)工作和繪制基礎(chǔ)的二維圖;商學(xué)類學(xué)生則還需要更多了解模塊與專業(yè)相關(guān)的函數(shù),繪制適合專業(yè)數(shù)據(jù)的二維圖如蠟燭圖等;理工類學(xué)生則需要掌握各模塊在理工領(lǐng)域的應(yīng)用,如NumPy庫中線性代數(shù)庫、矩陣庫和通用函數(shù)的性能測試,還需要掌握更高級的數(shù)據(jù)處理和分析方法如機(jī)器學(xué)習(xí)工具包scikit-learn中的分類和聚類的常見應(yīng)用。
3)項(xiàng)目開發(fā)。
由于3類學(xué)生在各自基礎(chǔ)、專業(yè)方向等方面存在較大的差異,因此在項(xiàng)目開發(fā)上可以采用彈性要求,不在數(shù)據(jù)獲取和使用算法難度上額外增加要求,重點(diǎn)考查學(xué)生是否能夠揭示所用數(shù)據(jù)隱藏的特征以及較好地處理、分析挖掘這些數(shù)據(jù),也鼓勵(lì)3類學(xué)生混合編組進(jìn)行功能項(xiàng)目的開發(fā)。根據(jù)以往完成項(xiàng)目的統(tǒng)計(jì),3類學(xué)生體現(xiàn)出較明顯的項(xiàng)目特點(diǎn)。
(1)人文社科類學(xué)生,較多地使用自然語言處理NLTK工具包中現(xiàn)成的語料庫如古騰堡項(xiàng)目中各類小說、美國總統(tǒng)就職演說稿等進(jìn)行分析。
(2)理工類學(xué)生,較多地在網(wǎng)絡(luò)上抓取數(shù)據(jù)并進(jìn)行各類統(tǒng)計(jì)分析,項(xiàng)目涉及領(lǐng)域很多,如谷歌學(xué)術(shù)文獻(xiàn)爬取器、地區(qū)空氣污染數(shù)據(jù)分析、百度貼吧表情分析、房價(jià)數(shù)據(jù)挖掘、就職網(wǎng)站職業(yè)需求統(tǒng)計(jì)、微博輿情控制等。
(3)商學(xué)類學(xué)生,主要集中在股票數(shù)據(jù)分析特別是對A股數(shù)據(jù)的各類分析統(tǒng)計(jì)如投資組合推薦、股票漲跌分析等方面。
圖5、圖6和圖7所示是3類學(xué)生開發(fā)的項(xiàng)目示例,有的是同類學(xué)生成組開發(fā)的,也有的混合成組開發(fā)但核心成員都明顯屬于某一類,項(xiàng)目特點(diǎn)鮮明。
2.2 不同的方式維度
面對基礎(chǔ)不同的學(xué)生,要進(jìn)行多樣化教學(xué)難度較大,如何將不同的學(xué)習(xí)任務(wù)布置給不同的學(xué)生并能及時(shí)檢驗(yàn)其學(xué)習(xí)效果和進(jìn)行調(diào)整是應(yīng)該著重研究的主題。經(jīng)過幾輪探索,目前已初步形成一個(gè)較為成熟的多種教學(xué)方式組合的方案,除了利用課堂和部分課外時(shí)間進(jìn)行多樣化特征突出的重要項(xiàng)目開發(fā)外,主要借助以下3個(gè)平臺幫助和平衡3類學(xué)生不同內(nèi)容的學(xué)習(xí)、訓(xùn)練和檢驗(yàn)。
1)MOOC[3]平臺。
MOOC平臺上“用Python玩轉(zhuǎn)數(shù)據(jù)”課程學(xué)習(xí)者遍布各個(gè)年齡層和領(lǐng)域,其課程學(xué)習(xí)過程和結(jié)果的統(tǒng)計(jì)分析數(shù)據(jù)以及各類問題的提出可以給課程迭代提供很好的依據(jù),拓寬Python基礎(chǔ)教學(xué)的廣度,提升內(nèi)涵,給本校學(xué)生的Python學(xué)習(xí)提供很好的基礎(chǔ)支撐。學(xué)生可以在Coursera和中國大學(xué)MOOC在線平臺上使用本課程的視頻、作業(yè)和測試題,主要的使用分為兩種情況。
(1)人文社科類學(xué)生的知識補(bǔ)充。大部分人文社科類學(xué)生沒有學(xué)過程序設(shè)計(jì)課程,沒有什么編程經(jīng)驗(yàn),對于基礎(chǔ)的知識如條件結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、函數(shù)等沒有太多的概念,但是教師在課堂上無法細(xì)講,因此對于這類學(xué)生有額外的要求,即在規(guī)定時(shí)間內(nèi)完成規(guī)定的內(nèi)容學(xué)習(xí)、測試等。
(2)商學(xué)類和理工類學(xué)生的知識提升。大部分商學(xué)類和理工類學(xué)生對于學(xué)習(xí)有更高的要求且基礎(chǔ)好、自學(xué)能力強(qiáng),如用Python進(jìn)行GUI開發(fā)部分由于課堂時(shí)間有限、學(xué)生差異太大等問題不在課堂上重點(diǎn)講解和討論,建議此類學(xué)生在MOOC平臺上自學(xué)并明確完成圖8所示的結(jié)合數(shù)據(jù)獲取、表示和處理的GUI任務(wù)開發(fā)。
2)“課立方”輔助教學(xué)平臺。
過程性評價(jià)在教學(xué)中十分有必要,除了可以及時(shí)了解學(xué)生的課程內(nèi)容掌握情況,還可以提前了解學(xué)生對于某些內(nèi)容的掌握和熟悉程度?!坝肞ython玩轉(zhuǎn)數(shù)據(jù)”課程使用“課立方”輔助教學(xué)平臺,如圖9所示,可以設(shè)置課前小測對學(xué)生已學(xué)或待學(xué)知識進(jìn)行考查和調(diào)查,并且系統(tǒng)有即時(shí)的數(shù)據(jù)分析能夠讓教師及時(shí)了解學(xué)生的反饋,如提前調(diào)查學(xué)生對于某個(gè)知識點(diǎn)的認(rèn)知狀態(tài)有利于把握某些問題的深度,可以更好地照顧到基礎(chǔ)薄弱的學(xué)生如大多數(shù)人文社科類學(xué)生,為多樣化教學(xué)提供依據(jù)。
3)Python OJ平臺。
圖10所示的OJ平臺是日常學(xué)生進(jìn)行編程訓(xùn)練的一種很好的方式,OJ平臺問題難度設(shè)置從低到高,3類學(xué)生均能進(jìn)行共同和專屬內(nèi)容的訓(xùn)練,也是檢驗(yàn)和輔助多樣化內(nèi)容設(shè)置的一種手段;同時(shí)由于OJ平臺的成績是實(shí)時(shí)獲知的且還可以進(jìn)行各類競賽,因此能夠很大地提高學(xué)生的學(xué)習(xí)興趣,讓學(xué)生也可以及時(shí)了解自己的情況,從而主動進(jìn)行基礎(chǔ)訓(xùn)練或提升訓(xùn)練。
通過課堂學(xué)習(xí)、項(xiàng)目開發(fā)及其與這3類平臺的結(jié)合,可以照顧到不同學(xué)生的多樣化教學(xué),輔助完成不同的學(xué)習(xí)任務(wù)及檢測不同學(xué)習(xí)任務(wù)的合理性。
3 結(jié) 語
目前通過幾輪探索和實(shí)踐已初步形成了多樣化可擴(kuò)展的Python教學(xué)體系。通過內(nèi)容和方式兩個(gè)不同維度對3類學(xué)生3種模式進(jìn)行Python多樣化教學(xué),從過程性評價(jià)、學(xué)生開發(fā)的項(xiàng)目等來看效果較好,由于體系中任務(wù)明確、可操作性好,因此可以較容易地將課程共同核心模塊和模式適用的模塊切割出來,并擴(kuò)展到單獨(dú)的人文社科類、理工類,也可以滿足院系定制的需求,只要在共同的課程核心模塊上加上專業(yè)需要的若干第三方庫和案例即可。由于Python的開放性,這些庫一般都有自己的官方網(wǎng)站,有很多公開的案例和代碼,對教師的專業(yè)要求不高。在新一輪教學(xué)計(jì)劃中,已有商學(xué)院、生科院和醫(yī)學(xué)院確定開設(shè)Python定制課程,有一些理工類院系也已經(jīng)開設(shè)Python課程,相信未來Python在計(jì)算機(jī)基礎(chǔ)教學(xué)領(lǐng)域還將有更大的空間。
德國教育家斯多惠說過:“教學(xué)的藝術(shù)不在于傳授本領(lǐng),而在于激勵(lì)、喚醒、鼓舞?!盤ython是一種適合激勵(lì)、喚醒和鼓舞各類學(xué)習(xí)者學(xué)習(xí)、應(yīng)用計(jì)算機(jī)熱情的程序設(shè)計(jì)語言,愿更多的人能加入到Python教學(xué)和學(xué)習(xí)的行列中,這不僅很有意思,也很有意義。
參考文獻(xiàn):
[1] Python[EB/OL]. [2017-05-30]. https://www.python.org/about/gettingstarted/.
[2] Wing J M. Computational thinking[J]. Communications of the ACM, 2006, 49(3): 33-35.
[3] Masters K. A brief guide to understanding MOOCs[J]. The Internet Journal of Medical Education, 2011(2): 1.
(編輯:宋文婷)