孫溢洋 陳樞茜
(南通理工學院計算機與信息工程學院,江蘇 南通 226004)
隨著云計算、大數據和人工智能的快速發展,Python語言因其語法簡潔、跨平臺、開源等特點成為當前最熱門的計算機編程語言之一。TIOBE 最新發布了2021年1月編程語言排行榜,揭曉了2020年度比較受歡迎的編程語言,如圖1所示,其中Python 以2.01 %的正增長榮獲2020年度TIOBE編程語言獎。Python語言的發展潛力及重要性不言而喻。因此《Python程序設計》課程在軟件工程專業中越來越受到重視,成為我校計算機學院軟件工程專業的一門重要的專業課程,其目的是讓學生利用Python語言更好地掌握程序設計的綜合應用與創新能力。

圖1 TIOBE 2021年1月排行榜
《Python程序設計》是我校軟件工程專業的一門專業必修課,占3學分,共64學時,其中理論32學時,實驗32學時。在開設本課程前需要完成C語言程序設計、數據結構等先修課程。主要講解Python語言的基本語法規則及基本應用,如函數、面向對象、I/O編程、數據庫編程等。
作為應用型本科高校,在學生的培養過程中注重學生應用能力的培養,做到理論與實踐并進。本課程主要培養學生的基本編程能力、計算思維能力及問題求解能力,理論學時與實踐學時各半。
近年來軟件行業飛速發展,新技術層出不窮,對軟件從業人員也提出了更高的要求。盡管軟件人才的數量日益增多,但優秀的軟件技術人才匱乏,其原因主要是高校在培養軟件技術人才過程中教學內容與企業實際應用之間存在脫節;缺少對學生工程實踐能力的培養與訓練,同時也缺乏開展工程能力培養所需的教學環境,導致許多軟件專業畢業生的技術儲備無法滿足企業需求,在就業市場缺少競爭力[1-2]。
(1)教學內容與企業實際應用之間存在脫節
目前,《Python程序設計》課程的教學內容基本局限于教材,但教材內容往往并不能與企業實際應用銜接上,學生缺乏對所學內容相關應用背景的了解,并且教學內容未結合企業實際開發場景進行擴展。
(2)缺少對學生工程實踐能力的訓練
實驗教學是本課程培養學生創新能力和工程實踐能力的重要環節,通過項目式實驗教學,能夠幫助學生更好地理解理論知識與培養實踐動手能力,讓學生系統地了解與掌握所學知識。目前本課程的實驗教學中存在的問題是實驗教學內容與工程應用之間存在較大差距,導致學生能夠應用所學知識,但與軟件開發崗位的基本需求存在一定的差距,如學生無法熟練使用程序調試工具、版本控制工具等。
應用型本科人才培養應從軟件企業對人才的實際需求出發,了解企業對人才技能的基本需求,并在教學過程中對學生加以培養。通過調研軟件企業、了解企業對軟件工程人才的基本技能需求后,提出優化實踐教學內容的教學改革方法。結合本課程的特點及教學實踐經驗,在課程學時不變的情況下,最大限度地優化課程內容,采取在實驗課程中介紹相關工程應用及開發工具的使用,促進學生工程素養與能力的提升,具體內容為以下四個方面。
程序調試能力培養:程序調試指重現軟件故障、定位故障根源,最終解決軟件問題分過程,調試程序是軟件開發過程中必不可少的過程。對軟件工程專業的學生來說,掌握程序調試的知識與技能必不可少。但在教學過程中,程序調試技術往往沒有得到重視,學生通常能看懂控制臺中的錯誤提示,但不會借助調試工具定位產生問題的代碼塊。是否能夠熟練地對程序進行調試并快速定位和解決問題是體現程序員綜合能力的標準之一。因此有必要在課程中適當介紹程序調試工具的使用,培養學生的程序調試能力。如在軟件集成開發環境(Intergrated Development Environment,IDE)中常用的“斷點調試”功能,其是調試器調試時最常用的技術之一,基本原理是在程序中某一位置設置一個中斷點,當CPU執行到斷點位置時,便停止被調試的程序,調試者可以實時查看變量的值并跟蹤其變化過程,對于理解程序內部工作原理和發現程序中存在的問題非常有幫助[3]。Python 常用IDE PyCharm的斷點調試界面如圖 2所示。

圖2 PyCharm 斷點調試界面

