何立群,廖慧芬
摘要:目前高校計算機專業(yè)算法課程教學(xué)模式陳舊、效率低。本文給出了基于ACM模式的算法設(shè)計教學(xué)改革措施和實效。通過參加ACM活動可以對計算機專業(yè)學(xué)生的算法設(shè)計教學(xué)起到極大的促進(jìn)作用。
關(guān)鍵詞:ACM/ICP;計算機算法;教學(xué)改革;算法設(shè)計;實踐教學(xué)
中圖分類號:G642文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)34-9765-02
Exploration of Arithmetic Designing Teaching Based on ACM Mode
HE Li-qun, LIAO Hui-fen
(Jiujiang University, Jiujiang 332000, China)
Abstract: At present, the model of teaching algorithm is obsolete and inefficient in college.Some methods and its experimental results of arithmetic designing teaching based on ACM mode are presented. It will contribute more to the reform of teaching "Arithmetic Designing".
Key words: ACM/ICP; arithmetic of coumpe; teaching reform; arithmetic designing; experiment teaching
高校計算機專業(yè)的算法設(shè)計課程教學(xué)過程中存在著基礎(chǔ)教學(xué)與實踐運用不銜接的矛盾,這個矛盾使得學(xué)生學(xué)習(xí)走向兩個極端。本文從ACM國際大學(xué)生程序設(shè)計競賽的模式談起,探討這種基于競賽模式的算法設(shè)計課程教學(xué)改革。
1 ACM競賽簡介
ACM 國際大學(xué)生程序設(shè)計競賽ACM/ICPC(ACM International Collegiate Programming Contest)是由國際計算機界歷史悠久、頗具權(quán)威性的組織ACM學(xué)會(Association for Computing Machinery)主辦,是世界上公認(rèn)的規(guī)模最大、水平最高的國際大學(xué)生程序設(shè)競賽,其目的旨在使大學(xué)生運用計算機程序設(shè)計理論(包括數(shù)學(xué)素養(yǎng)、程序設(shè)汁語言、數(shù)據(jù)結(jié)構(gòu)、算法分析等)來充分展示學(xué)生分析問題和解決問題的能力。ACM/ICPC被看作在校大學(xué)生的一場奧林匹克競賽,成為參賽選手展示計算機才華的舞臺,是著名大學(xué)計算機教育成果的直接體現(xiàn)。該項競賽從1970年舉辦至今已歷31屆,本項賽事薈萃了世界知名大學(xué)的計算機精英,自1998年以來一直受到IBM公司贊助,并且為包括Microsoft和Google在內(nèi)的世界各著名計算機公司的高度關(guān)注,成為世界各國大學(xué)生最具影響力的國際級計算機類的賽事。
中國高校從1996年開始舉辦ACM競賽已歷時七屆,得到國內(nèi)眾多知名高校的積極響應(yīng)和熱心參與,目前更是呈現(xiàn)迅速發(fā)展的趨勢。由于該競賽設(shè)定一套合理的競賽排名、挑戰(zhàn)規(guī)則,提供了一個學(xué)習(xí)和使用程序設(shè)計語言和算法的完整實踐模式,讓學(xué)生以精通編程為榮,形成一個積極向上的自主學(xué)習(xí)氛圍,一些高校已將ACM模式運用到軟件基礎(chǔ)課程的教學(xué)過程中并取得顯著效果。
2 基于ACM競賽的算法設(shè)計課程教學(xué)模式
算法設(shè)計課程是計算機專業(yè)核心課程之一,ACM競賽的核心也是算法設(shè)計,通過一些學(xué)生賽后總結(jié)和參賽學(xué)生感受,發(fā)現(xiàn)他們處理問題和分析問題的理論水平還有欠缺,這就急需要大力加強《算法設(shè)計與分析》課程的傳授,將算法設(shè)計與分析的課程與ACM競賽相結(jié)合。希望能夠通過算法設(shè)計與分析課程的傳授加強學(xué)生的競賽能力,也希望通過競賽模式加強此課程的教學(xué)。
2.1 算法設(shè)計與分析課程教學(xué)面臨的問題
目前,計算機專業(yè)教學(xué)有許多眾所周之的問題,其主要表現(xiàn)有一下幾個方面:
1)教學(xué)模式陳舊,理論教學(xué)與實踐教學(xué)學(xué)時分配不合理。
傳統(tǒng)的“填鴨式”教學(xué)已是舊的教學(xué)模式,老師傳授什么學(xué)生就接受什么,這樣培養(yǎng)的人才缺乏創(chuàng)新能力和競爭力。而目前很多計算機專業(yè)課程屬于實踐操作性課程,強調(diào)學(xué)生的實際動手能力,為了加深對理論知識的理解,我們要在教學(xué)中強調(diào)實踐教學(xué)過程,理論教學(xué)和實驗教學(xué)的學(xué)時分配要作調(diào)整,讓學(xué)生在良好實踐訓(xùn)練的基礎(chǔ)上,對理論知識的理解更透徹。
2)課內(nèi)實驗過于模式化,難于培養(yǎng)學(xué)生的創(chuàng)造性思維。
首先是實驗教學(xué)內(nèi)容陳舊,驗證性、描述性實驗多,創(chuàng)造性、設(shè)計性、綜合性實驗少。其次,實驗內(nèi)容大多脫離實際軟件工程過程,更談不上對實際問題的解決,導(dǎo)致實驗效果不好,起不到對學(xué)生創(chuàng)新能力的培養(yǎng)。另外,在實驗教學(xué)指導(dǎo)方法上,教師包得過多,通常是由教師準(zhǔn)備好實驗環(huán)境,編寫好詳細(xì)的實驗指導(dǎo)書,設(shè)計好實驗報告框架,學(xué)生只要按照已有的設(shè)計和統(tǒng)一的方法完成實驗。
3)學(xué)生缺乏團(tuán)隊意識。
如今軟件的開發(fā)往往需要幾人、幾十人、甚至成百上千人協(xié)作完成,任何一個軟件人員都不可能掌握所有的專業(yè)知識,團(tuán)隊成員如何合理的分工,按照成員各自的特點協(xié)作學(xué)習(xí),力求發(fā)揮團(tuán)隊的最大力量是至關(guān)重要的。在我們的教學(xué)過程中,這樣的團(tuán)隊協(xié)作方式學(xué)習(xí)環(huán)節(jié)非常少,雖然有部分課程的課程設(shè)計環(huán)節(jié)也采用了分組進(jìn)行的模式,但在具體的操作過程中由于學(xué)生水平的參差不齊,往往有部分學(xué)生在團(tuán)隊中只是簡單的掛了個名,并沒有真正的參與,也就談不上團(tuán)隊意識和協(xié)作學(xué)習(xí)了。
4)課程考核模式陳舊。
學(xué)生的成績考核,還采用傳統(tǒng)的考核模式,考試內(nèi)容局限于教材中的基本理論和基本知識,缺乏對學(xué)生知識、能力與素質(zhì)的綜合考察,考試題型也不盡合理,客觀題比重大,綜合思考題、案例分析題少,不利于學(xué)生綜合應(yīng)用能力的培養(yǎng)和創(chuàng)新精神的形成。另外就是考試形式單一化,在教學(xué)過程中理論教學(xué)和實踐教學(xué)是相輔相成的,但在課程考試中往往只有“筆試”而無“機試”,在課程總評成績的計算中實踐部分所占的比重很小,有些甚至沒有把它算入考試成績。這樣的考試模式制約了學(xué)生實踐能力的培養(yǎng)。
2.2 基于ACM競賽的教學(xué)模式
1)任務(wù)驅(qū)動式教學(xué),創(chuàng)造自主學(xué)習(xí)模式。
教師把課程內(nèi)容融化在ACM競賽題目中,在ACM競賽的準(zhǔn)備過程中,學(xué)什么、怎么學(xué)都由學(xué)生自己決定。他們自己設(shè)定學(xué)習(xí)目標(biāo),分析學(xué)習(xí)內(nèi)容,制定學(xué)習(xí)計劃,獲取學(xué)習(xí)資源,管理學(xué)習(xí)過程。為了能夠得心應(yīng)手地攻克大賽題目,隊員需要掌握大量的基礎(chǔ)知識。雖然有些知識很枯燥,但是結(jié)合到攻克的題目中,又是那么的學(xué)以致用,隊員們常常樂此不疲,直到把每一個知識點都理解透徹。為了攻克這些知識點,隊員們采取多樣學(xué)習(xí)方式,可旁聽高年級的相關(guān)課程,可利用網(wǎng)絡(luò)尋求直接的經(jīng)驗總結(jié),可鉆研參考書目獲得理論知識。經(jīng)歷了自主學(xué)習(xí)過程,選手們常說那些枯燥的離散數(shù)學(xué)、圖論、數(shù)值分析等課程,一旦與競賽內(nèi)容結(jié)合,學(xué)習(xí)起來就很有動力,也很輕松。當(dāng)自學(xué)變得如此得心應(yīng)手的時候,很多選手會在一個學(xué)期,將三四個學(xué)期的課程學(xué)習(xí)完畢。競賽的準(zhǔn)備過程是學(xué)生對計算機科學(xué)的基本思想和內(nèi)涵以及方法的真正體會,是真正的“授之以漁”,而不是“授之以魚”。
2)在網(wǎng)絡(luò)上教學(xué)。
我們開發(fā)基于ACM競賽的網(wǎng)絡(luò)教學(xué)平臺,它是一個提供全面的教學(xué)內(nèi)容和師生交流合作的網(wǎng)絡(luò)平臺,提供大量的競賽題目,任何人都可以注冊ID,在平臺上學(xué)習(xí)算法設(shè)計與分析的課程內(nèi)容,任何人都可以進(jìn)入此平臺進(jìn)行交流,任何都可以在此平臺上進(jìn)行模擬ACM競賽。這些平臺能夠激發(fā)學(xué)生的學(xué)習(xí)熱情,從而也帶動提高本校計算機算法設(shè)計與分析及相關(guān)課程教學(xué)水平,北京師范大學(xué)的數(shù)據(jù)結(jié)構(gòu)課程就借助了這樣的平臺進(jìn)行教學(xué)。在這個網(wǎng)絡(luò)平臺上,合作學(xué)習(xí)變得更加廣泛,不同學(xué)校、班級的大學(xué)生,都可以通過論壇交流經(jīng)驗,結(jié)交全國各地的高手。當(dāng)然平臺上的交流多限于對算法的理解,最終的代碼很少公開。在此平臺上確實能夠?qū)W到課堂上難以學(xué)到的知識與經(jīng)驗,在編程和算法上,融匯了很多高校的資源。
3)改革實驗教學(xué)模式,提高實驗教學(xué)質(zhì)量。
我們可以借助ACM 競賽平臺改變傳統(tǒng)的由任課教師大包大攬的實驗方式,任課教師可以把課程實驗任務(wù)發(fā)布到競賽平臺中,對實驗任務(wù)的選擇可以更具梯度,更貼近工程應(yīng)用。傳統(tǒng)的實驗教學(xué)模式下學(xué)生的實驗過程是難于為教師掌握的,實驗的結(jié)果也無從考證,老師只能從學(xué)生提交的實驗報告中了解到有限的一點信息,而部分學(xué)生可能并沒有真正的認(rèn)真實驗,只是簡單的抄襲別人的實驗報告,因此實驗效果也就無法保證。而借助競賽平臺后情況就完全不同了,學(xué)生提交的不再是簡單的實驗報告,而是具體任務(wù)的程序?qū)崿F(xiàn)代碼,學(xué)生對相應(yīng)知識點是否真正掌握從他的提交結(jié)果一眼就可以看出,通過分析他們提交的代碼,教師可以發(fā)現(xiàn)問題的關(guān)鍵,及時掌握學(xué)生對課堂知識的理解和掌握情況。同時學(xué)生也能相互查看各自實驗的完成情況,無形中在他們間形成一種互相競爭的狀態(tài),激起繼續(xù)努力的勁頭,形成良好的學(xué)習(xí)氛圍。
4)改革考試模式。
考試作為課程教學(xué)的一個重要環(huán)節(jié),對學(xué)生的學(xué)習(xí)具有明顯的導(dǎo)向作用。針對傳統(tǒng)考試模式存在的弊端,我們可以借助ACM競賽平臺對部分專業(yè)課程考核進(jìn)改革,提高實驗考核成績在課程總評成績中的比重,以此來引導(dǎo)學(xué)生認(rèn)真對待實驗,切實提高學(xué)生的實踐動手能力。以往的考試中之所以沒有更多的考慮實驗成績,主要是缺乏一個科學(xué)可靠的考試平臺,特別是對于那些需要應(yīng)用算法和程序設(shè)計的課程,如“高級語言程序設(shè)計”、“數(shù)據(jù)結(jié)構(gòu)”、“算法設(shè)計與分析”、“面向?qū)ο蟪绦蛟O(shè)計”、“編譯原理”等課程,根本不具備可操作性,而現(xiàn)在有了ACM競賽平臺就正好填補了這個空白,它使得這些課程的實驗考核變得簡單可行,考核結(jié)果客觀可信,對規(guī)范我們的考核過程將起到巨大的推動作用。
3 教學(xué)改革的意義
1)基于ACM競賽模式進(jìn)行算法設(shè)計與分析課程教學(xué)可以通過網(wǎng)絡(luò)直接進(jìn)行,不受時間和空問的限制。
2)在算法設(shè)計與分析課程學(xué)習(xí)中,學(xué)生的困難點是不易用算法表達(dá)求解問題的思路,不易掌握幾大算法的精髓,缺乏系統(tǒng)解決問題的方法,而這些恰恰是ACM競賽必備素養(yǎng)。將ACM模式應(yīng)用于算法設(shè)計與分析的教學(xué)中,強化學(xué)生的計算機理論修養(yǎng)和實踐能力,學(xué)以致用,通過實踐來真正掌握各種算法的意義和精髓。
3)增強師生之間的學(xué)術(shù)交流氛圍,通過舉辦競賽,鼓勵校園形成競爭、交流的學(xué)習(xí)氛圍,讓學(xué)生在課余時間有自主進(jìn)行本學(xué)科知識鉆研的機會和環(huán)境。
4)培養(yǎng)學(xué)生之間的合作精神,通過組隊競賽,讓學(xué)生體驗團(tuán)隊協(xié)作的各個方面,為軟件項目團(tuán)隊化的合作要求做好準(zhǔn)備。
4 結(jié)束語
基于ACM模式的算法設(shè)計與分析課程的教學(xué),將理論知識教學(xué)和實際應(yīng)用有機結(jié)合,注重編程能力的提高和解題思維能力的訓(xùn)練,引入競爭交流機制,為學(xué)生提供了因材施教的途徑,激發(fā)了學(xué)生自主研究性學(xué)習(xí)的興趣。通過算法設(shè)計與分析課程教學(xué)的改革,取得了明顯的效果,提高了教學(xué)質(zhì)量和教學(xué)水平,對軟件開發(fā)類課程的教學(xué)改革有一定的示范作用。
參考文獻(xiàn):
[1] 何莉輝,梁滄.基于ACM國際大學(xué)生程序設(shè)計競賽的學(xué)習(xí)模式[J].經(jīng)濟(jì)與文化,2008(6):95-96.
[2] 周榮輝,郝曉楓,趙宏宇.學(xué)生程序設(shè)計能力培養(yǎng)的思考[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2005(23):123-126.
[3] 劉汝佳.ACM2ICPC比賽隨想[J].計算機教育,2006(3):72-72.
[4] 王磊.ACM2ICPC競賽中的團(tuán)隊合作[J].計算機教育,2006(3):73-73.
[5] 孫宣東,路璐,明俊峰.從ACM/ICPC看計算機算法設(shè)計教學(xué)改革[J].廣東工業(yè)大學(xué)學(xué)報(社會科學(xué)版),2005,(增刊):226-227.