陳寧宇,王智群
(湖州師范學(xué)院 信息與工程學(xué)院,浙江 湖州313000)
Association for Computing Machinery(簡稱ACM,美國計(jì)算機(jī)協(xié)會)是一家具有科教性質(zhì)的協(xié)會.協(xié)會通過廣泛開展行業(yè)交流活動,以聚集全球計(jì)算機(jī)領(lǐng)域的專家、學(xué)者、教授等,共同解決計(jì)算機(jī)領(lǐng)域存在的難題.ACM International Collegiate Programming Contest(簡稱ACM/ICPC,ACM國際大學(xué)生程序設(shè)計(jì)競賽)由ACM主辦,是世界上公認(rèn)的參賽規(guī)模最大、參賽水平最高的一項(xiàng)極具影響力的賽事[1].
ACM/ICPC競賽要求學(xué)生以組隊(duì)形式參加,每隊(duì)不超過3人,比賽時間一般為5個小時,參賽選手可以選擇很多的計(jì)算機(jī)語言,如Pascal、Java、C、C++等等,最后成績和排名一律由電腦根據(jù)在線解決的題目數(shù)和總的遞交情況自動評判和給出.ACM/ICPC在中國影響不斷擴(kuò)大,賽事不斷增多,就在今年4月,浙江省舉辦了“浙江省第九屆ACM大學(xué)生程序設(shè)計(jì)競賽”.
近年來,各高等學(xué)校越來越重視各類學(xué)科和專業(yè)的實(shí)踐性教學(xué)環(huán)節(jié),強(qiáng)調(diào)實(shí)踐性教學(xué)對培養(yǎng)應(yīng)用型創(chuàng)新型人才的作用,并進(jìn)行了很多的實(shí)踐性教學(xué)改革和創(chuàng)新活動.但就程序設(shè)計(jì)類課程而言,由于實(shí)驗(yàn)手段和實(shí)驗(yàn)條件沒有得到多大的實(shí)質(zhì)性改變,這些改革和創(chuàng)新并沒有在實(shí)踐教學(xué)環(huán)節(jié)取得很大的實(shí)質(zhì)性成績,也往往沒有達(dá)到理想的教學(xué)效果.傳統(tǒng)的程序設(shè)計(jì)教學(xué)方法依然存在這樣或那樣的缺陷,主要表現(xiàn)在以下幾個方面.
目前,大部分程序設(shè)計(jì)類課程依然采用傳統(tǒng)的灌輸式教學(xué)方式.這種教學(xué)方式的最大問題在于學(xué)生完全是被動地接受知識,課堂中師生互動有限.因此,學(xué)生往往缺乏思維與想象力、創(chuàng)造力,以及自主學(xué)習(xí)意識[2].而程序設(shè)計(jì)課程本身就比較枯燥,越上到后面內(nèi)容就越難,且由于程序設(shè)計(jì)課程內(nèi)容的前后關(guān)聯(lián)性較緊,若前面沒學(xué)到位后面就很難跟進(jìn),這就造成了學(xué)生接受知識的能力受到限制,學(xué)生很難完全掌握好這些課程.
傳統(tǒng)教學(xué)對實(shí)踐環(huán)節(jié)重視程度還不夠,很多程序設(shè)計(jì)類課程只要求學(xué)生從理論上掌握相應(yīng)的知識點(diǎn),對實(shí)踐則要求較低,從而造成有相當(dāng)一部分學(xué)生的實(shí)際編程水平較低,程序設(shè)計(jì)和調(diào)試能力很差3.很多考試成績很好的學(xué)生并不是真正地理解和學(xué)好了課程知識,而是靠笨拙方法——死背課本上的程序.同時,在考核方式上,傳統(tǒng)的教學(xué)方法也總是重結(jié)果輕過程,整個教學(xué)活動沒能真正完成當(dāng)初教學(xué)目標(biāo)所制定的任務(wù).
傳統(tǒng)的程序設(shè)計(jì)類課程在進(jìn)行實(shí)踐教學(xué)時,往往都是按課本章節(jié)內(nèi)容的先后順序,獨(dú)章或獨(dú)節(jié)的獨(dú)立設(shè)計(jì)出一個個實(shí)驗(yàn).如《C語言程序設(shè)計(jì)》課程,往往會依據(jù)各個語法知識點(diǎn)來設(shè)計(jì)一個個實(shí)驗(yàn).再如《數(shù)據(jù)結(jié)構(gòu)》課程,則會依據(jù)不同類型的數(shù)據(jù)組織方式設(shè)計(jì)一個個實(shí)驗(yàn).這樣,學(xué)生通常把注意力只集中在每個單獨(dú)語法或數(shù)據(jù)組織方式中,忽略了對課程概念的整體性把握,忽略了在解決較大規(guī)模問題時對課程知識綜合運(yùn)用能力的把握[4].
傳統(tǒng)程序設(shè)計(jì)課程在進(jìn)行實(shí)驗(yàn)時,往往是老師在講臺上布置實(shí)驗(yàn)任務(wù),學(xué)生在各自電腦上完成相應(yīng)的編程任務(wù).這其中一個比較大的工作量就是老師對學(xué)生實(shí)驗(yàn)結(jié)果的檢測以及其后的實(shí)驗(yàn)報告的批改.試想,如果一個班級有45個學(xué)生,每個學(xué)生都要老師一個個地去讀他們的程序(有可能還要幫調(diào)試),一個個地去批改他們的實(shí)驗(yàn)報告,有時還可能要防止同學(xué)間的抄襲,這個工作量非常大[5].更為重要的一點(diǎn)是:實(shí)驗(yàn)過程太枯燥,很多學(xué)生不想或不愿意主動地去認(rèn)真完成作業(yè),敷衍了事,相互間抄襲現(xiàn)象特別嚴(yán)重.這樣造成的后果是實(shí)驗(yàn)效果較差,學(xué)生在實(shí)驗(yàn)課上偷偷玩游戲、看電影、上QQ的事情時有發(fā)生.
ACM/ICPC極大地開闊了學(xué)生的眼界,對學(xué)生實(shí)踐能力、團(tuán)隊(duì)合作、創(chuàng)新意識,甚至英語水平等均起到了非常好的促進(jìn)作用.ACM/ICPC模式對程序設(shè)計(jì)課程教學(xué)具有很好的促進(jìn)作用.將ACM/ICPC模式融入到程序設(shè)計(jì)課程的教學(xué)之中可以進(jìn)行如下方面的教學(xué)改革.
ACM/ICPC比賽是組隊(duì)賽,要求每隊(duì)的學(xué)生不超過3人,比賽時間長達(dá)5個小時,所以比賽比的不僅僅是隊(duì)員的知識和智力,更多的可能是他們的心理、意志和體力.同時,比賽中更為重要的一點(diǎn)是3人之間的合作,這種合作也是現(xiàn)在社會普遍所需要的一種優(yōu)良品質(zhì).在《C語言程序設(shè)計(jì)》課程教學(xué)中,結(jié)合ACM/ICPC的這種組隊(duì)方式,培養(yǎng)他們的合作意識,同時通過引入積分機(jī)制,培養(yǎng)他們的學(xué)習(xí)興趣.
在教學(xué)過程中,將班上同學(xué)分組,每組設(shè)立組長,和ACM/ICPC模式一樣,三人一個小組(主要是學(xué)生相互之間自由組合,必要時老師協(xié)調(diào)),每個小組都會為自己起一個獨(dú)特而有意義的名字,像“孤獨(dú)的根號3”、“打醬油的”、“三個火槍手”、“聽說隊(duì)長也找不到”等等.每個小組最初的分?jǐn)?shù)都為0,在整個課程當(dāng)中他們會通過很多途徑獲得分?jǐn)?shù).分?jǐn)?shù)總共分為5個等級,分別是幼兒園(0~20分)、小學(xué)(21~40分)、中學(xué)(41~60分)、大學(xué)(61~80分)、研究生(81~100分)等.學(xué)生獲取分?jǐn)?shù)的途徑如下:
(1)課堂主動回答老師的問題獲得1~2分.回答問題時,如果同組其它同學(xué)覺得問題回答得不夠完善可以進(jìn)行補(bǔ)充,這會增強(qiáng)小組的凝聚力.
(2)課堂上提出一些有新意的問題也可獲得一定的分?jǐn)?shù),這主要是為了培養(yǎng)學(xué)生的創(chuàng)造性思維.
(3)主動在校ACM網(wǎng)站上做題也可獲得相應(yīng)分?jǐn)?shù).
(4)學(xué)生有問題也可在C語言教學(xué)網(wǎng)站上提出問題并獲得1分.
(5)有課間問題討論的學(xué)生也可獲得分?jǐn)?shù).同時,像很多游戲一樣,各組之間還可以相互贈一定數(shù)量的分?jǐn)?shù).這些做法要求每組成員間要充分合作,充分交流.
結(jié)合ACM/ICPC積分制的方法在積分時的工作量很大.但事實(shí)上,老師只要把握好課堂上的積分,其它的積分可以交給ACM校隊(duì)成員來幫忙完成.ACM校隊(duì)成員幫助學(xué)生回答網(wǎng)上“網(wǎng)上互動”板塊提出的問題并幫忙計(jì)算積分,也幫忙解決了“課間討論”板塊的問題并幫忙計(jì)算積分.事實(shí)上,由ACM校隊(duì)成員替老師回答學(xué)生的問題有很大的優(yōu)勢,因?yàn)樗麄円彩莿倓倢W(xué)完這門課,知道學(xué)習(xí)中會遇到哪些問題,知道哪些問題該如何回答,而且學(xué)生也樂意和這些學(xué)長打交道.
為了增加學(xué)生對積分的重視程度,學(xué)期結(jié)束時將小組積分以很大的比例計(jì)算在學(xué)生的平時成績中.小組積分特別高的還可以免期末考試.每學(xué)期每班都有1~2個學(xué)生獲得免考的資格.
ACM形式的C語言程序設(shè)計(jì)教學(xué)在獲得學(xué)生的認(rèn)可中,可以進(jìn)一步舉辦相應(yīng)的比賽來引導(dǎo)學(xué)生學(xué)習(xí).在這些賽事里面,最重要的是新生聯(lián)賽.《C語言程序設(shè)計(jì)》是大學(xué)第一學(xué)期的課程,在上完《數(shù)組》這一章時,就在自己的ACM網(wǎng)站舉辦ACM新生聯(lián)賽,一般放在周末,并在下周三組織進(jìn)行題目講解.這種新生聯(lián)賽一般要舉行4~5次.當(dāng)然這個工作量很大,所有出題和講解都由校ACM隊(duì)員完成.為了充分調(diào)動學(xué)生的學(xué)習(xí)激情,新生聯(lián)賽的題目往往都偏簡單,為的是讓學(xué)生充分感受到AC(accepted,答案正確的意思)的快樂.
另一個比較重要的賽事是月賽,全校有興趣的學(xué)生都可參與.月賽題目也比較規(guī)范,由老師和極個別的學(xué)生來共同完成,一般都是原創(chuàng)題目.月賽的整個操作流程也比較正式,像省賽一樣,每人分配比賽賬號,現(xiàn)場有志愿者發(fā)氣球,按比賽成績給予獎勵.
還可以設(shè)ACM女生聯(lián)賽專場和ACM圣誕節(jié)專場等等.為了更好地促進(jìn)這些賽事的實(shí)施,可以將這些賽事成績直接反應(yīng)到學(xué)生相應(yīng)課程的個人平時成績中,成績特別優(yōu)異的學(xué)生同樣也可申請期末考試免考.學(xué)生們都很積極地參與到這些賽事中去,這一系列的賽事也反過來提升了學(xué)生學(xué)習(xí)程序設(shè)計(jì)的熱情.
ACM后臺測試數(shù)據(jù)嚴(yán)謹(jǐn),學(xué)生不但要找到解決問題的思路,同時還要有縝密周詳?shù)乃季S,更不能忽略掉任何一種可能情況,否則遞交的答案就不會被通過.另外,ACM競賽涉及的知識面很廣,有數(shù)據(jù)結(jié)構(gòu)、組合數(shù)學(xué)、圖論、數(shù)論、離散數(shù)學(xué)、算法設(shè)計(jì)等等.
在《C語言程序設(shè)計(jì)》課程即將結(jié)束的最后兩周,可以讓學(xué)生以小組為單位,相互出題給對方做.在大部分ACM賽事中,題目基本上是高年級學(xué)生出的.學(xué)生們往往會從自己的周邊環(huán)境或?qū)W校環(huán)境出發(fā),構(gòu)造相應(yīng)意境的題目,這些題目會吸引另外的學(xué)生去做.讓學(xué)生參與ACM命題,會培養(yǎng)學(xué)生細(xì)密謹(jǐn)慎的思維,拓寬學(xué)生的知識結(jié)構(gòu).學(xué)生出好題目,相互間交換反復(fù)看題目,改掉最基本題目描述中的語言表達(dá)錯誤.學(xué)生在出題的同時要把握好題目的知識結(jié)構(gòu),要主動去閱讀一些知識.在寫題目的后臺測試數(shù)據(jù)時,必須要有慎密的思維,不能漏掉任何一種情況,當(dāng)然更不能出錯.同時,出題的過程也進(jìn)一步培養(yǎng)了學(xué)生的學(xué)習(xí)興趣與編程能力.
實(shí)踐教學(xué)是程序設(shè)計(jì)課程教學(xué)中非常重要的一環(huán).在進(jìn)行實(shí)踐教學(xué)時,為了提高學(xué)生對實(shí)踐教學(xué)的熱情,增加綜合性和設(shè)計(jì)性實(shí)驗(yàn),達(dá)到更好的實(shí)驗(yàn)教學(xué)目的,也可采取全程ACM/ICPC形式.
ACM/ICPC將題目趣味化,它往往將一個題目設(shè)計(jì)成故事形式,從而引起學(xué)生的興趣.遞交的答案可在線即時判別正確與否,這也是ACM/ICPC吸引學(xué)生的第二個原因.利用這些原因我們可將程序設(shè)計(jì)的實(shí)踐教學(xué)改成ACM/ICPC性質(zhì).例如,在《C語言程序設(shè)計(jì)》課程的課內(nèi)實(shí)驗(yàn)中,在前面一些基礎(chǔ)知識講述完后,后面的實(shí)驗(yàn)就采用ACM形式,每次實(shí)驗(yàn)放以相關(guān)知識點(diǎn)為主的4~6個題目,同時放開時間,如學(xué)生課堂上沒有做完,則課后還可以接著做,而絕大部分學(xué)生都是在課堂或課后主動完成的.在《C語言程序設(shè)計(jì)》課程的前期,因?yàn)閷W(xué)生學(xué)習(xí)的知識有限,實(shí)驗(yàn)一般采用程序設(shè)計(jì)填空或改錯的形式,由學(xué)生來完成以得到完整正確的程序,在后期則完全是由學(xué)生編寫程序.
在實(shí)踐課程《程序設(shè)計(jì)基本訓(xùn)練》中,我們也采用了ACM形式,每次實(shí)驗(yàn)課在校ACM網(wǎng)站上做綜合知識點(diǎn)的6~8題(系統(tǒng)一般開放一個星期,課堂做不完的話可以用一個星期的時間去完成).《算法設(shè)計(jì)與分析》課程的實(shí)踐教學(xué)也可采取這樣的形式.
考試是對學(xué)生課程學(xué)習(xí)情況的一個檢閱,但就這些對實(shí)踐要求很高的程序設(shè)計(jì)課程而言,如果主要用考試來衡量學(xué)生學(xué)習(xí)的好壞是不對的.在對學(xué)生進(jìn)行課程成績的總評時,可將原來的考試成績/總評成績的比例由改革前的70%降低到的50%,另外的50%是平時成績、實(shí)踐成績,以較大比例反映在平時成績中,這樣可以較好的避免學(xué)生靠死記硬背來獲取高分.
ACM/ICPC比賽形式新穎獨(dú)特,有趣味性、專業(yè)性、對抗性、團(tuán)隊(duì)協(xié)作性,將ACM/ICPC融入到程序設(shè)計(jì)的教學(xué)當(dāng)中,收獲效果明顯.
ACM/ICPC的趣味性和即時判題性極大地調(diào)動了學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣和熱情,使原本枯燥的學(xué)習(xí)變成了趣味學(xué)習(xí),學(xué)生學(xué)習(xí)程序設(shè)計(jì)的熱情大大提升,很多學(xué)生由被動學(xué)習(xí)變?yōu)橹鲃訉W(xué)習(xí),學(xué)生們自覺建立了學(xué)習(xí)QQ群、ACM論壇、ACM社團(tuán),也會主動找老師、學(xué)長或同學(xué)交流,或者自己在網(wǎng)上尋求問題答案,也使學(xué)生的編程興趣和編程能力得到了很好的提高.
湖州師范學(xué)院在2007年建立了自己的ACM 題目評判系統(tǒng)(內(nèi)部網(wǎng)址:http://172.20.137.106/JudgeOnline),到2011年底的訪問量已高達(dá)810000多次,C語言教學(xué)網(wǎng)在不到兩年時間的訪問量也達(dá)到89000多次,也經(jīng)??吹綄W(xué)生在QQ群里交流編程算法問題.事實(shí)上,引入ACM/ICPC形式的程序設(shè)計(jì)教學(xué)后,很多任課老師都覺得學(xué)生的編程興趣和編程能力有明顯提高.如08級學(xué)生已經(jīng)有相當(dāng)一部分學(xué)生在從事自己感興趣的編程工作.當(dāng)然,在浙江省ACM程序設(shè)計(jì)競賽取得的優(yōu)異成績也和此教學(xué)改革是密不可分的.
ACM判題系統(tǒng)即時檢測實(shí)驗(yàn)結(jié)果,實(shí)踐形式非常好,獲得了老師和學(xué)生的一致好評.對老師而言,這種實(shí)踐形式簡單、方便,實(shí)踐結(jié)果檢查容易,可以直接在網(wǎng)上看到學(xué)生每一題做對與否,每次實(shí)踐以及總的實(shí)踐成績也自動由電腦記錄下來.對學(xué)生而言,每AC一道題的成就感是巨大的,就如同玩游戲過了一關(guān)一樣,這種實(shí)踐形式明顯增加了學(xué)生的學(xué)習(xí)激情,不再枯燥乏味,且實(shí)驗(yàn)課也可以大大增加綜合性和設(shè)計(jì)性實(shí)驗(yàn)的比例.
在教學(xué)改革過程中,因?yàn)榫C合性實(shí)驗(yàn)比例的增加,無疑會提高學(xué)生的綜合設(shè)計(jì)能力.同時也帶來了一些很好的“副產(chǎn)品”:① 提高了學(xué)生的英文水平.因?yàn)锳CM/ICPC題目都是英文的,在長期的英文題目閱讀中,學(xué)生的英文水平在不知不覺中有了很大的進(jìn)步.更有很多學(xué)生出于對ACM/ICPC的強(qiáng)烈興趣,但又受制于英語水平的影響,從而決定好好學(xué)習(xí)英語.② 在ACM/ICPC形式的教學(xué)中,學(xué)生經(jīng)常參與ACM/ICPC競賽,這種以小組形式參與的競爭會促使學(xué)生形成一些好的品質(zhì),如良好的協(xié)作精神、穩(wěn)定的心理素質(zhì)、快速的臨場應(yīng)變能力等.
ACM/ICPC教學(xué)模式將課堂理論學(xué)習(xí)和實(shí)踐學(xué)習(xí)有機(jī)結(jié)合起來,促使學(xué)生由被動的學(xué)習(xí)轉(zhuǎn)化為主動的探究,從而充分調(diào)動了學(xué)生的學(xué)習(xí)積極性.ACM/ICPC教學(xué)模式有助于培養(yǎng)學(xué)生的邏輯思維、抽象思維,提高編程能力、學(xué)生的心理素質(zhì)、團(tuán)隊(duì)合作能力,這種探索能夠推動計(jì)算機(jī)程序設(shè)計(jì)課程的建設(shè),當(dāng)然,這個探索僅僅是初步的,程序設(shè)計(jì)類教學(xué)改革還需繼續(xù)深入,以期培養(yǎng)更多高素質(zhì)、高水平的計(jì)算機(jī)專業(yè)人才.
[1]王宏,吳文虎.清華實(shí)踐教學(xué)“賽課結(jié)合”新思路[J].計(jì)算機(jī)教育,2006(7):10~12.
[2]徐小青,李曉東.“高級語言程序設(shè)計(jì)”課程教學(xué)改革與實(shí)踐[J].計(jì)算機(jī)教育,2009(13):46~48.
[3]楊松濤,王斌.從 ACM/ICPC競賽探討大學(xué)生的能力培養(yǎng)[J].計(jì)算機(jī)教育,2010(24):16~18.
[4]武建華.基于ACM模式的數(shù)據(jù)結(jié)構(gòu)實(shí)踐教學(xué)改革與探索[J].計(jì)算機(jī)教育,2009(13):114~116.
[5]于世華.基于ACM競賽模式的程序設(shè)計(jì)教學(xué)改革研究[J].呼倫貝爾學(xué)院學(xué)報,2011,19(4):113~116.