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