劉迪
摘 要:經(jīng)過長時間的實踐證明,我校整體ACM競賽水平得到了顯著提高,學(xué)生在比賽中取得了良好的成績。新的教學(xué)方式和方法打破傳統(tǒng)的程序設(shè)計和算法設(shè)計課程教學(xué)模式和考核方式,將理論教學(xué)和實踐教學(xué)充分結(jié)合,注重培養(yǎng)學(xué)生的分析問題、解決問題、編程能力,引入競爭、討論、團隊機制,激發(fā)了學(xué)生自主研究性學(xué)習(xí)的興趣。
關(guān)鍵詞:ACM競賽;教學(xué)方式改革
1 ACM比賽簡介
ACM國際大學(xué)生程序設(shè)計競賽(International Collegiate Programming Contest,ACM ICPC)是大學(xué)級別最高的腦力競賽,被稱為“程序設(shè)計的奧林匹克”。根據(jù)比賽層次的不同,比賽題目數(shù)量為6-10道,可選擇編程的語言為C、C++、或Java。在5個小時的比賽期間內(nèi),參賽隊員須完成對程序的編寫和調(diào)試。程序完成之后提交裁判運行,運行的結(jié)果會及時通知參賽隊。比賽對參賽學(xué)生的邏輯分析能力、策略制定和腦力方面具有極大的挑戰(zhàn)性。大賽提倡在壓力較大的情況下,培養(yǎng)學(xué)生的創(chuàng)造力、團隊合作精神以解決競賽的問題,從而挑選和發(fā)掘世界上最優(yōu)秀的程序設(shè)計人才。
2 教學(xué)現(xiàn)狀
目前,學(xué)校的大部分程序設(shè)計類課程分為理論教學(xué)和實驗教學(xué),理論教學(xué)的課時要遠遠超過實驗課程課時。實驗課程內(nèi)容單一,通常是理論課程中的程序案例,缺乏對學(xué)生程序設(shè)計能力的培養(yǎng)。并且對于算法研究方面的教學(xué)比較薄弱,學(xué)生只會根據(jù)現(xiàn)有程序進行驗證或者簡單編程,對于規(guī)模較大或者涉及算法難度較高的問題,學(xué)生就無法解決,缺乏綜合設(shè)計能力以及獨立思考的能力。
現(xiàn)有實驗課程的考核往往是采取較為單一的方式,例如考查學(xué)生是否完成驗證性程序,或者布置考核題目,讓學(xué)生在規(guī)定時間內(nèi)完成。這種考核方式在一定成都上限制了學(xué)生的思維,不利于創(chuàng)新能力的培養(yǎng)。并且考核方式通常以個人為單位,缺乏團隊合作精神,不利于培養(yǎng)團隊合作性和學(xué)生的相互學(xué)習(xí)和溝通。
由于ACM比賽中涉及大量算法知識,而傳統(tǒng)教學(xué)中合適的算法教材匱乏。實際學(xué)習(xí)過程中,多數(shù)的算法設(shè)計與分析課程配套的教材普遍偏難,公式多,并且詳細講解少,內(nèi)容枯燥。書中的代碼基本為偽代碼,對于沒有編程基礎(chǔ)的學(xué)生很難實現(xiàn),在一定程度上影響學(xué)生的積極性。
3 競賽培養(yǎng)方式改革
為進一步培養(yǎng)大學(xué)生程序設(shè)計興趣,提高學(xué)生的思考、解決問題的能力。我校開展了以比賽推動、積分選拔、集訓(xùn)培養(yǎng)的基本方式,提高學(xué)生ACM競賽整體水平。
從2012年10月開始,校級ACM大賽設(shè)置季賽和集中選拔賽,為喜愛程序設(shè)計的學(xué)生設(shè)置季賽和集中選拔賽,為學(xué)生提供一個廣泛的學(xué)習(xí)和交流平臺,采用更系統(tǒng)、更規(guī)范的方式對參賽學(xué)生進行訓(xùn)練、培養(yǎng)。通過系列積分賽選拔出優(yōu)秀的學(xué)生和學(xué)生團隊,代表學(xué)校參加省級ACM競賽和國家ACM大賽。
校級比賽以季賽和集中選拔賽積分制的形式進行。其中季賽積分以個人積分為主;選拔賽積分以隊伍積分為主。學(xué)校每年舉辦三次季賽,時間為每學(xué)年第一學(xué)期的9、12月份和第二學(xué)期的3月份,季賽結(jié)束后,根據(jù)參賽隊員的個人積分進行初步選拔,組成省賽備選隊。進入備選隊的成員將進行集訓(xùn)培養(yǎng)并參加省賽的選拔賽,集訓(xùn)時間為每年的4、5月份。
在培養(yǎng)過程中,建立興趣小組,提升學(xué)習(xí)興趣。愛因斯坦說過:“興趣是最好的老師”。沒有興趣必然無法學(xué)習(xí)好課程。成立ACM興趣小組,鼓勵和組織學(xué)生參加,培養(yǎng)創(chuàng)新精神和能力,在實踐環(huán)節(jié)中培養(yǎng)和發(fā)現(xiàn)優(yōu)秀人才。通過周末論壇、賽前講座、月賽、季賽以及集訓(xùn)等活動,學(xué)生不僅得到鍛煉,也為參加相關(guān)競賽打下了良好的基礎(chǔ)。
強化課堂討論教學(xué)環(huán)節(jié)引入?yún)⑴c式教學(xué)。模仿ACM競賽模式,將3名學(xué)生分成一個小組,讓他們自己選擇教師指定的題目,給他們充分的時間進行精心準(zhǔn)備,讓他們就此在課堂上為其他同學(xué)進行講解。在學(xué)生分組時,將基礎(chǔ)好的學(xué)生和基礎(chǔ)差的學(xué)生編在一組,利用基礎(chǔ)好的學(xué)生帶動基礎(chǔ)差的學(xué)生學(xué)習(xí),增強了差生的自信心。通過課堂討論鍛煉了學(xué)生的自學(xué)能力,同時也培養(yǎng)了學(xué)生的團隊合作意識。在實際教學(xué)過程中,學(xué)生在諸多方面提出了創(chuàng)造性想法,充分展現(xiàn)了自身的思維活力。
長期開展以比賽為依托的教學(xué)模式,能夠使學(xué)生充分了解和適應(yīng)比賽模式,在比賽中學(xué)習(xí)和提高自己的能力,擴展知識領(lǐng)域。在比賽過程中,學(xué)生可以隨時看到自己做了幾題,排名如何。這樣學(xué)生在一個競賽的環(huán)境中上機實驗,有一定的緊張感,會充分發(fā)揮各自的潛力。通過做題,學(xué)生普遍反應(yīng)計算機動手能力有了很大的提高。曾經(jīng)枯燥的離散數(shù)學(xué)、圖論、數(shù)值分析等課程,一旦與ACM競賽內(nèi)容結(jié)合,學(xué)習(xí)起來就很有動力,也很輕松。在考試的方式方面也進行了改革。傳統(tǒng)的程序設(shè)計課程的考核基本上分為平時成績和期末考試。這樣的考核方式偏重學(xué)生的記憶能力,忽視平時的學(xué)習(xí)過程,很難鍛煉學(xué)生實踐能力。課程的考核應(yīng)注重算法設(shè)計策略的靈活應(yīng)用及效率分析,而不是死記硬背。課程的考核方式改革如下:課程考核分為三部分,分別為課堂討論考核、上機比賽模式實踐考核和期末閉卷筆試。
課堂討論考核主要考核學(xué)生的學(xué)習(xí)積極性,包括對提問的回答、學(xué)生提問及討論,給出相應(yīng)的分?jǐn)?shù)。比賽考核采用開放式方式,學(xué)生可以翻書查閱相關(guān)資料,考核學(xué)生實際編程能力、程序調(diào)試和解決問題能力。加大比賽考核的比重,有利于促進動手能力的提升。期末閉卷考試主要考核學(xué)生的算法時間和空間的效率分析,側(cè)重工科學(xué)生的分析問題能力。
[參考文獻]
[1]劉波.算法設(shè)計與分析教學(xué)探討[J].高等理科教育,2004(4):78-80.
[2]林小茶.“C語言程序設(shè)計”教學(xué)方法思考[J].計算機教育,2009(12):24-25.
[3]徐本柱,王浩,胡學(xué)鋼.ACM/ICPC的教學(xué)與實踐[J].合肥工業(yè)大學(xué)學(xué)報:社會科學(xué)版,2008(6):133-137.