啟發式程序設計實訓探索與實踐

時間:2022-06-17 03:29:32

導語:啟發式程序設計實訓探索與實踐一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

啟發式程序設計實訓探索與實踐

隨著以工業互聯網為代表的“第四次工業革命”的到來,以及“新工科”概念的提出,國家對工科學生的創新實踐能力的培養提出了新的要求[1-2]。對于軟件工程專業的學生而言,利用編程語言編寫軟件程序來解決實際問題是必須掌握的一項基本能力,然而在學生學習編程的過程中,依然存在著重理論輕實踐的現象。首先,目前的教材多偏向于理論講解且缺乏導向性[3],絕大多數教材中的示例比較乏味,而且脫離實際,以至學生不愿意主動去動手實踐。其次,課堂教學受場地、設備等限制,往往只能采取講授式教學。這種教學方法不能有效調動學生的學習積極性,導致學生能理解理論知識,但是實踐能力還是沒有得到鍛煉[4]。最后,學生為了取得高績點,主觀上更愿意將精力放在理論的記憶和理解,而忽略了實際編程能力的訓練,導致許多學生考試能得高分,卻仍然不會編寫程序。針對以上問題,一些教師將項目案例引入程序設計的教學過程中,對激發學生編程興趣起到了促進作用[5-6],但是這些方法只是對課堂教學的一種補充。為了進一步提高學生的編程實踐能力,越來越多的高校將程序設計實訓作為一個獨立的實踐環節加入培養方案中。重慶大學軟件工程專業將程序設計實訓作為大一年級的專業必修課,作為實踐教學體系中重要的一環[7]。

1程序設計實訓實施現狀分析

1.1程序設計實訓的目標。學生在進行實訓之前已經初步掌握了面向對象的程序設計思想以及基本的編程理論知識,通過實訓,學生需要達到以下目標。(1)學生應理解面向對象程序設計的基本知識,掌握面向對象分析問題的基本方法。(2)學生應該具有運用一種主流程序開發環境(如MicrosoftVisualStudio),將面向對象分析簡單問題并將其轉化成C++語言代碼的能力以及跟蹤調試程序錯誤的能力。(3)學生應具備運用面向對象的思想分析實際問題,并將其進行編程實現的能力。1.2程序設計實訓中存在的問題。(1)學生習慣了課堂教學中,教師講授為主的授課方式,在實踐環節中往往表現出主動性不強,過于依賴老師的指導。(2)學生缺乏將實際問題轉換成代碼的能力,同時也缺乏調試代碼和獨立解決程序錯誤的能力。(3)對學生的實訓結果評價方式單一,導致學生又回到了以成績為目的的應試思維模式,使得學生對實踐能力的培養失去信心[8]。1.3問題的原因分析(1)學生第一次接觸實踐類課程,還不適應新的教學內容和教學環境,過于依賴老師的指導[9]。因此,教學方式一旦由老師教授,變為獨立開發,就感到無所適從。(2)實訓所涉及的項目除了需要用到面向對象程序設計的知識,還需要用到圖形編程,網絡通信以及數據庫等知識。而這些知識并沒有在大一的時候學習,因此對部分學習能力較差的學生造成了障礙。(3)學生還保留著高中時期的應試教育的學習習慣,還以考試為目的來學習。對于實訓的認識不足,還是以分數為導向,忽略了自身實踐能力的培養。

2項目驅動的啟發式程序設計實訓方法

