吳舜歆 梁寶蘭(電子科技大學(xué)中山學(xué)院,廣東中山528402)
?
Online Judge在C++程序設(shè)計課程實踐教學(xué)中的應(yīng)用*
吳舜歆梁寶蘭
(電子科技大學(xué)中山學(xué)院,廣東中山528402)
摘要:針對傳統(tǒng)應(yīng)用型本科C++程序設(shè)計課程實踐教學(xué)中存在的問題,將原本應(yīng)用于訓(xùn)練ACM-ICPC選手的“在線評測系統(tǒng)”引入到教學(xué)中來。同時,針對傳統(tǒng)的“在線評測系統(tǒng)”由于實施黑盒測試存在的缺陷進(jìn)行改造,從而使得其能用來訓(xùn)練學(xué)生的函數(shù)設(shè)計能力和面向?qū)ο缶幊棠芰?。讓學(xué)生得到更加全面、徹底的訓(xùn)練。
關(guān)鍵詞:online judge;C++程序設(shè)計;實踐教學(xué)
Abstract:Aiming at the problems existing in the practice teaching of the traditional application oriented C++ programming course, online judge which was originally applied to the training of ACM-ICPC players is introduced into the teaching. At the same time, according to the traditional online judge since the implementation of black box testing defects of transformation, so that it can be used to train students' ability of function design and object-oriented programming ability. Let the students get more comprehensive and thorough training.
Keywords:online judge; C++ programming; practice teaching
C++程序設(shè)計課程是很多高校計算機專業(yè)的第一門專業(yè)課,學(xué)好該課程對學(xué)生后續(xù)的專業(yè)學(xué)習(xí)非常重要,不但有助于打好專業(yè)基礎(chǔ),也有助于提高學(xué)好本專業(yè)的自信心。在這門課程的教學(xué)中存在的主要問題是學(xué)生實踐環(huán)節(jié)比較欠缺。缺乏大量的編程訓(xùn)練,達(dá)不到課程的教學(xué)要求。
目前的C++程序設(shè)計課程的實踐環(huán)節(jié)主要存在以下問題:學(xué)生上機實踐的時間較少,不能透過大量編程實踐掌握程序設(shè)計的相關(guān)理論、方法。學(xué)生上機寫程序,往往限于自身的水平,對測試數(shù)據(jù)考慮不全面,從而導(dǎo)致程序?qū)懲曛箅S便找?guī)讉€測試數(shù)據(jù)測一測,如果沒有問題,就算程序是正確的。實際上,對于初學(xué)程序設(shè)計的學(xué)生來說,如何設(shè)計更加全面的測試數(shù)據(jù)確實是一個不小的挑戰(zhàn)。所以往往出現(xiàn)這樣的情況,學(xué)生的程序?qū)嶋H上是錯的,但由于學(xué)生使用的測試數(shù)據(jù)比較片面,從而誤以為程序是正確的。對于課程書面作業(yè),學(xué)生交上來的程序很多時候連編譯都通不過。
“在線評測系統(tǒng)”O(jiān)nline Judge起源于ACM國際大學(xué)生程序設(shè)計競賽(ACM-ICPC)。它是一種B/S架構(gòu)的在線程序設(shè)計評測系統(tǒng),實施黑盒測試。用戶登錄系統(tǒng)提交相關(guān)題目的源代碼,系統(tǒng)會即時地返回評測的結(jié)果。系統(tǒng)返回的結(jié)果有:(1)正確。(2)格式錯。原因:程序輸出可能有多余的空格或空行。(3)答案錯。原因:算法不正確。(4)運行錯。原因:除零、錯誤指針、下標(biāo)越界等運行時錯誤。(5)編譯錯。原因:語法錯誤。(6)超時。原因:算法效率太低或存在死循環(huán)。(7)程序輸出數(shù)據(jù)超出限制。原因:輸出太多。
程序設(shè)計“在線評測系統(tǒng)”具有一定量的題目,同時更重要的是它具有以下功能:(1)實時判題。學(xué)生可以在任何地方、任何時間做題,然后提交自己的源代碼。系統(tǒng)會實時地對學(xué)生的代碼進(jìn)行評測,并給出相應(yīng)的評測結(jié)果。如果學(xué)生提交的代碼不正確,學(xué)生可以對代碼進(jìn)行修改,然后再次提交。(2)布置作業(yè)。老師可以根據(jù)實際教學(xué)的需要在系統(tǒng)里面布置作業(yè),限定本班的同學(xué)才能參與。系統(tǒng)會對學(xué)生提交的代碼進(jìn)行實時的評判,并對學(xué)生的做題情況進(jìn)行排名,不需要人工干預(yù)。同時老師可以設(shè)定作業(yè)的截止提交時間,超過截止時間系統(tǒng)將拒收作業(yè)。老師可以登陸系統(tǒng)一目了然地知道學(xué)生的做題情況。(3)組織比賽(或課程測驗)。老師可以根據(jù)教學(xué)的需要適當(dāng)?shù)亟M織一些比賽(或課程測驗),以此調(diào)動學(xué)生的學(xué)習(xí)積極性。系統(tǒng)會自動評測學(xué)生提交的代碼,并對學(xué)生進(jìn)行實時的排名,比賽一結(jié)束,比賽結(jié)果同時就出爐。(4)論壇。學(xué)生可以在論壇上討論相關(guān)的題目,互相學(xué)習(xí)。
筆者自2007年以來開始指導(dǎo)學(xué)生參加ACM-ICPC相關(guān)賽事,取得了一定的成績,其中包括亞洲區(qū)域賽的獎項。自2009年以來,開始在C++程序設(shè)計的實踐教學(xué)中推廣使用Online Judge,取得了不錯的效果。筆者根據(jù)應(yīng)用型本科學(xué)生的實際情況,對題庫進(jìn)行精心設(shè)計,力求學(xué)生在學(xué)習(xí)C++程序設(shè)計的第一天就能夠在系統(tǒng)做題,以此來提高學(xué)生的動手能力和專業(yè)的自信心。
我校的題庫,題目根據(jù)實際教學(xué)的需要進(jìn)行精心設(shè)計,分為以下幾個部分:第一部分:入門題目。學(xué)生學(xué)習(xí)程序設(shè)計的第一天便能解決的題目,主要涉及題庫輸入、輸出的練習(xí),整除性,簡單的數(shù)學(xué)函數(shù)的調(diào)用等。第二部分:條件語句。需要使用if語句、switch語句才能解決的題目。第三部分:循環(huán)語句。先是使用單重循環(huán)就能解決的問題,然后是需要使用雙重循環(huán)才能解決的問題。循序漸進(jìn),引導(dǎo)學(xué)生解決復(fù)雜的問題。第四部分:函數(shù)。用于訓(xùn)練學(xué)生的函數(shù)設(shè)計能力。第五部分:一維數(shù)組。主要涉及批量數(shù)據(jù)的處理問題,這部分的題目很豐富,對學(xué)生來講加強這方面的鍛煉非常重要。第六部分:二維數(shù)組。需要使用二維數(shù)組才能解決
的問題。(7)第七部分:字符串處理。訓(xùn)練學(xué)生解決各種字符串處理有關(guān)的問題,熟悉字符串處理函數(shù)。(8)第八部分:面向?qū)ο蟪绦蛟O(shè)計。用于訓(xùn)練學(xué)生的面向?qū)ο缶幊棠芰?。包括類和對象、繼承、多態(tài)等。
傳統(tǒng)的“在線評測系統(tǒng)”由于實施黑盒測試,所以無法鍛煉學(xué)生的函數(shù)設(shè)計能力、面向?qū)ο蟪绦蛟O(shè)計能力。我校的“在線評測系統(tǒng)”針對傳統(tǒng)系統(tǒng)的缺陷進(jìn)行改造,完全足以用來訓(xùn)練學(xué)生的函數(shù)設(shè)計能力和面向?qū)ο蟪绦蛟O(shè)計能力。七年來,“在線評測系統(tǒng)”在我校的應(yīng)用取得了非常好的效果。由于系統(tǒng)存在排名機制,學(xué)生可以查看自己在班級的排名、年級排名、總排名,這極大地調(diào)動了學(xué)生的編程積極性。很多學(xué)生甚至通宵達(dá)旦的編程,反復(fù)嘗試解決相關(guān)題目。通過“在線評測系統(tǒng)”的訓(xùn)練,學(xué)生的編程能力得到了極大的提高,從而為后續(xù)的專業(yè)課程的學(xué)習(xí)打下了良好的基礎(chǔ),建立了專業(yè)自信心?!霸诰€評測系統(tǒng)”的推廣應(yīng)用極大地扭轉(zhuǎn)了學(xué)生對編程談虎色變的局面,得到了廣泛的認(rèn)可。同時,教師可以通過“在線評測系統(tǒng)”布置作業(yè)、組織測驗,這無形中大大減少了教師的相應(yīng)工作量。甚至可以講,題庫的建設(shè)是一勞永逸的。
通過在應(yīng)用型本科C++程序設(shè)計課程實踐教學(xué)中引入“在線評測系統(tǒng)”,徹底改變了學(xué)生對編程望而生畏的局面,極大調(diào)動了學(xué)生學(xué)習(xí)的積極性,提高了編程技能,從而建立了良好的專業(yè)基礎(chǔ)和自信心。使后續(xù)的專業(yè)學(xué)習(xí)有一個良好的開端。
參考文獻(xiàn)
[1]孫大烈,車萬翔.ACM競賽與學(xué)生綜合實踐能力培養(yǎng)[J].計算機教育,2009(19):12-14.
[2]楊松濤,王斌,張海燕.從ACM/ICPC競賽探討大學(xué)生的能力培養(yǎng)[J].計算機教育,2010(24):16-18.
[3]吳舜歆.一種新型的OnlineJudge的設(shè)計與實現(xiàn)[J].福建電腦,2014(2):158-159.
[4]金保華,閆紅巖,張曉娟,等.基于ACM/ICPC的程序設(shè)計語言的教學(xué)改革與實踐[J].中國電力教育,2011(20):79-80.
[5]姚翠莉,劉一瑋,金博.ACM/ICPC競賽人才培養(yǎng)模式的研究與實踐+以大連理工大學(xué)ACM/ICPC創(chuàng)新實踐班為例[J].內(nèi)蒙古師范大學(xué)學(xué)報:教育科學(xué)版,2012,25(3):141-143.
作者簡介:吳舜歆(1978-),男,漢族,廣東潮州人,講師,碩士,研究方向為機器學(xué)習(xí)、推薦系統(tǒng)。
*基金項目:2014年度廣東省高等教育教學(xué)改革資助項目(GDJG20142517)
中圖分類號:G642
文獻(xiàn)標(biāo)志碼:A
文章編號:2096-000X(2016)09-0164-02