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