劉亞輝,郭祥云,李桂芝
(1.北京信息科技大學(xué) 信息管理學(xué)院,北京 100192;2. 北京信息科技大學(xué) 計(jì)算中心,北京 100192)
Python語(yǔ)言以其接近自然語(yǔ)言、代碼編寫(xiě)高效以及側(cè)重問(wèn)題求解等特點(diǎn),已在數(shù)據(jù)分析、自然語(yǔ)言處理、圖像處理、計(jì)算機(jī)視覺(jué)等領(lǐng)域被廣泛應(yīng)用。各高校已開(kāi)設(shè)的Python語(yǔ)言課程,一般將其作為大一基礎(chǔ)語(yǔ)言教學(xué),或替代C語(yǔ)言作為新生入門(mén)語(yǔ)言。但是,在計(jì)算機(jī)或信息管理等對(duì)計(jì)算機(jī)編程要求較高的專業(yè),C語(yǔ)言與Java語(yǔ)言仍以自身特色占有一定地位。如果不是作為第一門(mén)編程語(yǔ)言開(kāi)設(shè),則專業(yè)應(yīng)用導(dǎo)向?qū)?duì)教學(xué)內(nèi)容的深度與特色體現(xiàn)提出了更高的要求。傳統(tǒng)的編程語(yǔ)言教學(xué)與實(shí)踐多圍繞經(jīng)典算法、數(shù)學(xué)問(wèn)題展開(kāi),專業(yè)性體現(xiàn)不突出,初學(xué)編程的學(xué)生常常對(duì)編程語(yǔ)言的具體應(yīng)用感到困惑,致使學(xué)習(xí)動(dòng)力欠缺。同時(shí),在學(xué)時(shí)有限的情況下,怎樣充分利用開(kāi)放式在線教學(xué)方法,并將其與課堂教學(xué)有效結(jié)合,實(shí)現(xiàn)翻轉(zhuǎn)課堂,達(dá)到較好的教學(xué)效果,也是值得研究的問(wèn)題[1-2]。
Python語(yǔ)言是一種解釋型、面向?qū)ο?、?dòng)態(tài)數(shù)據(jù)類型的高級(jí)程序設(shè)計(jì)語(yǔ)言。具有簡(jiǎn)潔、可讀性強(qiáng)、靈活性好、跨平臺(tái)及開(kāi)源等特點(diǎn)。文獻(xiàn)[3]提到Python語(yǔ)言的教學(xué)層次,如果Python語(yǔ)言作為入門(mén)語(yǔ)言開(kāi)課,重點(diǎn)則是編程基礎(chǔ)知識(shí)教學(xué);而如果學(xué)生學(xué)過(guò)C、C++或Java等編程語(yǔ)言,則側(cè)重Python生態(tài)圈,針對(duì)具體專業(yè)應(yīng)用學(xué)習(xí)相應(yīng)的第三方庫(kù)知識(shí)。對(duì)信息管理類學(xué)生,如果Python作為專業(yè)應(yīng)用基礎(chǔ)教學(xué),則可以側(cè)重?cái)?shù)據(jù)分析應(yīng)用。Python的教學(xué)目標(biāo)根據(jù)授課對(duì)象不同,主要?jiǎng)澐殖蓛煞N: 一種是對(duì)沒(méi)有編程基礎(chǔ)的大一學(xué)生,需要側(cè)重Python程序設(shè)計(jì)的基礎(chǔ)知識(shí)點(diǎn)講解與簡(jiǎn)單應(yīng)用,Python語(yǔ)言的優(yōu)勢(shì)是入門(mén)容易、趣味性強(qiáng),可結(jié)合圖形圖像、簡(jiǎn)單的第三方庫(kù)使用講授;如果針對(duì)大二有編程基礎(chǔ)的學(xué)生,適宜將重點(diǎn)放在Python生態(tài)圈的應(yīng)用,如Pandas、Numpy、Matplotlib等。
如果Python作為新生第一門(mén)編程語(yǔ)言,一般會(huì)循序漸進(jìn)地從變量、表達(dá)式、程序設(shè)計(jì)結(jié)構(gòu)、數(shù)據(jù)類型、函數(shù)、列表以及字典等基本知識(shí)點(diǎn)出發(fā)逐步講授,重點(diǎn)是讓學(xué)生理解程序設(shè)計(jì)方法,能夠利用所學(xué)知識(shí)編寫(xiě)基本應(yīng)用程序。然而,對(duì)解決實(shí)際問(wèn)題及專業(yè)特色應(yīng)用上,難以深入講解。各高校不同專業(yè)的課程設(shè)置有所不同,因而不能一概而論。針對(duì)信息管理專業(yè),如果學(xué)生在先修了C或Java后,再開(kāi)設(shè)Python,除了簡(jiǎn)要介紹Python程序設(shè)計(jì)的基本知識(shí)點(diǎn)外,更多則要考慮本門(mén)課與后續(xù)課程的銜接。如果在大三開(kāi)設(shè)大數(shù)據(jù)的相關(guān)課程,作為先修課程的Python語(yǔ)言,可側(cè)重Python的實(shí)踐應(yīng)用,如基本數(shù)據(jù)分析方法。具體教學(xué)內(nèi)容設(shè)計(jì)方案見(jiàn)圖1。
圖1 信息管理類Python語(yǔ)言教學(xué)內(nèi)容設(shè)計(jì)
首先,對(duì)程序設(shè)計(jì)中常見(jiàn)的知識(shí)點(diǎn)進(jìn)行簡(jiǎn)要介紹,但Python語(yǔ)言的列表、字典、元組以及集合的操作與使用需要系統(tǒng)講解。同時(shí),學(xué)生編程過(guò)程中的常見(jiàn)問(wèn)題,如字符編碼、異常捕獲與正則表達(dá)式等需要進(jìn)行必要的介紹。Python語(yǔ)言可以利用豐富的第三方庫(kù),使其在機(jī)器學(xué)習(xí)、圖像處理、中文檢索、科學(xué)計(jì)算以及可視化等方面解決實(shí)際問(wèn)題時(shí)凸顯優(yōu)勢(shì)。因此,教學(xué)將第三方庫(kù)的使用作為講解和實(shí)踐的一個(gè)重點(diǎn)。特別在數(shù)據(jù)分析案例教學(xué)中,將Numpy庫(kù)、Pandas庫(kù)作為重點(diǎn),Matplotlib庫(kù)與seaborn庫(kù)作為數(shù)據(jù)分析結(jié)果展示,也是必要內(nèi)容。此外,對(duì)數(shù)據(jù)爬取中的requests和beautifulsoup4也要進(jìn)行簡(jiǎn)要介紹。
(1)針對(duì)學(xué)過(guò)編程語(yǔ)言的學(xué)生,在有限的學(xué)時(shí)內(nèi)授課內(nèi)容不能面面俱到,適宜精講細(xì)練。例如,講解Python基本概念中的變量、數(shù)據(jù)類型、運(yùn)算符、程序結(jié)構(gòu)以及輸入輸出等內(nèi)容時(shí),可以采用對(duì)比已學(xué)過(guò)的編程語(yǔ)言,相似之處無(wú)需贅述,但易錯(cuò)地方要有示例。像列表、元組、字典與集合等基本知識(shí)點(diǎn),學(xué)生以前不了解之處,需適當(dāng)詳細(xì)講解。對(duì)數(shù)據(jù)分析模塊的第三方庫(kù)的使用與案例分析,需要重點(diǎn)講解,詳略得當(dāng),合理安排有限學(xué)時(shí)。
(2)要充分利用學(xué)科專業(yè)優(yōu)勢(shì)和現(xiàn)代教育技術(shù),建設(shè)開(kāi)放式在線教學(xué)平臺(tái)。由于本學(xué)院內(nèi)包含多個(gè)專業(yè),學(xué)生的學(xué)習(xí)基礎(chǔ)有差異,這種局部知識(shí)點(diǎn)緊湊講法不夠細(xì)致,如果學(xué)生編程基礎(chǔ)薄弱,掌握有困難,教師可以把每一知識(shí)點(diǎn)錄成視頻,讓學(xué)生課后補(bǔ)充缺漏。將課堂教學(xué)與在線教學(xué)有效結(jié)合可以提高課堂教學(xué)效果[4]。
(3)數(shù)據(jù)分析主要用到數(shù)據(jù)預(yù)處理、回歸、分類、聚類等知識(shí),需要本著因材施教的原則選擇適合的算法。信息管理學(xué)院涉及的專業(yè)有信息系統(tǒng)、管理科學(xué)、電子商務(wù)與審計(jì)等,綜合案例可以結(jié)合專業(yè)方向進(jìn)行案例設(shè)計(jì),讓學(xué)生了解Python在本專業(yè)的應(yīng)用,為后續(xù)大數(shù)據(jù)課程教學(xué)奠定基礎(chǔ)。根據(jù)學(xué)生接受能力,基本算法講解可以由淺入深、通俗易懂地引導(dǎo)學(xué)生練習(xí)基本使用方法。例如,證券交易數(shù)據(jù)波動(dòng)隨時(shí)間的變化關(guān)系怎樣編程實(shí)現(xiàn)?再如,根據(jù)身高、體重分析人的胖瘦,主要流程如下:
·利用已有數(shù)據(jù)集,讀入數(shù)據(jù);
·劃分訓(xùn)練集與測(cè)試集;
·使用信息熵作為劃分標(biāo)準(zhǔn),對(duì)決策樹(shù)訓(xùn)練;
·測(cè)試結(jié)果輸出;
·計(jì)算準(zhǔn)確率與召回率等評(píng)價(jià)指標(biāo)。
(4)共享校外開(kāi)放平臺(tái)課程資源。學(xué)生在學(xué)習(xí)過(guò)程中,有限的校內(nèi)教學(xué)資源往往不能滿足優(yōu)秀學(xué)生的求知欲。引導(dǎo)學(xué)生利用校外豐富的共享資源輔助學(xué)習(xí),對(duì)培養(yǎng)學(xué)生專業(yè)實(shí)踐能力與提高學(xué)生自學(xué)能力起到較好的作用。
在學(xué)習(xí)Python基本知識(shí)后,對(duì)于信息管理類學(xué)生,如果在大三后開(kāi)設(shè)大數(shù)據(jù)專業(yè)課程,則可在教學(xué)中引入簡(jiǎn)單的數(shù)據(jù)分析機(jī)器學(xué)習(xí)算法應(yīng)用作為綜合教學(xué)案例,為學(xué)生后續(xù)專業(yè)課的學(xué)習(xí)奠定基礎(chǔ)。首先,需要對(duì)sklearn庫(kù)進(jìn)行必要的介紹,學(xué)生在后續(xù)專業(yè)課程學(xué)習(xí)中會(huì)遇到信息管理相關(guān)的數(shù)據(jù)分析問(wèn)題,通過(guò)綜合實(shí)例的講解,讓學(xué)生了解數(shù)據(jù)分析中涉及的基本算法及編程思路。
(1)用線性回歸模型解決廣告成本與點(diǎn)擊量問(wèn)題。深入淺出地根據(jù)計(jì)算思維理論引導(dǎo)學(xué)生循序漸進(jìn)地理解算法。首先,讓學(xué)生明確要解決的問(wèn)題,IPO對(duì)應(yīng)的是什么?為了簡(jiǎn)化問(wèn)題,可將數(shù)據(jù)存儲(chǔ)在xlsx、csv等表中,將數(shù)據(jù)劃分為訓(xùn)練集與測(cè)試集,然后調(diào)用第三方庫(kù)中函數(shù)對(duì)模型進(jìn)行訓(xùn)練與測(cè)試,最后進(jìn)行數(shù)據(jù)結(jié)果分析并可視化。其中,需要重點(diǎn)講清線性回歸的原理,數(shù)據(jù)訓(xùn)練模型、參數(shù)設(shè)定以及如何用訓(xùn)練集與測(cè)試集進(jìn)行數(shù)據(jù)預(yù)測(cè)的思路。
(2)充分利用網(wǎng)絡(luò)資源,搜集通俗易懂的小例子。如利用KNN算法[5]根據(jù)身高與腳碼判斷性別問(wèn)題。首先,KNN類似是一個(gè)“少數(shù)服從多數(shù)”的問(wèn)題,可以結(jié)合圖2(a)講清算法的基本原理。對(duì)于其中涉及的歸一化必要性、過(guò)擬合等問(wèn)題的描述用圖示說(shuō)明,如圖2(b)所示。通過(guò)舉例、數(shù)據(jù)計(jì)算對(duì)比講解,結(jié)果通過(guò)可視化第三方庫(kù)展示。例如,判斷測(cè)試樣本F(168,43)的性別。選取身高(cm)與腳碼作為特征值訓(xùn)練樣本, 分布如下:
圖2 KNN算法應(yīng)用
A[(180,43),男 ]、B[(179,42),男 ]、C[(166,37),女 ]、D[(176,42),男 ]、E[(161,36),女 ]
通過(guò)解決實(shí)際問(wèn)題,學(xué)生對(duì)利用Python進(jìn)行數(shù)據(jù)分析有了初步的認(rèn)識(shí)。更深入的算法內(nèi)容可以借助開(kāi)放式教學(xué)平臺(tái)輔助完成。
(1)實(shí)驗(yàn)內(nèi)容設(shè)計(jì)主要從夯實(shí)基礎(chǔ)與提高專業(yè)應(yīng)用角度出發(fā),主要針對(duì)Python基本知識(shí)點(diǎn)的運(yùn)用、利用第三方庫(kù)解決實(shí)際問(wèn)題方面進(jìn)行安排。實(shí)踐教學(xué)受學(xué)時(shí)限制,需要結(jié)合課內(nèi)練習(xí)與課外實(shí)踐,采用任務(wù)驅(qū)動(dòng)方式,讓學(xué)生以小組方式完成教師布置的任務(wù)。實(shí)驗(yàn)內(nèi)容設(shè)計(jì)見(jiàn)圖3,實(shí)驗(yàn)內(nèi)容在基本知識(shí)點(diǎn)模塊,重點(diǎn)練習(xí)列表、元組、字典與集合的使用方法,這一部分學(xué)時(shí)較少;Numpy、Pandas及Matplotlib/Seaborn的使用,是在問(wèn)題解決中引導(dǎo)學(xué)生理解并掌握[6]。在綜合實(shí)踐中,側(cè)重于Sklearn庫(kù)的使用,讓學(xué)生加深對(duì)已學(xué)算法的理解。
此外,由于授課與實(shí)踐學(xué)時(shí)有限,學(xué)生可以充分利用校內(nèi)、外網(wǎng)絡(luò)教學(xué)平臺(tái)資源輔助理解所學(xué)內(nèi)容,如中國(guó)大學(xué)MOOC、好大學(xué)在線等。
圖3 信息管理類Python實(shí)驗(yàn)教學(xué)內(nèi)容設(shè)計(jì)
Python程序設(shè)計(jì)的考核方式,有的學(xué)校采用在線考核方式,但是受自動(dòng)判題系統(tǒng)性能的影響,這種方式也存在局限性。因?yàn)閷W(xué)時(shí)有限,本校大二學(xué)生開(kāi)設(shè)課程學(xué)時(shí)為40學(xué)時(shí),其中課堂教學(xué)24學(xué)時(shí),實(shí)驗(yàn)16學(xué)時(shí)。學(xué)生在掌握本門(mén)課程的系統(tǒng)性上略顯不足,則采用上機(jī)編程+開(kāi)卷考核方式。編程考試與平時(shí)成績(jī)分別占80%、20%。
綜上所述,Python程序設(shè)計(jì)是需要結(jié)合應(yīng)用實(shí)踐,才能展現(xiàn)其魅力的一門(mén)課程。
筆者通過(guò)分析信息管理類學(xué)生的現(xiàn)有程序設(shè)計(jì)課程情況,針對(duì)已有編程基礎(chǔ)的學(xué)生如何開(kāi)展Python語(yǔ)言教學(xué)問(wèn)題展開(kāi)研究,圍繞信息管理類專業(yè)的Python教學(xué)內(nèi)容、教學(xué)手段與實(shí)踐內(nèi)容進(jìn)行探討,提出了有專業(yè)側(cè)重點(diǎn)的教學(xué)模式、教學(xué)內(nèi)容、實(shí)驗(yàn)設(shè)計(jì)與考核方案,旨在通過(guò)課堂授課與實(shí)踐內(nèi)容的合理設(shè)計(jì),輔助學(xué)生快速入門(mén)并掌握用Python解決實(shí)際問(wèn)題的方法?;A(chǔ)知識(shí)點(diǎn)要重點(diǎn)突出、精講細(xì)練;通過(guò)實(shí)踐讓學(xué)生快速掌握python的基本使用方法;對(duì)第三方庫(kù)的使用,則通過(guò)典型案例與一定量的配套練習(xí)不斷鞏固與加深理解。綜合練習(xí)的目標(biāo)是依據(jù)計(jì)算思維理論指導(dǎo)學(xué)生實(shí)踐,提高學(xué)生利用所學(xué)知識(shí)解決實(shí)際問(wèn)題的能力。讓學(xué)生在有限學(xué)時(shí)內(nèi)掌握python在數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等方面的基本使用方法,目的是為學(xué)生后續(xù)大數(shù)據(jù)課程學(xué)習(xí)奠定基礎(chǔ)。