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