韓建民,王麗俠,葉榮華
(1.浙江師范大學 計算機科學與技術系,浙江 金華 321004;2.浙江師范大學 行知學院,浙江 金華 321004)
“教學—訓練—競賽一體化”程序設計能力培養體系的構建
韓建民1,王麗俠2,葉榮華1
(1.浙江師范大學 計算機科學與技術系,浙江 金華 321004;2.浙江師范大學 行知學院,浙江 金華 321004)
分析當前大學生程序設計能力培養存在的問題,提出“教學—訓練—競賽一體化”程序設計能力培養體系,闡述該培養體系的總體框架及模塊間的關系,并說明該培養方案的優勢。
程序設計能力;教學—訓練—競賽一體化;在線自動評測
程序設計能力就是利用計算機解決實際問題的能力,是計算機相關專業學生需要具備的最為重要的能力。程序設計能力的培養也是高校實現計算機專業培養目標的重要組成部分,因此,計算機專業的教師在大學生程序設計能力培養方面做了大量的研究工作。文獻[1—3]探索將ACM競賽模式引入程序設計能力培養的實踐教學中,以提升學生的實踐能力和學習興趣,取得了較好的成效;文獻[4]將大學生程序設計能力的培養分為4個層次,提出了大學生程序設計能力的層次化培養模式;文獻[5]提出了大學生程序設計能力立體化培養模式。
盡管在大學生程序設計能力培養方面高校和教師做出了很多探索,也取得了一定的成效,但目前多數高校的教學方式以課堂教學為中心,以實驗和課后作業為支撐,這種培養模式存在以下不足。
(1)課堂教學偏向理論內容,而實驗實踐教學受學時和空間的限制,學生的實踐能力無法得到充分的鍛煉和提升。
(2)固定的課堂教學和實驗教學使教學內容統一化,難以實現因材施教和個性化培養。
(3)教學體系不完善,以課程教學大綱為依據的課程教學,使學生的解題能力和思維方式難以得到系統化的鍛煉和提升。
為了更好地提升教學質量,實現創新型人才培養目標,我們將ACM競賽實訓模式引入大學生程序設計相關課程的教學中,建立“教學—訓練—競賽一體化”程序設計能力培養模式,并在計算機專業、軟件工程專業、網絡工程專業學生的程序設計能力培養中實施,有效提高大學生的程序設計實踐能力和創新能力,為社會培養高素質的人才。
針對目前創新型人才培養的需要,我們認真研究和探索大學生程序設計能力培養的模式,提出一套“教學—訓練—競賽一體化”人才培養方案。該方案將ACM競賽模式引入程序設計能力的教學及訓練過程中,面向程序設計能力培養的主要課程高級程序設計語言與數據結構分別建立了配套的實訓系統。該實訓系統將教學和實訓緊密集合,構架講練結合、“教學—實訓一體化”第一個層次的程序設計能力培養模式。在這個層次的基礎上,以算法綜合訓練為基礎,以程序設計競賽為目標驅動,構建“訓練—競賽一體化”的教學模式,進而構建“教學—訓練—競賽一體化”多層次的培養體系。該培養體系在學校人才培養中發揮重要的作用,具體體系結構見圖1。

圖1 “教學—訓練—競賽一體化”的人才培養方案
為實現“教學—訓練—競賽一體化”的人才培養方案,需要建立5套題庫及相應的程序設計實訓系統。實訓系統的基本功能類似,只是面向不同訓練的題庫不同。實訓系統的用戶角色可分為非注冊用戶、學生、教師和管理員。管理員的功能包括登錄、管理題庫、管理競賽、管理評測、查看源碼、查看排名等;非注冊用戶的功能包括登錄、查看題目、查看排名等;注冊學生的功能包括登錄、查看代碼、提交代碼、參加比賽、查看排名等;教師的功能包括登錄、查看代碼、查看排名等。系統的用例圖見圖2。

圖2 系統用例圖

圖3 程序在線評測流程圖
實訓系統的實現核心是程序設計在線評測。程序的自動評測流程見圖3,學生向評測系統提交程序源代碼,系統依據提交的先后順序將待評測的源代碼插入待評測隊列,評測內核程序從評測隊列中依次獲取評測源代碼,對其進行編譯、運行、結果比較等操作,并根據操作結果返回相應的信息。具體的出錯信息有:如果源碼編譯錯誤,直接返回編譯錯誤(CE, Compile Error);如果運行超時,直接返回超時錯誤(TLE, Time Limit Error);評測程序將該程序的運行結果與測試數據進行比較,如果完全一致則返回程序運行正確信息(AC, Accept),否則返回運行不正確信息(WA, Wrong Answer)。
在基于“教學—訓練—競賽一體化”的大學生程序設計能力培養的實踐中,我們建立了C語言層次化實訓系統、數據結構實訓系統、程序設計綜合訓練實訓題庫、算法實訓題庫等。
通過實踐,“教學—訓練—競賽一體化”培養方案具有以下優勢。
(1) 將程序設計能力的培養構建在一個統一的框架下,使學生的程序設計能力得到系統化、全方位的培養。
(2) 實訓系統的建立基于ACM競賽實訓模式,針對不同層次的學生分層次地組織實訓內容,有利于實現因材施教。
(3) 實訓的訓練內容在有限的實驗教學中是無法完成的,而實訓系統24小時對外提供服務,學生可以在任何時候、任何地點查看訓練內容、提交代碼,系統實時給予評測。
(4) 實訓內容和實訓模式遵循ACM競賽快樂學習的理念,通過排名機制,極大地激發了學生的刷題熱情。
(5) 實訓代碼的提交,完全實現了計算機自動實時的評測和反饋,極大地減輕了教師評閱程序的負擔。
實踐表明,該培養方案使學生的程序設計能力、解體思路得到了有效的訓練,教學效果明顯提高。
當然,程序設計能力是計算機專業學生的基本能力,而優秀的計算機人才只具有程序設計能力是不夠的。如何將程序設計能力的培養與后續的計算機專業綜合素質的培養相結合,為社會培養出高水平高素質的優秀計算機技術人才,還需要進一步的探索與實踐。
[1] 常子楠. 基于ACM模式的程序設計類課程實踐教學探索[J]. 計算機教育, 2010(16): 144-146.
[2] 穆寶良, 李晉, 韓雪峰. 基于ACM平臺的程序設計課程教學改革[J].軟件工程師, 2013(4): 40-43.
[3] 劉海霞, 冉宇瑤. 基于ACM競賽模式的程序設計類課程實踐教學改革的探討[J]. 工業控制計算機, 2016(29): 39-40.
[4] 韓建民, 王麗俠,賈泂. 大學生程序設計能力的層次化培養模式[J].計算機教育, 2012(3): 15-18.
[5] 周健, 鄭誠. 立體化程序設計能力培養方法[J]. 計算機教育, 2014(4): 56-59.
(編輯:孫怡銘)
1672-5913(2017)03-0061-04
G642
浙江師范大學校級重點教改項目。
韓建民,男,教授,研究方向為信息安全,hanjm@zjnu.cn。