劉亞輝,郭祥云,李桂芝
(1.北京信息科技大學 信息管理學院,北京 100192;2. 北京信息科技大學 計算中心,北京 100192)
Python語言以其接近自然語言、代碼編寫高效以及側重問題求解等特點,已在數據分析、自然語言處理、圖像處理、計算機視覺等領域被廣泛應用。各高校已開設的Python語言課程,一般將其作為大一基礎語言教學,或替代C語言作為新生入門語言。但是,在計算機或信息管理等對計算機編程要求較高的專業,C語言與Java語言仍以自身特色占有一定地位。如果不是作為第一門編程語言開設,則專業應用導向將對教學內容的深度與特色體現提出了更高的要求。傳統的編程語言教學與實踐多圍繞經典算法、數學問題展開,專業性體現不突出,初學編程的學生常常對編程語言的具體應用感到困惑,致使學習動力欠缺。同時,在學時有限的情況下,怎樣充分利用開放式在線教學方法,并將其與課堂教學有效結合,實現翻轉課堂,達到較好的教學效果,也是值得研究的問題[1-2]。
Python語言是一種解釋型、面向對象、動態數據類型的高級程序設計語言。具有簡潔、可讀性強、靈活性好、跨平臺及開源等特點。文獻[3]提到Python語言的教學層次,如果Python語言作為入門語言開課,重點則是編程基礎知識教學;而如果學生學過C、C++或Java等編程語言,則側重Python生態圈,針對具體專業應用學習相應的第三方庫知識。對信息管理類學生,如果Python作為專業應用基礎教學,則可以側重數據分析應用。Python的教學目標根據授課對象不同,主要劃分成兩種: 一種是對沒有編程基礎的大一學生,需要側重Python程序設計的基礎知識點講解與簡單應用,Python語言的優勢是入門容易、趣味性強,可結合圖形圖像、簡單的第三方庫使用講授;如果針對大二有編程基礎的學生,適宜將重點放在Python生態圈的應用,如Pandas、Numpy、Matplotlib等。
如果Python作為新生第一門編程語言,一般會循序漸進地從變量、表達式、程序設計結構、數據類型、函數、列表以及字典等基本知識點出發逐步講授,重點是讓學生理解程序設計方法,能夠利用所學知識編寫基本應用程序。然而,對解決實際問題及專業特色應用上,難以深入講解。各高校不同專業的課程設置有所不同,因而不能一概而論。針對信息管理專業,如果學生在先修了C或Java后,再開設Python,除了簡要介紹Python程序設計的基本知識點外,更多則要考慮本門課與后續課程的銜接。如果在大三開設大數據的相關課程,作為先修課程的Python語言,可側重Python的實踐應用,如基本數據分析方法。具體教學內容設計方案見圖1。

