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