魏冬梅,王 影,鐘世芬,陳紅紅
(西華大學(xué) 計(jì)算機(jī)與軟件工程學(xué)院,四川 成都 610039)
Python是當(dāng)前非常流行的動(dòng)態(tài)腳本語(yǔ)言,近年來(lái)已經(jīng)連續(xù)被Tiobe評(píng)為互聯(lián)網(wǎng)時(shí)代最有價(jià)值的編程工具之一,2017年排名已上升至第四位。隨著敏捷開(kāi)發(fā)思想和方法越來(lái)越多地被企業(yè)級(jí)開(kāi)發(fā)團(tuán)隊(duì)所采用,涉及網(wǎng)絡(luò)運(yùn)維、金融大數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等方向的Python的應(yīng)用越來(lái)越廣泛,基于Python構(gòu)建的項(xiàng)目也越來(lái)越多。Python發(fā)展如此迅速,逐漸得到高校的重視,很多高校開(kāi)始將Python納入專業(yè)必修或選修課程,旨在培養(yǎng)學(xué)生編程思維和實(shí)際開(kāi)發(fā)能力。然而,由于Python在國(guó)內(nèi)起步較晚,現(xiàn)有的課程體系及培養(yǎng)模式還存在一些不足,種種現(xiàn)狀透射出Python課程教學(xué)應(yīng)當(dāng)與時(shí)俱進(jìn),順應(yīng)市場(chǎng)發(fā)展需要和大數(shù)據(jù)發(fā)展趨勢(shì),制定課程改革方案,及時(shí)更新課程體系和框架,以實(shí)現(xiàn)更完善、高標(biāo)準(zhǔn)的培養(yǎng)目標(biāo)。
Python起源于1989年底,由谷歌(Google)的工程師Guido van Rossum發(fā)明,設(shè)計(jì)該語(yǔ)言的初衷是為了讓編程像“ABC語(yǔ)言”一樣簡(jiǎn)潔明了,事實(shí)上,Python的確具有語(yǔ)法簡(jiǎn)潔清晰,可以很輕松地調(diào)用其他語(yǔ)言(如C語(yǔ)言或C++)編寫(xiě)的模塊(DLL文件)。Python以其快速的開(kāi)發(fā)速度,在計(jì)算機(jī)編程普及的一些國(guó)家被廣泛應(yīng)用,在國(guó)際上也得到了足夠的認(rèn)可,但在中國(guó)的發(fā)展還處于起步階段。
市場(chǎng)對(duì)Python人才需求陡增,而學(xué)校教育培養(yǎng)不能及時(shí)滿足市場(chǎng)的人才需求,產(chǎn)生該方向?qū)I(yè)人才缺口;在國(guó)內(nèi),Python的研究資料相較于C語(yǔ)言或C++要欠缺得多,發(fā)展并不理想,很多學(xué)生在課后無(wú)法找到解決問(wèn)題的方法;Python是動(dòng)態(tài)語(yǔ)言,俗稱膠水語(yǔ)言,相對(duì)于其他高級(jí)語(yǔ)言,擁有較少的數(shù)據(jù)類型、結(jié)構(gòu)等語(yǔ)法知識(shí),然而傳統(tǒng)程序設(shè)計(jì)語(yǔ)言的教學(xué)都會(huì)偏重于對(duì)語(yǔ)法的講解和知識(shí)的傳授,沒(méi)有過(guò)多地從思考問(wèn)題、分析問(wèn)題、解決問(wèn)題的能力方面培養(yǎng)學(xué)生的編程思維,教學(xué)方法不科學(xué)、不合理。
將Python課程立足于實(shí)際項(xiàng)目需求,采用CDIO工程教學(xué)理念,從課程體系、教學(xué)策略、教學(xué)框架和教學(xué)特色等方面對(duì)課程進(jìn)行改革,改革傳統(tǒng)的教學(xué)方法、教學(xué)實(shí)施和考核方式,探索一套符合本課程實(shí)際的課程教學(xué)模式。在課程內(nèi)容設(shè)計(jì)方面,突出工程教育的特點(diǎn);在教學(xué)實(shí)施環(huán)節(jié),強(qiáng)調(diào)理論教學(xué)與課內(nèi)外實(shí)踐相結(jié)合,提出分組教學(xué)與創(chuàng)新團(tuán)隊(duì)教學(xué)的模式;改革考核方式,提出讓學(xué)生參與的綜合實(shí)踐評(píng)價(jià)體系。
CDIO,指構(gòu)思(conceive)、設(shè)計(jì)(design)、實(shí)現(xiàn)(implement)和運(yùn)作(operate),是由美國(guó)麻省理工學(xué)院和瑞典皇家理工學(xué)院等4所大學(xué)提出的現(xiàn)代高等工程教育理念,它以現(xiàn)代產(chǎn)品的生命周期為藍(lán)本;以重視學(xué)生實(shí)踐能力、學(xué)習(xí)能力以及系統(tǒng)掌控能力培養(yǎng)為主題,培養(yǎng)學(xué)生的工程科學(xué)能力、知識(shí)能力、終生學(xué)習(xí)能力、團(tuán)隊(duì)協(xié)作能力和職業(yè)能力。目前,丹麥、芬蘭、法國(guó)、新加坡等國(guó)家的20多所大學(xué)加入了CDIO合作計(jì)劃。
基于CDIO和Python語(yǔ)言特征和發(fā)展趨勢(shì),對(duì)課程進(jìn)行重新整理和設(shè)計(jì),構(gòu)建新的課程體系。由于Python語(yǔ)言本身非常精練,應(yīng)用項(xiàng)目涉及領(lǐng)域非常廣泛,因此,將重點(diǎn)放在實(shí)踐環(huán)節(jié)和項(xiàng)目演練,課程框架主要由Python及擴(kuò)展應(yīng)用庫(kù)組成,如圖1所示。
Python是一種面向?qū)ο?、直譯式的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,第一個(gè)公開(kāi)發(fā)行版發(fā)行于1991年,語(yǔ)法簡(jiǎn)捷而清晰,具有豐富和強(qiáng)大的類庫(kù),是Google公司的四大開(kāi)發(fā)語(yǔ)言之一。本課程主要以當(dāng)前最流行的敏捷式腳本開(kāi)發(fā)工具Python進(jìn)行教學(xué)。通過(guò)課程的學(xué)習(xí),學(xué)生需深刻理解動(dòng)態(tài)語(yǔ)言的特征,區(qū)分與C語(yǔ)言、Java、C++等語(yǔ)言之間的聯(lián)系與不同;學(xué)生通過(guò)學(xué)習(xí)優(yōu)秀的編程理念和方法,掌握敏捷式開(kāi)發(fā)以及Python程序開(kāi)發(fā)相關(guān)的知識(shí)和技能;通過(guò)腳本語(yǔ)言編程方法的學(xué)習(xí),提升學(xué)生程序邏輯思維、奠定編程基礎(chǔ);學(xué)生需掌握Python的數(shù)據(jù)結(jié)構(gòu)和語(yǔ)法以及運(yùn)行和調(diào)試的方法,函數(shù)式編程技巧;重點(diǎn)培養(yǎng)學(xué)生應(yīng)用Python解決綜合問(wèn)題的能力,包括數(shù)據(jù)分析、文本處理、圖形編程和Web編程等應(yīng)用;要求學(xué)生利用實(shí)驗(yàn)教學(xué)設(shè)備采集數(shù)據(jù)、實(shí)現(xiàn)編程處理,培養(yǎng)學(xué)生的自主學(xué)習(xí)能力、綜合應(yīng)用能力、創(chuàng)新設(shè)計(jì)能力。
教師在教學(xué)中注重與學(xué)生交流、注重教學(xué)反饋,根據(jù)學(xué)生的實(shí)際情況來(lái)設(shè)定目標(biāo)等級(jí),做到分階梯、分階段的合理教學(xué)。分階梯指根據(jù)學(xué)生的個(gè)體差異,分層教學(xué),既照顧到大多數(shù)同學(xué),又讓實(shí)踐能力強(qiáng)的同學(xué)充分發(fā)揮;分階段指將教學(xué)過(guò)程分為認(rèn)知階段、基本能力培養(yǎng)階段、創(chuàng)新與實(shí)踐階段。如針對(duì)基礎(chǔ)好的學(xué)生,除要求其完成基本的學(xué)習(xí)任務(wù)之外,應(yīng)當(dāng)正確引導(dǎo)其進(jìn)行超前學(xué)習(xí),擴(kuò)展知識(shí)的方向,使其獲得真實(shí)項(xiàng)目體驗(yàn)或參加各類大學(xué)生競(jìng)賽的信息,擴(kuò)大知識(shí)面。
根據(jù)課程的培養(yǎng)目標(biāo)和構(gòu)建的課程體系,理論教學(xué)要為項(xiàng)目實(shí)訓(xùn)打好基礎(chǔ),項(xiàng)目實(shí)訓(xùn)也要為提高工程能力而服務(wù),因此,理論教學(xué)與項(xiàng)目實(shí)訓(xùn)的比例基本為2:3,這有助于幫助學(xué)生梳理知識(shí),明確學(xué)習(xí)目標(biāo),為實(shí)踐操作搭建一個(gè)合理穩(wěn)固的知識(shí)體系。
理論教學(xué)的具體實(shí)施分3個(gè)階段進(jìn)行。第一階段以Python基礎(chǔ)教學(xué)為主,重點(diǎn)介紹Python數(shù)據(jù)基礎(chǔ)及數(shù)據(jù)結(jié)構(gòu)、基本語(yǔ)法及Python面向?qū)ο缶幊袒A(chǔ)。第二階段以Python科學(xué)計(jì)算領(lǐng)域應(yīng)用為主,介紹Numpy庫(kù)及Scipy庫(kù)的基本使用。第三階段,根據(jù)學(xué)生的興趣與特長(zhǎng),引導(dǎo)學(xué)生分類選擇學(xué)習(xí)相關(guān)的高級(jí)應(yīng)用方向,如擅長(zhǎng)Web方向的同學(xué),引導(dǎo)其朝網(wǎng)絡(luò)運(yùn)維和信息采集方向?qū)W習(xí);善于多媒體方向的,引導(dǎo)其學(xué)習(xí)圖形圖像處理及Python游戲擴(kuò)展。
圖1 Python課程體系
項(xiàng)目驅(qū)動(dòng)是CDIO模式中倡導(dǎo)的主要教學(xué)手段,整個(gè)課程通過(guò)一個(gè)完整的案例進(jìn)行組織,在教學(xué)過(guò)程中為學(xué)生建立真實(shí)軟件項(xiàng)目開(kāi)發(fā)的工作框架,引導(dǎo)學(xué)生“做中學(xué)”,提高學(xué)生的學(xué)習(xí)能力和工程實(shí)踐能力,使學(xué)生能夠從中得到實(shí)戰(zhàn)經(jīng)驗(yàn)。教學(xué)過(guò)程深入淺出、循序漸進(jìn),按照真實(shí)項(xiàng)目案例,在每一個(gè)知識(shí)點(diǎn)提升階段,以綜合實(shí)訓(xùn)的方式布置任務(wù),制定基于CDIO項(xiàng)目的實(shí)訓(xùn)任務(wù),見(jiàn)表1。
在教學(xué)過(guò)程中,將學(xué)生以2~4人分組,分配實(shí)訓(xùn)任務(wù),并將任務(wù)拆分成若干模塊,讓組內(nèi)成員獨(dú)立完成后再整合,既訓(xùn)練學(xué)生的獨(dú)立解決問(wèn)題的能力,又培養(yǎng)團(tuán)隊(duì)協(xié)作精神。任務(wù)完成后,教師可從小組中選拔出特別優(yōu)秀的小組,幫助他們成立創(chuàng)新創(chuàng)業(yè)團(tuán)隊(duì),甚至利用自己的技術(shù)在校內(nèi)外承接項(xiàng)目。
考慮到課程體系內(nèi)容實(shí)踐性強(qiáng)、擴(kuò)展應(yīng)用層面廣,單一考核模式不能客觀反映學(xué)生的真實(shí)水平,因此,考核方式需要打破傳統(tǒng)。學(xué)生成績(jī)由實(shí)訓(xùn)(40%)+項(xiàng)目(50%)+評(píng)價(jià)(10%)3部分組成,實(shí)訓(xùn)部分以平常的知識(shí)模塊及實(shí)訓(xùn)任務(wù)為參考;項(xiàng)目任務(wù)部分以分組完成的實(shí)際項(xiàng)目作為考查與評(píng)價(jià)的核心;評(píng)價(jià)部分以小組或團(tuán)隊(duì)提交的項(xiàng)目為依據(jù),各組通過(guò)答辯對(duì)項(xiàng)目進(jìn)行展示和講解,教師與同學(xué)共同打分,教師點(diǎn)評(píng)。
基于CDIO模式的Python課程教學(xué)改革的多項(xiàng)措施已應(yīng)用于日常教學(xué),從教學(xué)效果及學(xué)生反饋來(lái)看,課程改革取得了一定成效,其中分組項(xiàng)目實(shí)訓(xùn)和團(tuán)隊(duì)組建挖掘出很多有潛力的學(xué)生團(tuán)隊(duì),他們已經(jīng)具備獨(dú)立承擔(dān)小型項(xiàng)目和參與中型項(xiàng)目的能力??梢钥闯?,基于CDIO的課程改革能更好地達(dá)到教學(xué)目標(biāo),提高學(xué)生成績(jī)、提升實(shí)踐能力,對(duì)學(xué)生未來(lái)專業(yè)發(fā)展有極大的促進(jìn)作用。
表 1 基于CDIO項(xiàng)目的實(shí)訓(xùn)任務(wù)
[1]王碩旺, 洪成文. CDIO: 美國(guó)麻省理工學(xué)院工程教育的經(jīng)典模式: 基于對(duì)CDIO課程大綱的解讀[J]. 理工高教研究, 2009, 28(4):116-1l9.
[2]韓智, 張振虹, 李興娟. 基于CDIO理念的軟件工程課程教學(xué)改革[J]. 計(jì)算機(jī)教育, 2010(11): 56-59.
[3]嵩天, 黃天羽, 禮欣. Python語(yǔ)言: 程序設(shè)計(jì)課程教學(xué)改革的理想選擇[J]. 中國(guó)大學(xué)教學(xué), 2016(2): 42-47.
[4]姚競(jìng). 面向項(xiàng)目的“Python程序設(shè)計(jì)”教學(xué)實(shí)踐與研究[J]. 福建電腦, 2009(7): 198-199.
[5]Hetland M L. Python基礎(chǔ)教程[M]. 司維, 曾軍崴, 譚穎華, 等, 譯. 2版. 北京: 人民郵電出版社, 2010.
[6]Chun W J. Python核心編程 [M]. 宋吉廣, 譯. 2版. 北京: 人民郵電出版社, 2009.