畢卉 周新文 張繼
摘要 OBE理念是一種以學(xué)生為中心,以成果為導(dǎo)向的教學(xué)新理念,引導(dǎo)著本科階段的教學(xué)。人工智能專業(yè)作為新興本科專業(yè),培養(yǎng)計劃的制訂上仍需探討。Python作為人工智能領(lǐng)域最常用的編程語言,在人工智能專業(yè)的本科教育階段至關(guān)重要。文章從OBE理念出發(fā),開展案例驅(qū)動的教學(xué)方法,將實例貫穿整個課程的教學(xué)中,可以幫助學(xué)生針對算法開展Python程序語言的學(xué)習(xí),不僅可以增強學(xué)生的編程基礎(chǔ),而且可以提高學(xué)生對于人工智能領(lǐng)域算法的熟悉度,從而具備分析和解決實際問題的能力,真正實現(xiàn)學(xué)以致用。
關(guān)鍵詞 Python程序設(shè)計;人工智能專業(yè);教學(xué)探討
中圖分類號:G642文獻標(biāo)識碼:ADOI:10.16400/j.cnki.kjdk.2023.15.011
OBE理念指的是以成果為導(dǎo)向、以學(xué)生為中心的新型教育理念,在本科階段的教學(xué)過程中起著指導(dǎo)性的作用。人工智能專業(yè)是隨著人工智能領(lǐng)域的發(fā)展和成熟新興起來的本科專業(yè)。人工智能是信息技術(shù)領(lǐng)域引領(lǐng)性的學(xué)術(shù)成果,也是推動社會智能化發(fā)展的決定性力量。隨著人工智能新技術(shù)和新應(yīng)用的不斷涌現(xiàn),迫切需要人工智能課程建設(shè)能夠與學(xué)科發(fā)展相適應(yīng)。人工智能專業(yè)于2018年首次招生,迄今已經(jīng)成為熱點專業(yè)之一。然而,人工智能專業(yè)是在研究生教育階段發(fā)展起來的,如何針對性開展本科階段的課程教學(xué)仍需進一步探討。
Python作為人工領(lǐng)域最常用的編程語言,是人工智能專業(yè)本科教育階段重要的基礎(chǔ)課程。在傳統(tǒng)的計算機學(xué)科的教學(xué)過程中,Python課程的教學(xué)方法多與計算機二級考試接軌,傾向于基本語法、變量類型、運算符等基礎(chǔ)知識。縱觀這些知識,大部分與C語言極其相似,導(dǎo)致了教學(xué)工作的繁復(fù)和學(xué)生的不重視。實際上,對于Python的教學(xué)來說,應(yīng)該將其與C語言進行區(qū)分教學(xué):一方面應(yīng)該加強學(xué)生面向?qū)ο缶幊?,在教學(xué)中更加強調(diào)區(qū)分性,重視Pyhton編程語言中面向?qū)ο蟮木幊趟枷虢榻B,使學(xué)生有能力將基礎(chǔ)編程轉(zhuǎn)向面向?qū)ο缶幊?。通過問卷調(diào)查的教學(xué)反饋也發(fā)現(xiàn),傳統(tǒng)方式教學(xué)對于面向?qū)ο蟮恼n時較少,且缺乏針對性的實驗課時,使得學(xué)生對于面向?qū)ο蟮睦斫馇啡?,需要通過調(diào)整教學(xué)方法幫助學(xué)生對此知識點進行深入理解。另一方面應(yīng)該強化學(xué)生應(yīng)用編程,增加學(xué)生對于Python生態(tài)環(huán)境的理解。這是因為Python除了具備基本函數(shù)庫外,還具有豐富的涉及方方面面應(yīng)用的第三方支持庫。最重要的是,人工智能算法均是基于已經(jīng)開發(fā)完成的第三方工具包開發(fā)的,比如面向計算機視覺的opencv-python、面向自然語言處理的NLTK以及深度學(xué)習(xí)框架pytorch等,這些基于Python開發(fā)的第三方庫會讓學(xué)生對于人工智能算法的應(yīng)用理解和入門都更加容易。
針對上面提到的情況,為了幫助學(xué)生更好地進行Python課程的學(xué)習(xí),作者根據(jù)學(xué)生的反饋在實際教學(xué)采取中了相應(yīng)的措施,通過引入案例的方法開展相關(guān)內(nèi)容的教學(xué),增強了學(xué)生面向?qū)ο缶幊毯蛻?yīng)用編程的能力,提高了學(xué)生的學(xué)習(xí)效果和學(xué)習(xí)興趣。本文將分別從面向?qū)ο蟮陌咐浇虒W(xué)、針對第三方庫的案例式教學(xué)和錯誤異常教學(xué)體系三個角度展開進行詳細介紹。
1面向?qū)ο蟮陌咐浇虒W(xué)體系探討
面向?qū)ο笞鳛橐环N編程思維,與過程式編程截然不同。過程式編程強調(diào)對于工程進行流程化管理。由于學(xué)生最初接觸的是C語言編程,更加熟悉過程式編程,很難構(gòu)建對于面向?qū)ο蟮木幊趟季S。
對于面向?qū)ο蟮木幊陶Z言來說,如何建立面向?qū)ο蟮乃季S至關(guān)重要?,F(xiàn)有的教材往往是對于概念性的語言進行強調(diào),學(xué)生對于此概念的理解往往停留在教材上的知識,比如面向?qū)ο蟮娜髮傩?、面向?qū)ο蟮膬?yōu)點等文字層面,缺乏深入的思考和理解,對于如何進行面向?qū)ο蟮木幊汤斫獠粔蛲笍?。因此,作者嘗試在教學(xué)中從案例出發(fā),結(jié)合實際案例,完成面向?qū)ο髢?nèi)容的教學(xué)過程。
教學(xué)從真實場景的案例出發(fā),案例內(nèi)容為:分別構(gòu)建上海銀行和北京銀行兩個銀行系統(tǒng),實現(xiàn)存錢、取錢和轉(zhuǎn)賬的操作。第一步,教師從案例和真實生活出發(fā),分析銀行系統(tǒng)應(yīng)該具備的特征和功能,進而抽象出其包含的屬性和函數(shù),完成面向?qū)ο蟮念惵暶鞑糠值恼n程內(nèi)容講授;第二步,教師通過對屬性和函數(shù)的進一步分析,抽取出兩個銀行共有的屬性和函數(shù),引出父類和子類的概念,完成相關(guān)內(nèi)容的教學(xué);第三步,在父類和子類教學(xué)的基礎(chǔ)上對于兩個銀行進行進一步引申,完成面向?qū)ο笾兄匾睦^承知識點的講授;第四步,學(xué)生基于面向?qū)ο蟮乃季S,基于教師給出的部分代碼,學(xué)生對代碼空缺部分進行補全、自行完成銀行系統(tǒng)的搭建,開展編程練習(xí)。整個過程的開展,從教師理論講授和學(xué)生動手練習(xí)兩個方面出發(fā),學(xué)生可以更好地理解面向?qū)ο蟮母拍?,進而建立面向?qū)ο蟮木幊趟季S。
在完成該案例教學(xué)后,教師進一步開展理論化教學(xué),引導(dǎo)學(xué)生通過自己的體會梳理出過程式編程和面向?qū)ο缶幊痰膮^(qū)別。在4個課時理論教學(xué)的基礎(chǔ)上,將緊接著開展4個實驗課時的練習(xí),給出面向?qū)ο缶幊痰木唧w實例,讓學(xué)生通過自己編程進一步增強面向?qū)ο蟮木幊趟季S。通過該教學(xué)體系,將真正針對面向?qū)ο蟮慕虒W(xué)環(huán)節(jié)貫徹OBE理念,真正構(gòu)建成果導(dǎo)向的教學(xué)體系。
2針對第三方庫的案例式教學(xué)體系探討
針對第三方庫的案例式教學(xué)將從一套具體應(yīng)用的完整搭建出發(fā),以目標(biāo)為起點,講授系統(tǒng)涉及的所有第三方庫,從第三方庫的導(dǎo)入和使用兩個角度進行教學(xué)過程的開展。以數(shù)據(jù)挖掘中數(shù)據(jù)分類為例,執(zhí)行讀取數(shù)據(jù)出發(fā),數(shù)據(jù)的可視化和數(shù)據(jù)分析的全過程,進而完成整套智能分類系統(tǒng)的搭建。具體教學(xué)過程將從矩陣運算第三方庫numpy出發(fā),依次介紹Matplotlib繪圖庫/Bubbly繪圖庫,進而借助Sklearn機器學(xué)習(xí)算法庫完成對數(shù)據(jù)的分類。通過此案例的系統(tǒng)教學(xué),對數(shù)據(jù)分類任務(wù)開展針對性分析,幫助學(xué)生構(gòu)建針對實際問題的解決思路和代碼流程。
以鳶尾花分類為案例展開。首先對于數(shù)據(jù)進行分析,然后對數(shù)據(jù)進行可視化,最后利用機器學(xué)習(xí)算法支持向量機(SupportVectorMachine,SVM)對數(shù)據(jù)進行分類,教學(xué)過程包括csv文件的讀取、數(shù)據(jù)的2D/3D展示和算法應(yīng)用三個部分。
2.1圖像分類案例講解
通過對csv里的數(shù)據(jù)進行分析可以得到鳶尾花數(shù)據(jù)集為四維向量,包括萼長度、花萼寬度、花瓣長度、花瓣寬度,鳶尾花卉類別有Setosa,Versicolour,Virginica三個種類??梢缘贸觯簲?shù)據(jù)特征格式為4×1,標(biāo)簽格式為1×1。
2.2所涉及的第三方庫講解
①基礎(chǔ)運算庫。Numpy庫作為矩陣運算庫,是人工智能領(lǐng)域最基本的計算庫,也是大部分計算庫的基礎(chǔ)依賴庫。
②數(shù)據(jù)可視化繪圖庫。Matplotlib是Python 2D繪圖領(lǐng)域使用比較廣泛的第三方庫。它能讓使用者很輕松地將數(shù)據(jù)圖形化,并且提供多樣化的輸出格式。利用Matplotlib可以將數(shù)據(jù)很好地進行呈現(xiàn),從而便于從數(shù)據(jù)分布中挖掘信息。Matplotlib支持多種繪圖方法,讓學(xué)生通過不同的繪圖體現(xiàn)數(shù)據(jù)的呈現(xiàn)方式。
Bubbly可以進行3D繪圖,能夠使數(shù)據(jù)可視化效果更加立體。通過本案例可以發(fā)現(xiàn),同一數(shù)據(jù)不同的表示方法帶來的視覺效果并不相同,合適的圖像呈現(xiàn)方法可以幫助我們更好地分析數(shù)據(jù)。
③機器學(xué)習(xí)算法庫。sklearn(也稱為Scikit-learn)是針對Python程序語言開發(fā)的第三方機器學(xué)習(xí)庫,它包括支持向量機、隨機森林、梯度提升、k均值等基礎(chǔ)機器學(xué)習(xí)算法。本案例的目的是利用SVM算法對于鳶尾花數(shù)據(jù)集進行分類。通過該案例,可以幫助學(xué)生更好地理解如何利用數(shù)據(jù)特征進行數(shù)據(jù)分類,以及如何使用sklearn包含的算法對已有數(shù)據(jù)進行分析。
通過上述案例的全過程講授,學(xué)生不僅對第三方庫的使用和導(dǎo)入及具體的應(yīng)用場景有了更加深入的體會,而且對于具體應(yīng)用場景和人工智能算法的結(jié)合有了初步的認(rèn)識。
3異常和錯誤在案例化教學(xué)中的探討
學(xué)生在Python學(xué)習(xí)的初期,會出現(xiàn)代碼異常和錯誤的情況,學(xué)生不能夠根據(jù)出現(xiàn)的錯誤有的放矢地進行調(diào)試。這在案例化教學(xué)中表現(xiàn)尤為突出。但是,對于編程學(xué)習(xí)來說,了解異常和錯誤的類型,有針對性地進行代碼調(diào)試,是獨立編程所需具備的最基本的能力。
從教學(xué)過程中收集錯誤信息,對學(xué)生學(xué)習(xí)Python前半學(xué)期最常見的錯誤異常類型進行列表,經(jīng)過統(tǒng)計排序,重點教學(xué)。另外,梳理其他常見的錯誤進行理論課程講授。同時,在實驗環(huán)節(jié)對學(xué)生進行1對1指導(dǎo),在調(diào)試代碼的過程中,結(jié)合實際對如何解決出現(xiàn)的錯誤進行針對性指導(dǎo),形成理論―實踐閉環(huán)型教學(xué)。
進一步地,將代碼調(diào)試與學(xué)習(xí)、生活結(jié)合起來,讓學(xué)生明白不是所有的事情都是一蹴而就的,有些事情往往需要克服重重困難才能取得成功。鼓勵學(xué)生面對挫折要充滿信心,找對解決方法,就能做好事情。同時,提醒同學(xué)們事前多思考,對于一些問題進行預(yù)判,提升學(xué)生的風(fēng)險防范意識,要為這些異常后果也準(zhǔn)備好相應(yīng)的應(yīng)急預(yù)案。
4小結(jié)
通過針對性開展面向?qū)ο蠛蛯嵗陌咐徒虒W(xué),突出面向?qū)ο蟮木幊趟季S,將Python編程語言和人工智能算法緊密結(jié)合,取得了不錯的教學(xué)效果。為了更好地推行案例化教學(xué),課程組對于考核比重進行了調(diào)整,將項目能力與理論教學(xué)提升至相同的等級,各占50%,更好地促進了學(xué)生動手編程的積極性。
針對人工智能專業(yè)本科生進行Python案例式教學(xué)已經(jīng)試行了一個學(xué)期,課程組通過調(diào)查問卷的形式對學(xué)生的學(xué)習(xí)情況進行了解,問卷結(jié)果表明:案例式教學(xué)可以幫助學(xué)生更好地理解Python語言以及人工智能算法的實現(xiàn);同時,學(xué)生從實際問題出發(fā),通過編程設(shè)計針對性地解決問題,大大提高了學(xué)生的學(xué)習(xí)興趣。
在本案例化方案的基礎(chǔ)上,課程組將進一步推進Python課程的全系列案例化建設(shè),爭取將案例化覆蓋到每一章節(jié)中,真正實現(xiàn)OBE理念下的課程建設(shè)。
基金項目:2023年教育部產(chǎn)學(xué)合作協(xié)同育人項目“數(shù)字信號與圖像處理”(220605181012316);2020年常州大學(xué)校級教育教學(xué)研究課題“強化基礎(chǔ)理論的案例式教學(xué)方式探索”(GJY2020072);2020年常州大學(xué)院級教研課題“面向《計算機控制系統(tǒng)》課程安全式教學(xué)的‘強基計劃”(ZMF20020799)。
參考文獻
[1]楊高明,陸奎,方賢進.人工智能教學(xué)研究探索[J].教育教學(xué)論壇, 2018(35):3-4.
[2]馮驥.“人工智能”課程教學(xué)實踐與探索研究[J].電腦知識與技術(shù), 2019,15(17):126-127,136.
[3]MarkLutz,侯靖.Python學(xué)習(xí)手冊[M].北京:機械工業(yè)出版社,2009.
[4]顧曉東,付瑩.Python教學(xué)細節(jié)探討[J].數(shù)碼世界,2018(8):77-78.
[5]韋依洋,吳一凡,李永遠.Python技術(shù)在數(shù)據(jù)可視化中的應(yīng)用研究[J].福建電腦,2022,38(1):27-31.
[6]郝靜,平夢婷,陳建文,等.基于Python語言的科學(xué)計算課程教學(xué)改革研究[J].計算機時代,2022(1):90-92,96.
[7]陳娟,陳雯,石飛,等.基于Python的信號與系統(tǒng)實驗教學(xué)改革與實踐[J].實驗技術(shù)與管理,2021,38(5):196-200.