孫溢洋 陳樞茜
(南通理工學院計算機與信息工程學院,江蘇 南通 226004)
隨著云計算、大數(shù)據(jù)和人工智能的快速發(fā)展,Python語言因其語法簡潔、跨平臺、開源等特點成為當前最熱門的計算機編程語言之一。TIOBE 最新發(fā)布了2021年1月編程語言排行榜,揭曉了2020年度比較受歡迎的編程語言,如圖1所示,其中Python 以2.01 %的正增長榮獲2020年度TIOBE編程語言獎。Python語言的發(fā)展?jié)摿爸匾圆谎远鳌R虼恕禤ython程序設計》課程在軟件工程專業(yè)中越來越受到重視,成為我校計算機學院軟件工程專業(yè)的一門重要的專業(yè)課程,其目的是讓學生利用Python語言更好地掌握程序設計的綜合應用與創(chuàng)新能力。
圖1 TIOBE 2021年1月排行榜
《Python程序設計》是我校軟件工程專業(yè)的一門專業(yè)必修課,占3學分,共64學時,其中理論32學時,實驗32學時。在開設本課程前需要完成C語言程序設計、數(shù)據(jù)結(jié)構(gòu)等先修課程。主要講解Python語言的基本語法規(guī)則及基本應用,如函數(shù)、面向?qū)ο?、I/O編程、數(shù)據(jù)庫編程等。
作為應用型本科高校,在學生的培養(yǎng)過程中注重學生應用能力的培養(yǎng),做到理論與實踐并進。本課程主要培養(yǎng)學生的基本編程能力、計算思維能力及問題求解能力,理論學時與實踐學時各半。
近年來軟件行業(yè)飛速發(fā)展,新技術層出不窮,對軟件從業(yè)人員也提出了更高的要求。盡管軟件人才的數(shù)量日益增多,但優(yōu)秀的軟件技術人才匱乏,其原因主要是高校在培養(yǎng)軟件技術人才過程中教學內(nèi)容與企業(yè)實際應用之間存在脫節(jié);缺少對學生工程實踐能力的培養(yǎng)與訓練,同時也缺乏開展工程能力培養(yǎng)所需的教學環(huán)境,導致許多軟件專業(yè)畢業(yè)生的技術儲備無法滿足企業(yè)需求,在就業(yè)市場缺少競爭力[1-2]。
(1)教學內(nèi)容與企業(yè)實際應用之間存在脫節(jié)
目前,《Python程序設計》課程的教學內(nèi)容基本局限于教材,但教材內(nèi)容往往并不能與企業(yè)實際應用銜接上,學生缺乏對所學內(nèi)容相關應用背景的了解,并且教學內(nèi)容未結(jié)合企業(yè)實際開發(fā)場景進行擴展。
(2)缺少對學生工程實踐能力的訓練
實驗教學是本課程培養(yǎng)學生創(chuàng)新能力和工程實踐能力的重要環(huán)節(jié),通過項目式實驗教學,能夠幫助學生更好地理解理論知識與培養(yǎng)實踐動手能力,讓學生系統(tǒng)地了解與掌握所學知識。目前本課程的實驗教學中存在的問題是實驗教學內(nèi)容與工程應用之間存在較大差距,導致學生能夠應用所學知識,但與軟件開發(fā)崗位的基本需求存在一定的差距,如學生無法熟練使用程序調(diào)試工具、版本控制工具等。
應用型本科人才培養(yǎng)應從軟件企業(yè)對人才的實際需求出發(fā),了解企業(yè)對人才技能的基本需求,并在教學過程中對學生加以培養(yǎng)。通過調(diào)研軟件企業(yè)、了解企業(yè)對軟件工程人才的基本技能需求后,提出優(yōu)化實踐教學內(nèi)容的教學改革方法。結(jié)合本課程的特點及教學實踐經(jīng)驗,在課程學時不變的情況下,最大限度地優(yōu)化課程內(nèi)容,采取在實驗課程中介紹相關工程應用及開發(fā)工具的使用,促進學生工程素養(yǎng)與能力的提升,具體內(nèi)容為以下四個方面。
程序調(diào)試能力培養(yǎng):程序調(diào)試指重現(xiàn)軟件故障、定位故障根源,最終解決軟件問題分過程,調(diào)試程序是軟件開發(fā)過程中必不可少的過程。對軟件工程專業(yè)的學生來說,掌握程序調(diào)試的知識與技能必不可少。但在教學過程中,程序調(diào)試技術往往沒有得到重視,學生通常能看懂控制臺中的錯誤提示,但不會借助調(diào)試工具定位產(chǎn)生問題的代碼塊。是否能夠熟練地對程序進行調(diào)試并快速定位和解決問題是體現(xiàn)程序員綜合能力的標準之一。因此有必要在課程中適當介紹程序調(diào)試工具的使用,培養(yǎng)學生的程序調(diào)試能力。如在軟件集成開發(fā)環(huán)境(Intergrated Development Environment,IDE)中常用的“斷點調(diào)試”功能,其是調(diào)試器調(diào)試時最常用的技術之一,基本原理是在程序中某一位置設置一個中斷點,當CPU執(zhí)行到斷點位置時,便停止被調(diào)試的程序,調(diào)試者可以實時查看變量的值并跟蹤其變化過程,對于理解程序內(nèi)部工作原理和發(fā)現(xiàn)程序中存在的問題非常有幫助[3]。Python 常用IDE PyCharm的斷點調(diào)試界面如圖 2所示。
圖2 PyCharm 斷點調(diào)試界面
圖3 程序日志示例
程序調(diào)試的教學可安排在基礎語法教學完成之后,在學生掌握已掌握基本的程序設計能力時,通過幾個簡單的示例,教會學生如何通過設置斷點來排查程序中發(fā)生的錯誤、查看中間變量的值等功能,使學生掌握斷點調(diào)試技術。
程序日志的使用:程序日志是程序在運行過程中對某些操作的記錄,可以用于跟蹤用戶行為、監(jiān)控系統(tǒng)資源、運行異常記錄等,如圖 3所示,記錄了日志產(chǎn)生的時間、異常等級及提示信息。規(guī)范和充分的日志是良好代碼質(zhì)量的必要因素,也是軟件故障診斷的重要手段[4]。在軟件企業(yè)實際開發(fā)中,進行程序日志的記錄是非常普遍的,良好的程序日志規(guī)則可以大大減輕軟件維護的壓力。而在軟件工程專業(yè)學生培養(yǎng)的過程中往往沒有課程涉及程序日志的應用,主要原因是現(xiàn)有教師來自軟件企業(yè),不了解程序日志的作用;或任課教師認為該內(nèi)容超過了課程的教學范圍,忽視了程序日志在軟件開發(fā)中的作用。
程序日志作為一種文件輸出應用,可以嵌入到I/O編程部分介紹,讓學生了解日志的作用,教會學生如何在程序中設置日志規(guī)則、添加日志管理代碼,實現(xiàn)日志輸出功能;同時介紹如何讀取日志文件及檢索關鍵字來排查軟件運行中出現(xiàn)的異常。
配置文件的使用:配置文件是一種文檔,專門用于存儲程序運行中所需的配置或初始設置,常見的配置文件擴展名有“.ini”“.conf”和“.xml”等。軟件開發(fā)過程中通常將相關配置參數(shù)寫入配置文件中,如將數(shù)據(jù)庫的地址、端口、用戶名、密碼等寫入一個配置文件中,而不是寫死在程序里。如圖 4所示為.ini格式配置文件示例,其內(nèi)容為連接MySQL數(shù)據(jù)庫的相關參數(shù),該配置文件內(nèi)容主要由兩部分組成,其中由方括號括起來的部分稱為節(jié)(section),其余部分稱為參數(shù),參數(shù)由鍵值對組成,等號前為鍵,等號后為值,配置文件中通常包含多個類似的配置信息。每當需要連接數(shù)據(jù)庫時,讀取配置文件即可,與寫死在程序中相比,這樣做的優(yōu)勢是當需要修改數(shù)據(jù)庫的連接參數(shù)時,只需修改配置文件,無須改動代碼,方便維護。
圖4 ini格式配置文件示例
在平常教學過程中,往往缺乏此類實踐,在講解數(shù)據(jù)庫編程時教師通常直接將數(shù)據(jù)庫連接參數(shù)寫到代碼中,此種方式雖然演示起來方便,但容易在學生面前產(chǎn)生錯誤示范,使學生誤以為在實際工程應用中也采用此種方式連接數(shù)據(jù)庫。而配置文件的讀取并不復雜,可以在數(shù)據(jù)庫編程教學中引入配置的文件來使用,通過讀取配置文件獲取連接參數(shù)來連接數(shù)據(jù)庫,讓學生了解實際工程應用方法,養(yǎng)成學生的安全編程意識。
版本控制工具的使用:版本控制工具是軟件開發(fā)中用于存儲、追蹤文件和文件修改歷史的軟件,是軟件開發(fā)過程中必不可少的工具軟件。常用的版本控制工具有Git和SVN,兩者之間的區(qū)別是Git是分布式版本控制系統(tǒng),SVN是集中式版本控制系統(tǒng),相比較而言,分布式版本控制系統(tǒng)在安全方面優(yōu)于集中式版本控制系統(tǒng),已成為版本控制的優(yōu)選方案[5],其中Git尤為受到開發(fā)團隊的歡迎,結(jié)合Github(軟件開發(fā)項目的代碼托管平臺)可以實現(xiàn)遠程管理項目代碼,并實現(xiàn)團隊協(xié)同開發(fā)。軟件企業(yè)在實際開發(fā)中也離不開版本控制工具,不僅用于軟件版本管理,更多的是用于團隊協(xié)作開發(fā)。但高校在軟件工程專業(yè)學生的培養(yǎng)過程中,一般不會開設相關課程,導致許多學生不了解版本控制工具作用,更談不上如何使用,在走上工作崗位后不僅需要熟悉工作內(nèi)容,還要學習使用版本控制工具,給初入工作崗位的學生帶來些許壓力。
為幫助學生掌握版本工具的使用,豐富學生的專業(yè)背景知識,提升軟件工程專業(yè)學生的專業(yè)素養(yǎng),可在本課程的最后利用2~4課時的實驗學時來介紹版本控制工具Git及代碼托管平臺Github的使用,使學生掌握如何使用版本控制工具在本地創(chuàng)建代碼倉庫,進行基本的版本管理操作,如提交、推送、回滾等,以及使用代碼托管平臺將本地代碼上傳到遠程倉庫或?qū)⑦h程倉庫拉取到本地。
應用型本科教育是以本科教育為主,面向區(qū)域經(jīng)濟社會,以學科為依托,以應用型專業(yè)教育為基礎,以社會人才需求為導向,培養(yǎng)高層次應用型人才[6]。為培養(yǎng)學生的工程實踐能力與專業(yè)素養(yǎng),滿足社會發(fā)展的需要,應用型本科高校在軟件工程專業(yè)學生的培養(yǎng)過程中應注重學生的工程實踐能力與專業(yè)素養(yǎng)的結(jié)合。作為軟件工程專業(yè)的核心課程,《Python程序設計》課程教學內(nèi)容不能受限于教材,要結(jié)合企業(yè)實際需求,與時俱進地更新、拓展教學內(nèi)容,增加工程實踐案例,提升軟件工程專業(yè)學生的工程實踐能力及專業(yè)素養(yǎng),以實現(xiàn)學生的技能儲備與社會對軟件人才技能需求的無縫對接,為社會輸出更多的高素質(zhì)軟件技術人才。