詹 煒 向 華 李文華
(長江大學計算機科學學院 湖北·荊州 434023)
程序設計課程是計算機大類專業的核心課程,是數據結構、操作系統原理、算法設計與分析等計算機核心課程的前序課程。當今世界,超級計算、大數據、云計算和人工智能技術的快速發展,對高校理工科學生的程序設計能力提出了更高層次的要求,尤其是對于計算類專業的學生,程序設計是必備的基本能力。
傳統的程序設計類課程教學模式存在諸多問題:(1)過于注重理論知識的傳授,易忽視學生的實踐能力和編程思維能力培養;(2)單一的現場教學模式無法滿足所有學生的要求;(3)課后學生不能及時進行編程實踐,無法及時得到反饋結果,缺乏自我評估過程;(4)現場上機教學過程中,教師難以準確快速評估學生的程序設計實踐能力,上機或實踐成績評測不全面。
OJ(Online Judge)來源于ACM國際大學生程序設計大賽,是基于B/S模式設計的開源系統,OJ能夠在線收集數據、進行評價、提供及時反饋消息。目前國內外許多知名高校均建立了自己的OJ平臺。如:北京大學(http://acm.pku.edu.cn/JudgeOnline)、浙江大學(http://acm.zju.edu.cn)和杭州電子科技大學(http://acm.hdu.edu.cn)等。

圖1:分層次程序設計實踐教學培養模式
針對上述問題和長江大學學生特點和程序設計類課程的編程實踐的迫切需求,基于OJ原型,本文教研團隊擬自主研發長江大學程序設計在線評測系統Yangtze University Online Judge(以下簡稱YUersOJ),系統搭建好完成后,對內網學生開放注冊帶有程序設計的經典題庫和拔高題庫,(1)基礎功能:YUersOJ方便學生根據題目難易分值刷題,系統自動實時在線評測源代碼并給出錯誤提示,包括對輸出結果、格式、運行時間、占用內存資源等的判別等;(2)引導功能:引導學有余力的同學提供課外程序設計刷題平臺,進一步提高編程能力;(3)培育功能:作為參加CCF、ACM或其他級別程序設計賽事的選手競賽集訓平臺。達到根據學生層次分級針對性實踐教學的目的。如圖1所示:(1)對于低年級本科生,平臺用于訓練學生的基本上機實踐能力培養;(2)對于學有余力的同學,平臺提供數據結構及算法設計類題目刷題功能;(3)舉辦各種比賽,例如新生挑戰賽,校園每月競賽,通過編程競賽,激發興趣,營造氛圍,選擇優秀學生,參加培訓團隊,進而參加各種各層次編程競賽,平臺進一步為其提供參賽集訓服務。
在OJ平臺上,教師在平臺上的只是提供一些基本的理論課程內容和知識體系,學生在線上編程過程中可以不斷地提交自己的作業,以此來豐富教學內容。學生人數眾多,教師通過學生提交的各種思路各異的解決方法了解學生的知識掌握情況,教師和學生組建成教學共同體。
YUersOJ平臺設置了闖關模式,供學有余力的學生自己學習。關卡分為六個等級水平分別是入門、普通、提高、省賽、全國賽、ACM。所有在YUersOJ平臺上學習的學生形成了一個群體,其中的每一個人都渴望更高的排名和分數,這就使得學生積極主動的去參與學習和任務。
YUersOJ平臺可以記錄每一位學生的每一道題的答題情況,實現過程性評價。YUersOJ平臺允許同一道作業反復提交、反復測評,最后達到最優結果。從程序設計類課程上機成績評分的角度看,過程評測更加有說服力和參考價值,更好的引導學生。教師可根據學生答題數據分析,明確學生可能存在的知識點瓶頸和難點,從而及時調整授課重點。
YUersOJ平臺設計了“在線比賽”功能模塊。學生在平臺上同場競技,不僅可以了解自己的編程水平,而且可以和志同道合的各類程序設計高手交流學習。
(1)聯系實際,挖掘人文內涵,在教學過程中,透過具體的知識和內容,挖掘隱藏在知識背后的思維方式、價值觀念和文化意義;
(2)觸類旁通,培養創新精神。在教學過程中注重介紹程序設計方法,注重舉一反三,強調前后知識遷移,鼓勵應用創新,引導學生在應用實踐中掌握編程語言知識。將不同的程序設計方法進行分類,總結每類問題的程序設計思路,引導學生融會貫通,培養創新和實踐能力;
(3)精選實例,促進深入思考。通過典型程序實例,引導學生思考分析其中的人生感悟,培養學生的良好品質,成為有理想信念、敢于擔當的時代新人。引導學生在實際生活和工作中也要識大局,注重細節,注重良好的習慣養成,做到懂規矩、守紀律,努力學習,不斷提高自己的能力;
(4)營造氛圍,做到榜樣引領。課內課外,線上線下,真誠地關愛學生,幫助學生解決難以解決的實際問題,營造融洽的學習氛圍,體現教師對學生的人文關懷,做有溫度的教學。
多層次,一貫制的實踐教學方式以“理解鞏固課程內容,培養程序設計能力,規范軟件開發習慣,孕育解決問題的思維”為目標。在實際的教學內容實施過程中,應該遵循客觀規律,“取其精華,去其糟粕”,利用行業前沿的新知識去更新舊理論,并對教學內容多層次劃分,最終凝練出“課內實驗—課外作業—綜合實踐—科技競賽”的層次的教學鏈,如圖2所示。與此同時,教師團隊可以利用具體的開發案例,讓學生使用結構化編程和面向對象編程兩種方法分別實現,以便他們可以比較兩種方法的異同點,也可以讓學生比較哪種案例適合哪種編程方式。

圖2:多層次、一貫制實踐教學鏈
平臺建成后,應用價值高、覆蓋面較廣,推廣價值高,對固本強基,按層次培養學生有很好的促進作用。
程序類設計課程是計算機大類專業的基礎課程,更是學習數據結構、操作系統、算法設計與分析的前序課程。程序設計能力是當今高校生特別是計算機專業的學生必備的技能,尤其在當下大數據和人工智能技術風起云涌的時代。本文設計的編程類課程上機實踐教學模式擬針對我院2019級、2020級和2021級學生開展實施,涉及的編程語言C、C++、Java、Python。其應用價值及推廣按層次遞進如下:(1)長江大學所有擬開設程序設計課程的學生和任課教師使用;(2)作為全校理工科學生計算機程序設計能力基礎訓練平臺;(3)作為全校理工科學生算法設計與分析以及實現訓練平臺;(4)作為欲參加中國大學生計算機程序設計大賽、計算機學院CCF程序設計大賽、ACM程序設計大賽以及其他程序設計賽事的刷題訓練平臺。
平臺建成后,應用價值高、覆蓋面較廣,推廣價值高,對固本強基,按層次培養學生將會起到很好的促進作用。