摘要:針對國際大學生程序設計競賽所涉及知識與“算法與數據結構”課程密切相關的特點,將程序設計競賽與“算法與數據結構”課程實踐教學改革相結合,并在多年的課程教學中加以實踐,取得顯著效果。
關鍵詞:算法;數據結構;程序設計競賽;實踐教學;改革
“算法與數據結構”是計算機程序設計的重要理論技術基礎,它不僅是計算機學科的核心課程,也是一門實踐性很強的專業技術基礎課。其在計算機學科的課程體系中起著承上啟下的作用,它為操作系統、編譯原理、數據庫原理、軟件工程等后續課程的學習打下基礎,學好“算法與數據結構”對于提高學生的理論認知水平和實踐能力有著極為重要的作用。
ACM國際大學生程序設計競賽(ACM/ICPC:ACM Internation Collegiate Programming Contest)是由美國計算機協會(ACM: Assiciation for Computing Machinery)組織的年度性競賽,開始于1970年,是全球大學生計算機程序能力競賽活動中最有影響力的一項賽事。ACM/ICP競賽涉及學科知識面廣,有助于培養學生自主學習的能力、創新能力,也有利于團隊精神的培養。參加此競賽能使學生將“算法與數據結構”課程所學充分應用于競賽中,將理論轉化為實踐,用實踐驗證及加強理論知識,二者相得益彰。
1面向問題求解的實踐教學模式
“算法與數據結構”是一門理論性和實踐性都很強的課程。在傳統的課程教學過程中,存在著理論教學與實踐運用的矛盾。由于該課程內容較抽象,不好講解,若非精心準備,很難取得好的課堂教學效果。學生學完該課程后,普遍存在理論知識不扎實、編程實踐能力差的現象。
近年來,針對傳統教學存在的問題,不少學校都在進行該課程的教學改革[1-3],其中很重要的一個改革就是實踐教學改革,提倡要加強實踐環節的訓練,在每個章節的理論教學后要求學生完成若干上機實驗作業,以此達到提高學生實踐能力,深化理論教學的目的。
我校從2005年起開展課程實踐教學改革,構建面向問題求解的實踐教學模式[4]。面向問題求解的實踐教學模式主要包括以下幾個方面:(1)面向實際問題,精心設計實踐教學內容;(2)作業自動評測;(3)解題報告交流;(4)優秀作業評選。
通過以上多方面的改革,學生的實踐能力也得到了較大的提高。
2結合程序設計競賽的數據結構課程實踐教學改革
針對近幾年來我校學生對參與ACM/ICPC競賽熱情高漲,而且該競賽所涉及的很多知識與“算法與數據結構”課程息息相關等因素,自2007年以來,課程教學組將程序設計競賽與課程實踐教學改革相結合,依托程序設計競賽,進一步推進“算法與數據結構”課程實踐教學改革。具體措施主要有以下幾個方面:
2.1與競賽題目描述形式相同的課程實驗作業
我們借鑒程序設計競賽題目規范、求解目標明確和背景描述有趣等特點,將“算法與數據結構”課程實驗作業題目描述成程序設計競賽題目的形式,這樣便于學生明確問題求解的目標以及結果的表示形式,為自動評測做了準備。同時,采用競賽題的描述方式也大大激發了學生解決問題的興趣,提高了學生學習的積極性和主動性。
2.2離線和在線評測相結合的作業評測方式
先用離線評測系統測試學生提交的作業,測出每次作業的成績,并在網站上公布評測結果,平時作業成績將是期末成績的重要組成部分。成績公布后,開放程序設計競賽所用的在線評測系統,作業成績不理想的學生可再次改進自己的作業,并利用在線評測系統實時進行評測。
2.3競賽形式的課程半期考
福州大學每年的程序設計競賽舉辦的時間都在四月下旬,時值“算法與數據結構”課程教學進行至中期。鑒于程序設計競賽所涉及知識與“算法與數據結構”課程密切相關,我們將此競賽當成課程的半期考試,要求每一位修讀“算法與數據結構”的學生都要參加。
競賽形式的半期考有如下幾個好處:(1)通過競賽可以檢驗學生對“算法與數據結構”課程內容的掌握情況;(2)由于此競賽是全校性的賽事,各專業的學生均可參加,作為科班出身的計算機專業學生若在競賽中輸給非計算機專業學生,那將是一件很不光彩的事情,因此競賽形式的半期考將給修讀“算法與數據結構”的學生帶來無形的壓力,這必將促使他們在平時投入更多時間去學習;(4)競賽形式的半期考也讓學生親身感受到程序設計競賽的氛圍,從而激發學生參賽的興趣,為我校ACM/ICPC集訓隊員的選拔奠定堅實的基礎。
2.4開展“有獎月賽”活動
為了讓學生在課堂之外能自覺加強對“算法與數據結構”課程的學習,進一步提高他們分析、解決問題的能力,我們在每月末開展一次“有獎月賽”活動。
“有獎月賽”的獎勵只頒發給大一、大二的學生,以此來激勵修讀“算法與數據結構”的學生參加該項活動,提高自身動手實踐能力。該活動至今已開展兩年多,取得了顯著的效果。
3實踐教學改革的成效
3.1激發了學生的學習興趣
競賽題有趣的背景描述在很大程度上激發了學生的學習興趣和主動性。如利用循環鏈表解決猴子選大王問題,利用棧幫助小鼠走出迷宮,利用Huffman算法設計文件解壓縮軟件和利用圖的最短路徑算法尋找換車次數最少的公交線路問題、套匯問題等。
3.2深化理論教學
“算法與數據結構”是一門理論性和實踐性都很強的課程。結合程序設計競賽的實踐教學改革不僅大大提高了學生的動手實踐能力,而且也在很大程度上使學生加深對課堂教學內容的理解,達到通過實踐教學深化理論教學的目的。
3.3提高了學生分析和解決實際問題的能力
從近幾年的改革實踐來看,大部分學生經過“算法與數據結構”課程的學習與實踐訓練,已經具備在一定的時間內獨立解決問題的能力,能夠在規定的時間內選擇合適的數據結構和算法設計策略,并在計算機上編程實現。我校計算機專業學生在各類與程序設計相關的學科競賽中頻獲佳績。我校ACM/ICPC代表隊先后在ACM/ICPC亞洲區預賽中共獲9個銀獎和11個銅獎,且成功晉級第30屆ACM/ICPC全球總決賽,并喜獲第39名。
3.4為各類與程序設計相關的學科競賽培養大量人才
經過本課程的實踐教學改革,我院學生的動手實踐能力得到極大的提高,涌現出了許多編程好手。近年來,我院學生除了組隊參加ACM/ICPC競賽,許多學生紛紛加入到諸如數學建模、電子設計、機器人大賽等各大學科競賽小組中,并在歷年的學科競賽中均取得很好的成績,為學校贏得了榮譽,這些榮譽的取得都與“算法與數據結構”課程的實踐教學改革是分不開的。
5結語
結合程序設計競賽的實踐教學模式的實施深化了課堂理論改革,大大提高了學生的實踐能力和人才培養質量。此教學模式先后在我校計算機專業近三年的“算法與數據結構”課程教學中得以實施,取得了顯著的效果。
注:本文為“算法與數據結構”國家精品課程建設項目。
參考文獻:
[1] 劉亞波,劉大有,高瀅. 以實驗教學深化“數據結構”理論教學[J]. 吉林大學學報:信息科學版,2005,23(8):135-137.
[2] 殷人昆,鄧俊輝. 清華大學“數據結構”精品課程介紹[J]. 計算機教育,2006(5):20-22.
[3] 廖明宏,張巖,李秀坤,等. 哈爾濱工業大學“數據結構與算法”精品課程介紹[J]. 計算機教育,2006(5):17-19.
[4] 吳英杰,王一蕾,王曉東. 面向問題求解的實踐教學模式——“算法與數據結構”實踐教學改革[J]. 計算機教育,2007(4):29-31.
Deepening the Practice Teaching Innovation of the Algorithm and Data Structure
Combining with Programming Contest
WU Ying-jie, Wang Yi-lei, FU Yang-geng, WANG Xiao-dong
(College of Mathematics and Computer Science, Fuzhou University, Fuzhou 350108, China)
Abstract: Aiming at the fact that most knowledge points of programming contest are closely related to algorithm and data structure,we combining programming contest and the practice teaching innovation of the algorithm and data structure course. The teaching practice in the last three years indicate that our innovation is significantly effective.
Key words: algorithm; data structure; programming contest; practice teaching; innovation
(編輯:白杰)