圖1 信息管理類Python語言教學內容設計
首先,對程序設計中常見的知識點進行簡要介紹,但Python語言的列表、字典、元組以及集合的操作與使用需要系統講解。同時,學生編程過程中的常見問題,如字符編碼、異常捕獲與正則表達式等需要進行必要的介紹。Python語言可以利用豐富的第三方庫,使其在機器學習、圖像處理、中文檢索、科學計算以及可視化等方面解決實際問題時凸顯優勢。因此,教學將第三方庫的使用作為講解和實踐的一個重點。特別在數據分析案例教學中,將Numpy庫、Pandas庫作為重點,Matplotlib庫與seaborn庫作為數據分析結果展示,也是必要內容。此外,對數據爬取中的requests和beautifulsoup4也要進行簡要介紹。
(1)針對學過編程語言的學生,在有限的學時內授課內容不能面面俱到,適宜精講細練。例如,講解Python基本概念中的變量、數據類型、運算符、程序結構以及輸入輸出等內容時,可以采用對比已學過的編程語言,相似之處無需贅述,但易錯地方要有示例。像列表、元組、字典與集合等基本知識點,學生以前不了解之處,需適當詳細講解。對數據分析模塊的第三方庫的使用與案例分析,需要重點講解,詳略得當,合理安排有限學時。
(2)要充分利用學科專業優勢和現代教育技術,建設開放式在線教學平臺。由于本學院內包含多個專業,學生的學習基礎有差異,這種局部知識點緊湊講法不夠細致,如果學生編程基礎薄弱,掌握有困難,教師可以把每一知識點錄成視頻,讓學生課后補充缺漏。將課堂教學與在線教學有效結合可以提高課堂教學效果[4]。
(3)數據分析主要用到數據預處理、回歸、分類、聚類等知識,需要本著因材施教的原則選擇適合的算法。信息管理學院涉及的專業有信息系統、管理科學、電子商務與審計等,綜合案例可以結合專業方向進行案例設計,讓學生了解Python在本專業的應用,為后續大數據課程教學奠定基礎。根據學生接受能力,基本算法講解可以由淺入深、通俗易懂地引導學生練習基本使用方法。例如,證券交易數據波動隨時間的變化關系怎樣編程實現?再如,根據身高、體重分析人的胖瘦,主要流程如下:
·利用已有數據集,讀入數據;
·劃分訓練集與測試集;
·使用信息熵作為劃分標準,對決策樹訓練;
·測試結果輸出;
·計算準確率與召回率等評價指標。
(4)共享校外開放平臺課程資源。學生在學習過程中,有限的校內教學資源往往不能滿足優秀學生的求知欲。引導學生利用校外豐富的共享資源輔助學習,對培養學生專業實踐能力與提高學生自學能力起到較好的作用。
在學習Python基本知識后,對于信息管理類學生,如果在大三后開設大數據專業課程,則可在教學中引入簡單的數據分析機器學習算法應用作為綜合教學案例,為學生后續專業課的學習奠定基礎。首先,需要對sklearn庫進行必要的介紹,學生在后續專業課程學習中會遇到信息管理相關的數據分析問題,通過綜合實例的講解,讓學生了解數據分析中涉及的基本算法及編程思路。
(1)用線性回歸模型解決廣告成本與點擊量問題。深入淺出地根據計算思維理論引導學生循序漸進地理解算法。首先,讓學生明確要解決的問題,IPO對應的是什么?為了簡化問題,可將數據存儲在xlsx、csv等表中,將數據劃分為訓練集與測試集,然后調用第三方庫中函數對模型進行訓練與測試,最后進行數據結果分析并可視化。其中,需要重點講清線性回歸的原理,數據訓練模型、參數設定以及如何用訓練集與測試集進行數據預測的思路。
(2)充分利用網絡資源,搜集通俗易懂的小例子。如利用KNN算法[5]根據身高與腳碼判斷性別問題。首先,KNN類似是一個“少數服從多數”的問題,可以結合圖2(a)講清算法的基本原理。對于其中涉及的歸一化必要性、過擬合等問題的描述用圖示說明,如圖2(b)所示。通過舉例、數據計算對比講解,結果通過可視化第三方庫展示。例如,判斷測試樣本F(168,43)的性別。選取身高(cm)與腳碼作為特征值訓練樣本, 分布如下:

圖2 KNN算法應用
A[(180,43),男 ]、B[(179,42),男 ]、C[(166,37),女 ]、D[(176,42),男 ]、E[(161,36),女 ]
通過解決實際問題,學生對利用Python進行數據分析有了初步的認識。更深入的算法內容可以借助開放式教學平臺輔助完成。
(1)實驗內容設計主要從夯實基礎與提高專業應用角度出發,主要針對Python基本知識點的運用、利用第三方庫解決實際問題方面進行安排。實踐教學受學時限制,需要結合課內練習與課外實踐,采用任務驅動方式,讓學生以小組方式完成教師布置的任務。實驗內容設計見圖3,實驗內容在基本知識點模塊,重點練習列表、元組、字典與集合的使用方法,這一部分學時較少;Numpy、Pandas及Matplotlib/Seaborn的使用,是在問題解決中引導學生理解并掌握[6]。在綜合實踐中,側重于Sklearn庫的使用,讓學生加深對已學算法的理解。
此外,由于授課與實踐學時有限,學生可以充分利用校內、外網絡教學平臺資源輔助理解所學內容,如中國大學MOOC、好大學在線等。

圖3 信息管理類Python實驗教學內容設計
Python程序設計的考核方式,有的學校采用在線考核方式,但是受自動判題系統性能的影響,這種方式也存在局限性。因為學時有限,本校大二學生開設課程學時為40學時,其中課堂教學24學時,實驗16學時。學生在掌握本門課程的系統性上略顯不足,則采用上機編程+開卷考核方式。編程考試與平時成績分別占80%、20%。
綜上所述,Python程序設計是需要結合應用實踐,才能展現其魅力的一門課程。
筆者通過分析信息管理類學生的現有程序設計課程情況,針對已有編程基礎的學生如何開展Python語言教學問題展開研究,圍繞信息管理類專業的Python教學內容、教學手段與實踐內容進行探討,提出了有專業側重點的教學模式、教學內容、實驗設計與考核方案,旨在通過課堂授課與實踐內容的合理設計,輔助學生快速入門并掌握用Python解決實際問題的方法。基礎知識點要重點突出、精講細練;通過實踐讓學生快速掌握python的基本使用方法;對第三方庫的使用,則通過典型案例與一定量的配套練習不斷鞏固與加深理解。綜合練習的目標是依據計算思維理論指導學生實踐,提高學生利用所學知識解決實際問題的能力。讓學生在有限學時內掌握python在數據分析、機器學習等方面的基本使用方法,目的是為學生后續大數據課程學習奠定基礎。