2.1設計以興趣激發為目的的實訓項目案例。實訓項目作為程序設計實訓的重要依托,既需要涵蓋一定范圍的編程知識,又需要激發學生的興趣。根據程序設計實訓的課程目標,結合工程實踐的特點,按每個人獨立完成一個項目的要求,保證每位學生具有一定量的代碼編寫量;項目類型以基本單機應用、圖形化界面等方面為主。結合學生基礎和具體課程安排,擬定實訓項目供學生選擇。實施的時候將根據學生的測評成績、興趣方向等進行選擇。表1中列出了部分實訓項目案例。這些案例都是根據真實軟件項目經過簡化后的仿真項目。可以讓學生真切地感受到從無到有的軟件創造過程,將看不見摸不著的理論學習,變成可以得到實實在在成果的軟件項目,從而讓學生獲得較大的成就感和自信心。2.2采用結合線上多媒體知識補強和線下項目實踐的實訓方案。為了有效對實訓中涉及的知識進行補強,將程序設計實訓分為2個階段:線上知識補強階段與線下項目實踐階段。2.2.1線上知識補強階段。在進行實際的項目實訓之前,利用網絡資源,包括PPT課件、課程視頻、慕課等多媒體技術,提前學習實訓中所需要的知識。通過一個小課題的實踐,結合理論知識的講解,快速掌握項目開發必備的知識和技能。知識補強以邊學邊做的形式,避免學習的枯燥,提高學習興趣和效果。同時,小課題的練習將極大地提升學生的學習信心,對后面的項目實踐起到較好的示范作用。從而有效彌補學生實際能力與實訓任務之間的鴻溝。2.2.2線下項目實踐階段。在此階段學生將通過9天的線下項目實踐,完成自己所選項目的任務。在實施過程中,通過以下步驟對學生的實訓過程進行有效推進和管理。(1)學生根據自己的興趣自由選擇項目。(2)結合項目階段需求進行重點和難點的理論講授,同時結合項目進行練習,邊學邊練、學以致用,減少純理論授課的枯燥感覺。(3)按照軟件能力成熟度集成模型(CapabilityMaturityModelIntegration,CMMI),開展軟件工程實踐。學生將結合軟件工程的理論知識和CMMI項目管理流程,逐步加強系統分析和設計建模能力,完成從項目啟動到最后驗收交付的全過程。(4)使用任務管理工具,明確個人的項目任務。在任務管理工具中記錄任務完成情況,并以任務完成情況作為個人的考核。(5)通過網絡提供有關的課件、視頻、知識庫等資源,使學生可以通過這些渠道學習、溫習課程內容,加強對技術的掌握,加深對項目的理解。(6)通過現場指導老師每天的任務檢查跟蹤,查看學生日志,及時發現存在的問題并予以解決。通過階段性評審和總結,使學到的知識和技術得到鞏固。2.3建立多維度的程序設計實訓的評價方法。鑒于程序設計實訓的特點,需要改變單一評價方法。通過建立一種多維度的案例教學評價方法,打破學生一直以來的應試思維。該評價方法主要由過程監督及項目評價兩個部分組成。1)過程監督。過程監督主要由出勤情況、日報制度、項目總結3方面組成。(1)出勤情況。實訓的地點由學院統一安排,學生每天需要準時到達實訓教室。學生的出勤情況直接反映出學生的學習狀態,對于經常遲到、早退以及缺勤的學生及時糾正,并將出勤情況計入最終成績。(2)日報制度。讓學生每天將實訓的進展情況形成日報的形式,總結當天的進展及存在的問題,制定第二天的計劃安排,從日報中發現學生的總體進展情況。(3)項目總結。學生在項目完成后,需進行項目總結,評估實訓成果,并以此收集學生反饋意見。2)項目評價。在完成了整個實訓后,通過項目驗收,完成項目交付。項目驗收包括對代碼規模、功能實現、文檔質量等方面的驗收。驗收的結果與考核密切相關。對學生的項目主要從如下10個維度進行評價。功能:功能完整、準確,符合應用需求;界面:界面設計美觀,符合規范;技術:應用最新技術,技術難度高;創新:是否有創新點;演示效果:講解清晰、演示流暢、重點突出;文檔:符合規范,主要是需求、設計、用戶手冊等文檔;規模:代碼數量、數據庫記錄數量;易用性:軟件易于理解、學習和使用,如完善的表單驗證等;可靠性:出錯率低、容錯性強、易于恢復;可維護性:可適應不同場景進行靈活設置,易于識別錯誤和改正等。

3項目驅動的啟發式程序設計實訓實施效果

