李 博,董付國,馮煙利,謝青松,宋英杰,徐 猛
(1.山東工商學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山東 煙臺(tái)264005;2. 山東工商學(xué)院 山東省高等學(xué)校協(xié)同創(chuàng)新中心,山東 煙臺(tái)264005)
當(dāng)今是大數(shù)據(jù)的時(shí)代。預(yù)計(jì)到2022年,大數(shù)據(jù)軟硬件以及服務(wù)的整體開支的年增長率為12%,將達(dá)到約952億美元,潛力巨大。從醫(yī)藥到教育,再到其他各個(gè)領(lǐng)域,大數(shù)據(jù)應(yīng)用出現(xiàn)在生活的各個(gè)方面[1-4]。作為軟件工程專業(yè)的學(xué)生,掌握大數(shù)據(jù)分析的基本技能已成為迫在眉睫的要求。近幾年,Python語言以其開發(fā)快、語法較為簡單以及海量的第三方開發(fā)庫[5-7]在大數(shù)據(jù)領(lǐng)域越來越受到國內(nèi)外學(xué)生和教師的歡迎。2017年,在國際權(quán)威調(diào)查組織TIOBLE和權(quán)威期刊IEEE Spectrum對(duì)編程語言流行度的調(diào)查中,Python均名列前茅,在IEEE Spectrum的調(diào)查中更是排名第一,如圖1所示。國內(nèi)很多高校也已經(jīng)紛紛開設(shè)Python課程,甚至在非計(jì)算機(jī)專業(yè)中也將Python作為必修課開設(shè)。因此,軟件工程專業(yè)開設(shè)Python課程勢(shì)在必行,但同時(shí)也要針對(duì)軟件工程專業(yè)的特點(diǎn)進(jìn)行課程建設(shè)。
圖1 TIOBLE 和 IEEE Spectrum 2017編程語言調(diào)查
建設(shè)一門課程首先要建設(shè)該課程的體系標(biāo)準(zhǔn)。為了使課程建設(shè)更加規(guī)范化、標(biāo)準(zhǔn)化和國際化,并且同軟件工程專業(yè)本身的特點(diǎn)緊密結(jié)合,課程建設(shè)體系標(biāo)準(zhǔn)參照了2014年IEEECS/ACM發(fā)布的軟件工程學(xué)位課程本科生指南(Software Engineering 2014)[8]。該標(biāo)準(zhǔn)給出了軟件工程專業(yè)本科教育知識(shí)體系SEEK(Software Engineering Education Knowledge)。SEEK包括計(jì)算必要性(CMP)、數(shù)學(xué)和工程基礎(chǔ)(FND)、專業(yè)實(shí)踐(PRF)、軟件建模與分析(MAA)、需求分析和規(guī)范(REQ)、軟件設(shè)計(jì)(DES)、軟件驗(yàn)證與檢驗(yàn)(VAV),軟件過程(PRO)、軟件質(zhì)量(QA)和安全性(SEC)10個(gè)核心知識(shí)區(qū)域。每一種知識(shí)區(qū)域都有一個(gè)簡短的描述和一個(gè)概括該區(qū)域相關(guān)的單元和主題的表格以及15個(gè)擴(kuò)展的系統(tǒng)與應(yīng)用領(lǐng)域?;赟E2014,山東工商學(xué)院軟件工程專業(yè)結(jié)合Python和專業(yè)特點(diǎn),抽取了Python所對(duì)應(yīng)的知識(shí)區(qū)域,見表1。
表1 Python 知識(shí)域與教學(xué)目標(biāo)
其中k,c,a表示認(rèn)知技能水平,分別為:Knowledge,能夠記住所學(xué)的知識(shí),如日期、事件、地點(diǎn)、中心思想和主題等;Comprehension,理解,例如能夠?qū)⑺鶎W(xué)知識(shí)翻譯成新的上下文,能夠舉一反三進(jìn)行對(duì)比,推斷原因,預(yù)測(cè)后果等;Application,在新場(chǎng)景下使用所學(xué)知識(shí),例如使用信息、方法、概念和理論解決需要的新的問題。E,D表示該部分與課程的關(guān)系,分別為E:核心部分;D:非核心部分。課程教學(xué)計(jì)劃內(nèi)容要同表1相對(duì)應(yīng),共48學(xué)時(shí),如表2。其中分別給出了各內(nèi)容所覆蓋的知識(shí)單元。課程共48課時(shí),包括9個(gè)部分。每個(gè)部分又分別包括目標(biāo)、內(nèi)容、重點(diǎn)、難點(diǎn)、講授提示等。從表1和表2可以看出,Python課程體系標(biāo)準(zhǔn)建設(shè)既考慮了國際上對(duì)軟件工程專業(yè)的要求又兼顧了Python課程本身的內(nèi)容以及對(duì)大數(shù)據(jù)應(yīng)用的需求,體現(xiàn)了針對(duì)軟件工程專業(yè)所設(shè)置的Python課程的特點(diǎn)。
課程資源建設(shè)如果能夠依托教學(xué)名師,則可以借鑒教學(xué)名師的新經(jīng)驗(yàn)、新方法、新思路以及大量豐富的資源,因此會(huì)有事半功倍的效果。教學(xué)名師擁有豐富的經(jīng)過長時(shí)間實(shí)踐驗(yàn)證的課程建設(shè)經(jīng)驗(yàn),課程建設(shè)應(yīng)在名師的指導(dǎo)下,針對(duì)軟件工程專業(yè)對(duì)這些經(jīng)驗(yàn)進(jìn)行整理,加以整合。例如,山東工商學(xué)院軟件工程專業(yè)Python課程建設(shè)帶頭人是董付國老師。董老師在Python領(lǐng)域國內(nèi)具有較高知名度,曾于2016年在“第6屆高等學(xué)校計(jì)算機(jī)程序設(shè)計(jì)課程研討會(huì)”上作大會(huì)報(bào)告;2017年擔(dān)任“全國高校Python課程高級(jí)研修班”主講教師;同年11月入選第二屆“中國大數(shù)據(jù)創(chuàng)新百人榜單”,獲“中國大數(shù)據(jù)學(xué)術(shù)創(chuàng)新獎(jiǎng)”;2018年2月?lián)稳珖咝!皵?shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)”專業(yè)教學(xué)研討會(huì)主講教師之一等。近年擔(dān)任超過30期全國高校/中學(xué)教師或IT企業(yè)員工“Python編程與應(yīng)用”培訓(xùn)班的主講教師,并應(yīng)邀到多所高校作報(bào)告。軟件工程專業(yè)的Python課程借鑒了董老師大量的授課經(jīng)驗(yàn)以及課程建設(shè)體會(huì),并在他的帶領(lǐng)和指導(dǎo)下,針對(duì)軟件工程專業(yè)建設(shè)總結(jié)和整理了相關(guān)經(jīng)驗(yàn)。
表2 Python授課計(jì)劃
線下教學(xué)資源可以分很多種類,如教材、講座等,但從實(shí)際效果來看,還是應(yīng)該以教材為主,以講座、培訓(xùn)等為輔,因?yàn)橐獙?shí)施課程設(shè)置教學(xué)改革必須要以教材為依托。例如,當(dāng)山東工商學(xué)院準(zhǔn)備開設(shè)Python課程時(shí),發(fā)現(xiàn)已有教材難以滿足要求,有的教材語法較多案例較少;有的教材包含大量截圖和代碼運(yùn)行結(jié)果,知識(shí)密度??;有的教材還是沿襲C語言的風(fēng)格。雖然也有幾本書內(nèi)容較好,但只面向特定領(lǐng)域而不適合作為軟件工程專業(yè)教材。因此,在董老師的策劃和組織下,先后編寫并出版了10部Python系列教材,其中有4部教材[9-12]被北京大學(xué)、中國石油大學(xué)、復(fù)旦大學(xué)、中國農(nóng)業(yè)大學(xué)、中國政法大學(xué)等國內(nèi)近百所高校選作專業(yè)課程教材[13]。
線上資源要利用當(dāng)今比較流行或者受眾量大的工具例如微信、QQ群等。例如山東工商學(xué)院Python課程線上資源主要包括一個(gè)微信公眾號(hào)“Python小屋”和12個(gè)長期維護(hù)的QQ群。微信公眾號(hào)“Python小屋”已經(jīng)免費(fèi)分享了600多篇Python技術(shù)文章,目前關(guān)注人數(shù)超過2.4萬,訪問量超過100萬。公眾號(hào)中包括出版的一系列教材的配套課件PPT、源代碼、習(xí)題答案、教學(xué)大綱、教案等配套資源。其中教學(xué)課件多達(dá)1 900多頁,堪稱Python大全,主要包括基礎(chǔ)知識(shí)(106頁)、Python序列(154頁)、選擇與循環(huán)結(jié)構(gòu)語法案例(96頁)、字符串與正則表達(dá)式(109頁)、函數(shù)設(shè)計(jì)與應(yīng)用(134頁)、面向?qū)ο蟪绦蛟O(shè)計(jì)(86頁)、文件操作(132頁)、異常處理與結(jié)構(gòu)調(diào)試測(cè)試(70頁)、課程群建設(shè)探討與實(shí)踐(163頁)等。公眾號(hào)還包括包含多達(dá)1 000道的Python題庫和一個(gè)包含100多個(gè)免費(fèi)教學(xué)視頻的網(wǎng)絡(luò)地址(https://pan.baidu.com/s/1jJeAs8Q)。
QQ群以其中一個(gè)包括全國諸多高校教師、企業(yè)員工和高小學(xué)生的QQ群“Python技術(shù)交流教師群”(群號(hào):150784726)為例。該群目前共有902人,囊括了工學(xué)、醫(yī)學(xué)、農(nóng)學(xué)、文學(xué)、藝術(shù)等各類數(shù)百所高校教師和數(shù)十家科技公司員工以及部分積極活躍的在校大學(xué)生。群里的資源主要包括一個(gè)使用Python編寫的課堂管理系統(tǒng),一個(gè)和北京紅亞華宇科技有限公司聯(lián)合開發(fā)Python的實(shí)訓(xùn)系統(tǒng)。群里每天信息交流活躍,很多教師和學(xué)生因此受益匪淺。
大量的教學(xué)資源為軟件工程專業(yè)的Python課程建設(shè)和開展提供了豐富的素材,讓課程建設(shè)能夠順利、快速地開展。
要想讓軟件工程專業(yè)同學(xué)對(duì)Python課程有豐富的興趣,教學(xué)案例的選擇尤為關(guān)鍵。有了豐富的資源支撐,教師在選擇案例時(shí)就會(huì)得心應(yīng)手,能夠用生動(dòng)的案例搭建Python程序設(shè)計(jì)與實(shí)際解決問題之間的橋梁,使理論知識(shí)能夠更好地與實(shí)踐應(yīng)用相結(jié)合。學(xué)生對(duì)問題感興趣,自然會(huì)提升學(xué)習(xí)Python來解決問題的興趣,學(xué)以致用,用以促學(xué),從而達(dá)到學(xué)好Python的目的,取得了很好的實(shí)際效果。Python的優(yōu)勢(shì)之一在于書寫快速而簡單,很多Python對(duì)象都體現(xiàn)了這一點(diǎn),例如Python中的集合,使用集合快速提取出序列中所有不重復(fù)元素。如果使用傳統(tǒng)思維方式編寫代碼為:
但如果使用集合只需要一行代碼,極大簡化了工作量:
理解了集合的方便之處,進(jìn)一步擴(kuò)展實(shí)例,可以使用集合來方便快速解決用戶電影喜好問題:對(duì)于一個(gè)用戶甲來說,系統(tǒng)向其推薦電影,可以采用的策略是找到與甲用戶喜好相近的用戶,例如乙,再找出乙用戶喜歡看的電影推薦給甲。前提是系統(tǒng)中已經(jīng)建立好了一部分用戶和電影的喜好對(duì)應(yīng)關(guān)系。
代碼清單如下:
除了以上的案例,在進(jìn)行案例選擇時(shí)也要注意同大數(shù)據(jù)的結(jié)合,這也是軟件工程專業(yè)學(xué)生開設(shè)Python課的主要目的。例如Python中的SciPy是專門用來進(jìn)行科學(xué)計(jì)算和數(shù)據(jù)處理的模塊。可以選取學(xué)生喜歡的動(dòng)物并使用SciPy中的函數(shù)來進(jìn)行處理,如圖2是使用SciPy模塊中的函數(shù)進(jìn)行不同處理后的效果。
從以上兩個(gè)例子可以看出,如果教學(xué)實(shí)例選擇合適,既能引起學(xué)生的興趣,使同學(xué)們深入理解Python語言,又能使用Python解決實(shí)踐中遇到的問題。
圖2 SciPy模塊中的函數(shù)進(jìn)行不同處理后的效果
當(dāng)今大數(shù)據(jù)時(shí)代,國內(nèi)很多高校都已經(jīng)充分認(rèn)識(shí)到Python語言的重要性,并紛紛開設(shè)Python語言課程。對(duì)于軟件工程專業(yè)來說,在建設(shè)Python課程的同時(shí)也要兼顧軟件工程專業(yè)對(duì)學(xué)生的能力要求。本文介紹了面向軟件工程專業(yè)的Python課程建設(shè)方法。根據(jù)軟件工程本科教育的國際標(biāo)準(zhǔn)來制定Python課程的體系結(jié)構(gòu),建設(shè)豐富的課程課外資源,以專業(yè)能力培養(yǎng)為導(dǎo)向,讓學(xué)生把所學(xué)的Python知識(shí)融于實(shí)踐,再針對(duì)實(shí)踐中遇到的問題來學(xué)習(xí)新知識(shí)進(jìn)行求解,這樣相互促進(jìn),不斷提高解決問題的能力。山東工商學(xué)院軟件工程專業(yè)的課程建設(shè)已經(jīng)取得了一定的成果,例如,建設(shè)了大量的線上線下教學(xué)資源,大大增強(qiáng)了學(xué)生對(duì)該課程的興趣。軟件工程專業(yè)的同學(xué)選擇Python作為畢業(yè)設(shè)計(jì)開發(fā)工具的比例,從課程改革之前的20%提高到了目前的60%,且有超過一半的同學(xué)對(duì)Python處理大數(shù)據(jù)也產(chǎn)生了濃厚的興趣。課程改革另一個(gè)目的是為新一輪軟件工程專業(yè)建設(shè)和認(rèn)證提供更好的支撐。