圖3 程序日志示例
程序調試的教學可安排在基礎語法教學完成之后,在學生掌握已掌握基本的程序設計能力時,通過幾個簡單的示例,教會學生如何通過設置斷點來排查程序中發生的錯誤、查看中間變量的值等功能,使學生掌握斷點調試技術。
程序日志的使用:程序日志是程序在運行過程中對某些操作的記錄,可以用于跟蹤用戶行為、監控系統資源、運行異常記錄等,如圖 3所示,記錄了日志產生的時間、異常等級及提示信息。規范和充分的日志是良好代碼質量的必要因素,也是軟件故障診斷的重要手段[4]。在軟件企業實際開發中,進行程序日志的記錄是非常普遍的,良好的程序日志規則可以大大減輕軟件維護的壓力。而在軟件工程專業學生培養的過程中往往沒有課程涉及程序日志的應用,主要原因是現有教師來自軟件企業,不了解程序日志的作用;或任課教師認為該內容超過了課程的教學范圍,忽視了程序日志在軟件開發中的作用。
程序日志作為一種文件輸出應用,可以嵌入到I/O編程部分介紹,讓學生了解日志的作用,教會學生如何在程序中設置日志規則、添加日志管理代碼,實現日志輸出功能;同時介紹如何讀取日志文件及檢索關鍵字來排查軟件運行中出現的異常。
配置文件的使用:配置文件是一種文檔,專門用于存儲程序運行中所需的配置或初始設置,常見的配置文件擴展名有“.ini”“.conf”和“.xml”等。軟件開發過程中通常將相關配置參數寫入配置文件中,如將數據庫的地址、端口、用戶名、密碼等寫入一個配置文件中,而不是寫死在程序里。如圖 4所示為.ini格式配置文件示例,其內容為連接MySQL數據庫的相關參數,該配置文件內容主要由兩部分組成,其中由方括號括起來的部分稱為節(section),其余部分稱為參數,參數由鍵值對組成,等號前為鍵,等號后為值,配置文件中通常包含多個類似的配置信息。每當需要連接數據庫時,讀取配置文件即可,與寫死在程序中相比,這樣做的優勢是當需要修改數據庫的連接參數時,只需修改配置文件,無須改動代碼,方便維護。

圖4 ini格式配置文件示例
在平常教學過程中,往往缺乏此類實踐,在講解數據庫編程時教師通常直接將數據庫連接參數寫到代碼中,此種方式雖然演示起來方便,但容易在學生面前產生錯誤示范,使學生誤以為在實際工程應用中也采用此種方式連接數據庫。而配置文件的讀取并不復雜,可以在數據庫編程教學中引入配置的文件來使用,通過讀取配置文件獲取連接參數來連接數據庫,讓學生了解實際工程應用方法,養成學生的安全編程意識。
版本控制工具的使用:版本控制工具是軟件開發中用于存儲、追蹤文件和文件修改歷史的軟件,是軟件開發過程中必不可少的工具軟件。常用的版本控制工具有Git和SVN,兩者之間的區別是Git是分布式版本控制系統,SVN是集中式版本控制系統,相比較而言,分布式版本控制系統在安全方面優于集中式版本控制系統,已成為版本控制的優選方案[5],其中Git尤為受到開發團隊的歡迎,結合Github(軟件開發項目的代碼托管平臺)可以實現遠程管理項目代碼,并實現團隊協同開發。軟件企業在實際開發中也離不開版本控制工具,不僅用于軟件版本管理,更多的是用于團隊協作開發。但高校在軟件工程專業學生的培養過程中,一般不會開設相關課程,導致許多學生不了解版本控制工具作用,更談不上如何使用,在走上工作崗位后不僅需要熟悉工作內容,還要學習使用版本控制工具,給初入工作崗位的學生帶來些許壓力。
為幫助學生掌握版本工具的使用,豐富學生的專業背景知識,提升軟件工程專業學生的專業素養,可在本課程的最后利用2~4課時的實驗學時來介紹版本控制工具Git及代碼托管平臺Github的使用,使學生掌握如何使用版本控制工具在本地創建代碼倉庫,進行基本的版本管理操作,如提交、推送、回滾等,以及使用代碼托管平臺將本地代碼上傳到遠程倉庫或將遠程倉庫拉取到本地。
應用型本科教育是以本科教育為主,面向區域經濟社會,以學科為依托,以應用型專業教育為基礎,以社會人才需求為導向,培養高層次應用型人才[6]。為培養學生的工程實踐能力與專業素養,滿足社會發展的需要,應用型本科高校在軟件工程專業學生的培養過程中應注重學生的工程實踐能力與專業素養的結合。作為軟件工程專業的核心課程,《Python程序設計》課程教學內容不能受限于教材,要結合企業實際需求,與時俱進地更新、拓展教學內容,增加工程實踐案例,提升軟件工程專業學生的工程實踐能力及專業素養,以實現學生的技能儲備與社會對軟件人才技能需求的無縫對接,為社會輸出更多的高素質軟件技術人才。