將實訓方法應用到重慶大學軟件工程專業2017級大一本科生的程序設計實訓中,取得了較好的效果。通過問卷調查的形式,了解了學生對實訓效果的主觀評價。本次發出問卷189份,收回144份,有效問卷133份。1)學生對實訓的總體滿意度。學生對實訓的總體滿意度如圖1所示。該問題是針對學生對實訓情況的總體評價,評價指標分為5個等級:非常滿意、滿意、一般、不滿意、非常不滿意。從圖1中可以看出,“非常滿意”加上“滿意”為78%,說明學生對本次實訓總體上是認可的。2)學生對自己編程能力的評價(滿分5分)。學生對自己編程能力的評價如圖2所示。該問題旨在通過量化的方式讓學生對自己實訓之前和實訓之后的編程能力進行自評,評價指標由低到高分為1~5分。從圖2(a)中可以看出,在實訓前認為自己編程能力只有1分或2分(即編程能力較差)的學生總共占到了53%。而從圖2(b)中可以看出,實訓后認為自己編程能力只有1分或2分的學生僅占到8%。說明大部分認為自己編程能力較差的學生在實訓后編程能力都得到了較大提升。圖2(c)中,反映了學生編程能力的提升幅度,其中有82%的學生認為通過實訓,自己的編程能力有不同程度的提升。通過分析具體的數據,我們發現在能力提升了2分和3分的學生中,大多是實訓認為自己編程能力只有1分或2分的學生。說明通過實訓,對于不擅長編程甚至畏懼編程的學生,編程能力得到了較大的提升。當然從圖2(c)中,同樣可以看出有18%的學生認為通過實訓,自己的編程能力沒有得到提高。通過具體數據分析,我們發現這部分學生大都在實訓前就有4或者5分的自評分,說明他們在實訓前已經擁有了較好編程能力。因此實訓對于這部分學生的編程能力提升不明顯。3)學生對線上知識補強的評價。學生對線上知識補強的評價如圖3所示。該問題旨在分析線上知識補強環節對學生的幫助有多大,評價指標同樣分為5個等級:幫助非常大、幫助比較大、有一定幫助、幫助比較小、沒有幫助。從圖3中可以看出,87%的學生認為線上知識補強對自己有不同程度的幫助。4)學生對項目選題的難度評價。項目選題難度的評價如圖4所示。該問題旨在了解學生對所做項目的難易度進行評價,評價指標分為5個等級:非常難、比較難、適中、簡單、非常簡單。該問題實際上存在兩個影響因素,一個是項目本身難易度,另一個則是學生自身的能力。即使同一個項目,對于不同的學生可能得到不同的評價結果。從圖4中看出,41%的學生認為項目選題具有一定難度,55%的學生認為項目選題難度適中。說明項目選題具有較好的區分度,且學生可以根據自身情況,靈活選擇不同難度的項目。5)學生對所選項目的主觀評價(多選)。學生對所選項目的主觀評價如圖5所示。該問題為多選題,旨在了解學生對項目屬性的評價,一共有4個選項:有趣的、實用的、創造性的、新穎的。由于選項無法窮盡,題目中僅列出我們關心的幾個選項。從圖5中可以看出,認為項目是有趣的學生多于其他選項,說明項目的案例設計達到了激發學生興趣的目的。同時也有接近一半的學生認為項目是實用的。說明學生在選擇項目時也關注項目的實用性。6)學生對項目評分機制的評價。學生對項目評分機制的評價如圖6所示。該問題旨在了解學生對評價機制的認可度,評價指標分為5個等級:非常合理、比較合理、一般、不太合理、非常不合理。從圖6中可以看出,91%的學生對項目的評分機制是認可的,對評價機制不滿意的學生僅占1%。說明多維度、全過程監督的項目評分機制能夠有效地對學生的知識、能力、素質進行有效的評價。綜上所述,大部分學生對實訓效果感到滿意。大部分學生都認為通過實訓自身的編程能力以及解決問題的能力得到了較大的提高,而且對編程不再畏懼,反而越來越感興趣,同時也十分認可項目的評分機制,說明本項目達到了預期的效果。

4結語

目前軟件工程專業的學生在學習程序設計時,普遍存在注重理論學習,而實踐能力不強的問題。針對這一問題,許多高校將程序設計實訓加入到了軟件工程專業的培養體系中,以提高學生編程實踐能力。結合重慶大學軟件工程專業在程序設計實訓中的實際情況,提出的一個項目驅動的啟發式程序設計方法,通過讓學生獨立完成一個真實的程序設計項目來激發學生興趣,從而鍛煉學生的編程能力。實訓過程采用模擬企業環境的管理方式,并采取多維度的方法對學生能力進行綜合評價。通過對學生進行問卷調查分析,該方法受到學生普遍認可,并能有效提高學生程序設計能力。

作者:曾駿 文俊浩 熊慶宇 吳映波 單位:重慶大學