向程冠+熊世桓+熊偉程+左羽
摘 要:《數據結構》課程是計算機專業的核心“飯碗”課程之一,然而在傳統的教學中教師往往只教理論,沒有實際的代碼實現過程演示,講解的例子缺乏應用性,學生學得枯燥無味。課題組經過教學改革,將ACM/ICPC問題驅動引入課堂教學,采用問題驅動的教學方法,并貫穿于整個理論教學、實驗實訓的過程,組織學生參加程序,以競促學,以競促教,提高學生的算法設計能力,取得了良好的教學效果。
關鍵詞:數據結構 算法設計 ACM/ICPC 問題驅動
中圖分類號:TP391 文獻標識碼:A 文章編號:1672-3791(2017)07(b)-0179-02
在高校計算機專業的課程中,《數據結構》一直處于核心地位,與程序設計課程是計算機專業的“飯碗”課程,傳統的教學中一般是老師講學生聽,教學過程一直由老師主導,學生處在觀眾位置,教師只講原理,從不展示實現過程,脫離實際應用,導致學生動手能力差,不能將理論應用于實踐。怎么上好這門課程、如何進行教學改革一直是高校課程改革的重要課題。
1 背景及意義
《數據結構》是計算機相關專業的一門專業基礎課程[1]。課程從ADT思想出發,主要有線型、樹型和圖型三大類數據結構、查找和排序兩大類基本算法以及算法分析的基礎[2]。培養學生設計算法、開發程序的能力,使學生能夠根據實際問題的需要,選擇適當的數據結構及設計出相應的算法;通過實驗,進一步鍛煉學生的動手能力,培養學生分析和解決實際問題的能力。為學生學習操作系統、編譯原理和數據庫等后續課程奠定基礎。ACM/ICPC(ACM International Collegiate Programming Contest,國際大學生程序設計競賽)是由美國計算機協會(ACM)主辦的一項旨在展示大學生創新能力、團隊精神和在壓力下編寫程序、分析和解決問題能力的年度競賽,經過近40年的發展,已經成為全球最有影響力、參賽水平最高的大學生程序設計競賽[4]。顯然,前者在于傳授知識,后者在于檢驗、使用知識,二者具有辯證統一的關系。在《數據結構》課程傳統的教學模式中,通常把已有的經典算法通過代碼直接給學生講解,學生處于“要我學”的模式,實驗教學中只是要求學生驗證即可[3],學生主要是“聽中學”,由于其學習難度大,即使部分學生可以聽懂,但要編程實現時卻無從下手。而ACM/ICPC題庫中涵蓋了線性結構、樹型結構、圖結構和集合的知識運用,并且題目具有趣味性,將ACM/ICPC的模式應于到《數據結構》課程的教學改革中,以ACM/ICPC問題驅動教學,以競促學,以競促教,變“聽中學”為“做中學”,對于培養學生的自主探索能力和創新能力具有深遠的意義。
2 基于ACM/ICPC問題驅動的《數據結構》課程教學改革
2.1 基于ACM/ICPC問題驅動的理論教學改革
ACM/ICPC中的題目不僅專業性強、覆蓋面廣(囊括了線性結構、樹型結構、圖型結構和集合的知識點),而且具有味性、實用性、創新性。在《數據結構》課程的教學中,傳授理論知識前將ACM/ICPC問題先拋出來,促使學生尋求解題的方法及所需理論知識,將教學活動變成“困惑——探索——掌握”的問題解決過程,變傳統的“聽中學”為“做中學”。在理論教學中針對一個知識點結合一個ACM問題,如果問題太難可遵循ACM出題的原則設計問題。
2.2 基于ACM/ICPC問題驅動的實驗教學改革
《數據結構》是一門實踐性很強的課程,在實驗教學中,將理論課上提出的ACM問題作為基本實驗,及時運用所學知識解決實際問題。嚴格按照ACM/ICPC 競賽的方式,將學生分成三人一個組,并要求每個小組的學生在POJ(PKU Online Jude,北京大學在線評測系統)中完成實驗,把每次實驗當成一次競賽,根據學生完成的情況及排名評定實驗成績,這將使學生重視每次實驗,對于提高學生團隊協作能力有很大幫助,提高學生運用所學知識解決實際問題的能力。
2.3 “以競促學、以競促教”模式研究
對于新建的應用型本科院校,計算機專業的培養方案中明確要求學生四年內擁有“六個一”,其中一次競賽獲獎排在首位,這也符合學校培養應用型人才的方針。在教學中,可以鼓勵、引導學生參加ACM/ICPC競賽,可行參加省賽。因為ACM/ICPC的難度大,對教師也是考驗,可每年先組織教師外出參加ACM/ICPC學習(如北京大學每年暑期均會開辦ACM/ICPC競賽訓練班),參加學習的教師再指導幾組學生,對學生集中培訓,強化《數據結構》知識在ACM/ICPC競賽中的應用,增強師生教學默契,教學相長,提高學生團隊實戰能力。
2.4 結合ACM/ICPC模式改進《數據結構》教學計劃
合理調整《數據結構》課程教學中理論與實踐學時的分配,注重實踐環節,將ACM/ICPC題庫中的經典題目作為理論課的問題驅動[5],要求學生學習理論知識后解決給出的實際問題,并將提出的問題作為實踐教學環節的一部分內容,讓學生在實驗課程中編程解決實際問題。
2.5 結合ACM/ICPC模式改革實驗考核方法
學生實驗完全在POJ(PKU Online Jude,北京大學在線評測系統)中完成,要求3個同學一組,精誠合作,共同完成,培養學生的團隊協作能力。成績評定按照ACM/ICPC競賽規則進行,即根據提交成功的題目數量、運行結果與排名評定實驗成績。
2.6 組織學生參加每年度的ACM/ICPC程序設計競賽,提升知識運用能力
《數據結構》教學的重點應從“被動灌輸知識”向“主動運用知識”轉變,積極組織學生參加ACM/ICPC競賽,可有效將所學知識運用于實踐,由于部分地區對于ACM/ICPC的引入較晚,目前還沒有ACM/ICPC賽區,可以組織學生參加其它地區的比賽,為營造ACM/ICPC氛圍貢獻力量。
3 結語
將ACM/ICPC問題驅動引入《數據結構》課堂教學,將競賽試題在課前分配給學生,要求學習相關章節的知識后,用所學知識解決問題,并通過代碼完成,采用競賽規則評判學生的實驗成績,可有效將所學知識轉化為解決問題的技能,從而提高了學生的算法設計能力和程序編寫能力,為今后《數據結構》課程的教學改革提供參考,推動學校教學改革的進程。
參考文獻
[1] 徐惠紅.《數據結構》教學改革的探索[J].福建電腦,2005(11):162,146.
[2] 李紅.談高職數據結構課的教學[J].遼寧教育行政學院學院,2008(4):81-82.
[3] 詹嘉紅,藍宗輝,宋鳳艷.探究式教學法在生物化學實驗教學中的運用[J].實驗室研究與探索,2008(9):91-93.
[4] 藺永政,朱紅巖.學科競賽促進計算機類創新型人才培養和深化實踐教學改革的探討[J].大學教育,2013(13):114-115.
[5] 程林輝.《數據結構》課程教學改革探討[J].軟件導刊,2015(5):176-177.