蔡丹琳,劉俊杰
(泉州師范學(xué)院,福建 泉州 362000)
《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)改革與實踐創(chuàng)新
蔡丹琳,劉俊杰
(泉州師范學(xué)院,福建 泉州 362000)
為了提高《數(shù)據(jù)結(jié)構(gòu)》課程的教學(xué)質(zhì)量,針對課程的特點,剖析教學(xué)中存在的問題,總結(jié)教學(xué)經(jīng)驗并提出具體教學(xué)改革方法和措施.經(jīng)實踐證明,本文提出的教學(xué)方法對教學(xué)質(zhì)量的提升有明顯效果.
數(shù)據(jù)結(jié)構(gòu);教學(xué)改革;ACM;實踐教學(xué)
“數(shù)據(jù)結(jié)構(gòu)”是計算機(jī)及其相關(guān)專業(yè)的核心課程之一,在計算機(jī)類的課程體系中起到承前繼后的重要作用.通過本課程的學(xué)習(xí),學(xué)生應(yīng)學(xué)會分析要解決的問題,歸納計算機(jī)加工對象的特性,選擇合適的數(shù)據(jù)結(jié)構(gòu)和存儲表示方法,及設(shè)計解決問題的實現(xiàn)算法.因此,在教學(xué)過程中不僅要重視數(shù)據(jù)結(jié)構(gòu)的理論知識,提高學(xué)生抽象思維能力,更要注重培養(yǎng)學(xué)生的動手實踐能力和研究創(chuàng)新能力.
然而,通過幾年的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)及調(diào)研發(fā)現(xiàn),我院不論是在計算機(jī)專業(yè)還是計算機(jī)相關(guān)專業(yè),該課程的教學(xué)情況并不能讓人滿意.學(xué)生在學(xué)完該課程后只能記住“后進(jìn)先出”、“先進(jìn)先出”、“赫夫曼樹”等幾個名稱.為了改變這一現(xiàn)狀,筆者對該課程的教學(xué)進(jìn)行一些改進(jìn),在教學(xué)過程中采用啟發(fā)式教學(xué)方法,通過理論知識與實際案例相結(jié)合進(jìn)行分析、講解,并將ACM-ICPC Online Judge在線評測系統(tǒng)運(yùn)用到數(shù)據(jù)結(jié)構(gòu)課程的實踐教學(xué)中,取得了顯著效果.
隨著計算機(jī)技術(shù)日益發(fā)展,其應(yīng)用方向和應(yīng)用領(lǐng)域已經(jīng)不是局限于數(shù)值運(yùn)算和科學(xué)研究,而是滲透到各個領(lǐng)域,更多的涉及到問題分析、數(shù)據(jù)結(jié)構(gòu)的設(shè)計和復(fù)雜的非數(shù)值處理和操作.數(shù)據(jù)結(jié)構(gòu)就是一門研究非數(shù)值計算的程序設(shè)計問題中計算機(jī)的操作對象以及它們之間的關(guān)系和操作等的學(xué)科[1].然而,多年的教學(xué)實踐中發(fā)現(xiàn)課堂上講授的概念和基本知識學(xué)生普遍都認(rèn)為不難,也都能掌握,可是一到課后需要自己解決實際問題時就不知從何下手了,實踐課時要求用具體語言調(diào)試算法時更是舉步維艱.是什么原因?qū)е逻@種情況的發(fā)生?筆者認(rèn)為主要是因為以下幾個方面的問題.
數(shù)據(jù)結(jié)構(gòu)(C語言版)課程最主要的先導(dǎo)課程當(dāng)然就是C語言程序設(shè)計.學(xué)生在大一才剛接觸計算機(jī)語言,對C語言的學(xué)習(xí)不夠深入,理解也不夠透徹.如指針、結(jié)構(gòu)體部分作為數(shù)據(jù)結(jié)構(gòu)中常用的基本知識,學(xué)生在學(xué)完C課程后還是一知半解,這一問題在實踐課程中更為突出.
數(shù)據(jù)結(jié)構(gòu)課程的另一門主要先導(dǎo)課程是離散數(shù)學(xué).大多數(shù)高校的離散數(shù)學(xué)是在高等數(shù)學(xué)學(xué)完后開課,學(xué)生還沒來得及學(xué)離散數(shù)學(xué)就開始學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),使學(xué)生缺少了數(shù)理邏輯的思想的訓(xùn)練,影響學(xué)生對數(shù)據(jù)結(jié)構(gòu)課程中相關(guān)問題的理解.而離散數(shù)學(xué)中涉及的二元組,樹和圖等知識也是離散數(shù)學(xué)的教學(xué)內(nèi)容,在數(shù)據(jù)結(jié)構(gòu)課程中由于課時的原因只能進(jìn)行簡單介紹,這也在一定程度上影響了教學(xué)效果.
數(shù)據(jù)結(jié)構(gòu)課程中涉及到較多概念、存儲表示及算法操作.過去,在數(shù)據(jù)結(jié)構(gòu)教學(xué)中,主要是針對某一知識點,從基本概念、類型定義開始,詳細(xì)講解存儲表示方法、抽象算法和算法代碼.學(xué)生的學(xué)習(xí)亦是從概念的理解入手,進(jìn)而學(xué)習(xí)算法代碼,將重點放在將課本中的算法轉(zhuǎn)化為代碼實現(xiàn)上,把數(shù)據(jù)結(jié)構(gòu)課程當(dāng)成C語言課程的延續(xù),而沒有認(rèn)識到真正的數(shù)據(jù)結(jié)構(gòu)意義,導(dǎo)致學(xué)生無法真正掌握解決問題的方法,創(chuàng)新能力弱.
數(shù)據(jù)結(jié)構(gòu)是計算機(jī)程序設(shè)計的重要理論技術(shù)基礎(chǔ)[1].該課程是一門重要的技術(shù)基礎(chǔ)課,也是軟件工程的先導(dǎo)課[2].多年來根據(jù)學(xué)生的具體情況和學(xué)科特點,已經(jīng)過多次教學(xué)方法和舉措的改革,學(xué)生對理論知識的掌握還算扎實,動手能力也有一定程度的提高.同時選用經(jīng)典的理論教材也為學(xué)生掌握理論知識提供了很大的幫助,然而,很長一段時間我們一直都采用同一套教材,這樣不管是學(xué)生還是老師對問題的理解往往會有一定的局限性和片面性.同時,大多數(shù)實驗教材中的內(nèi)容略顯陳舊和過時與當(dāng)前實際應(yīng)用尚有有差距,與工程項目銜接不夠緊密,嚴(yán)重影響學(xué)生的學(xué)習(xí)積極性.
數(shù)據(jù)結(jié)構(gòu)課程不僅是軟件工程的先導(dǎo)課,也是操作系統(tǒng)、數(shù)據(jù)庫、編譯原理、計算機(jī)圖形學(xué)等課程的基礎(chǔ).因此,該課程在計算機(jī)學(xué)科的教學(xué)中起著舉足輕重的作用.針對該課程存在的問題,筆者對教學(xué)進(jìn)行以下幾個方面的課程改革.
針對先導(dǎo)課程存在的問題我們采取了以下策略:首先,我們了增加C語言程序設(shè)計課程的學(xué)時,由原本大一下一學(xué)期5學(xué)時調(diào)整為大一上下兩學(xué)期4+2學(xué)時.這樣調(diào)整除了增加課內(nèi)教學(xué)授課時間外,還同時增加了學(xué)生課外復(fù)習(xí)和實踐訓(xùn)練時間,有利于學(xué)生更好地掌握C語言.其次,我們采用由同一位老師來擔(dān)任C語言程序設(shè)計和數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)任務(wù),任課老師在充分了解學(xué)生C語言掌握情況的前提下可以使兩門課程得到更好的銜接.第三,我們將離散數(shù)學(xué)提前一學(xué)期和高等數(shù)學(xué)一起進(jìn)行,讓學(xué)生能夠在掌握一些數(shù)理邏輯、樹、圖等知識后學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu).通過這一系列的舉措,已經(jīng)逐步解決了2.1中所提到的由于先導(dǎo)課程的原因?qū)е碌膯栴},學(xué)生學(xué)習(xí)的效果得到了顯著的提高.
3.2.1 實施啟發(fā)式教學(xué)
啟發(fā)式教學(xué)是指在教師的引導(dǎo)啟發(fā)下,以師生互動的形式,鼓勵學(xué)生主動思考、主動探索、共同參與的一種教學(xué)方法[7].多年的教學(xué)發(fā)現(xiàn),課堂教學(xué)中,無論教案多么精美,語言多么生動都無法完全吸引學(xué)生的眼球,抓住學(xué)生的思想.只有采用啟發(fā)式教學(xué),創(chuàng)設(shè)問題,引導(dǎo)學(xué)生主動思考,實現(xiàn)教學(xué)互動,才能調(diào)動學(xué)生的學(xué)習(xí)積極性,活躍課堂,提高學(xué)生的創(chuàng)新思維能力.
在教學(xué)過程中,教師首先要善于從教學(xué)內(nèi)容中挖掘問題,并分析問題涉及到的數(shù)據(jù)結(jié)構(gòu),創(chuàng)設(shè)問題,啟發(fā)式地引導(dǎo)學(xué)生積極思考,充分調(diào)動學(xué)生主動思考問題、分析問題、解決問題的主動性,使學(xué)生能夠主動掌握知識,而不只是被動地學(xué)知識.進(jìn)而通過舉例、對比、動態(tài)演示等手段深入詳細(xì)地講解知識和算法,將枯燥的理論知識與實際應(yīng)用相結(jié)合,逐步培養(yǎng)學(xué)生發(fā)現(xiàn)問題、分析問題、并解決問題的能力.
3.2.2 采用案例教學(xué)
案例教學(xué)法是一種運(yùn)用實證來引入情景,啟發(fā)分析、演繹、推斷、歸納和解決實際問題的方法[4],被廣泛運(yùn)用于許多課程中.數(shù)據(jù)結(jié)構(gòu)課程包含較多的概念和理論知識.教師如果不結(jié)合實際,而只是根據(jù)教材中的內(nèi)容來講解概念和算法,將導(dǎo)致學(xué)生不知道所學(xué)的知識有什么用、怎么用,而很快將所學(xué)知識淡忘.而通過案例教學(xué),將知識融入案例中,在案例分析過程中講解概念、算法不僅能讓學(xué)生更好地掌握理論知識,也能使理論和實際緊密結(jié)合,激發(fā)學(xué)生的學(xué)習(xí)興趣.例如,在介紹棧的知識時,筆者就用“進(jìn)制轉(zhuǎn)換”,“火車調(diào)度”等作為引入知識案例.實踐證明,通過案例教學(xué),不但學(xué)生有較高的學(xué)習(xí)興趣,而且對知識的掌握程度也明顯提高.
案例教學(xué)還可以在章節(jié)結(jié)束后使用.在講授完相關(guān)概念、理論知識后,準(zhǔn)備一個綜合并有貼近生活的案例,這樣即達(dá)到復(fù)習(xí)作用,也可以讓學(xué)生感到學(xué)有所用.例如在圖的基本知識過后,引入“工程施工”,“通訊網(wǎng)絡(luò)造價”等案例,既有真實性,又與實際生產(chǎn)生活相聯(lián)系.
ACM/ICPC(ACM International Collegiate Programming Contest,國際大學(xué)生程序設(shè)計競賽)是由國際計算機(jī)界歷史悠久、頗具權(quán)威性的組織ACM(Association for Computing Machinery)主辦的,是國際公認(rèn)的規(guī)模最大、水平最高的國際大學(xué)生程序設(shè)計競賽.其目的旨在使大學(xué)生運(yùn)用計算機(jī)程序設(shè)計理論(包括數(shù)學(xué)、邏輯推理、程序設(shè)計語言、數(shù)據(jù)結(jié)構(gòu)、算法等)來充分展示學(xué)生分析問題和解決問題的能力[5].中國高校從1996年開始組織參加,而我校2009年才開始進(jìn)入這項比賽.
ACM競賽設(shè)定了一套合理的競賽排名、挑戰(zhàn)規(guī)則,提供了一個學(xué)習(xí)和使用程序設(shè)計語言和算法的完整實踐模式,讓學(xué)生以精通編程為榮,形成一個積極向上的自主學(xué)習(xí)氛圍[6].我們開發(fā)了ACM在線測評系統(tǒng),并將其運(yùn)用到數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)過程中,取得了顯著的效果.
3.3.1 改革實踐教學(xué)內(nèi)容、考核模式
將實踐內(nèi)容分為:基本實驗、設(shè)計型實驗和創(chuàng)新實驗項目.基本實驗包括線性表、棧、隊列、串、樹、二叉樹、圖、排序等基本存儲、基本操作、基本算法.設(shè)計型實驗包括圖書管理、迷宮求解、赫夫曼編碼、簡單排課系統(tǒng)等.創(chuàng)新型實驗有數(shù)據(jù)結(jié)構(gòu)算法演示系統(tǒng)、校園地理信息系統(tǒng)、基于RFID技術(shù)的無線自動講解系統(tǒng)等.通過對實踐內(nèi)容的分級設(shè)立,在不同階段讓學(xué)生進(jìn)行不同程度的練習(xí),可以有效地提高學(xué)生對基本知識的掌握和綜合能力、創(chuàng)新能力的提升.
對于數(shù)據(jù)結(jié)構(gòu)的考核一般分為理論和實踐考核.以往實踐考核執(zhí)行起來難度大,通常以平時實踐教學(xué)時掌握的情況來評定,缺乏競賽性和公平性.
針對ACM競賽,筆者將實驗內(nèi)容改造為ACM試題模式并上傳到ACM在線測評系統(tǒng).要求學(xué)生在課內(nèi)必須完成相應(yīng)的基本實驗內(nèi)容,ACM在線測評系統(tǒng)將記錄學(xué)生程序的提交次數(shù)及完成實驗的時間,并評定出成績,以此作為課程的平時成績.讓學(xué)生在課外分組完成設(shè)計型實驗.選擇成績較好的學(xué)生組隊進(jìn)行創(chuàng)新型實驗設(shè)計.在學(xué)期結(jié)束時,利用ACM系統(tǒng)進(jìn)行考核,要求每個學(xué)生在規(guī)定時間內(nèi)獨立完成規(guī)定題目.考核過程中學(xué)生可以實時地看到所有同學(xué)的完成情況和排名次序.這就極大地提高了實踐考核的挑戰(zhàn)性和公平性.而且引入競爭機(jī)制后,學(xué)生們學(xué)習(xí)的積極性也大大提高.
3.3.2 實踐教學(xué)改革成效
ACM競賽以解決問題為目標(biāo),通過具體問題的描述給出題目,讓學(xué)生自主選擇恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu),設(shè)計準(zhǔn)確高效的算法.經(jīng)過幾輪的實踐證明,基于ACM模式的數(shù)據(jù)結(jié)構(gòu)實踐課程可以很大程度上提高了學(xué)生的編程能力,算法設(shè)計能力和創(chuàng)新思維能力.為參加ACM大賽、軟件工程的學(xué)習(xí)和實際項目的開發(fā)打下了堅實的基礎(chǔ).
通過課程的教學(xué)改革,學(xué)生對數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計和ACM競賽產(chǎn)生了濃厚的興趣.托爾斯泰曾說:“成功的教學(xué)所需要的不是強(qiáng)制,而是激發(fā)學(xué)生的興趣”.可見,興趣是學(xué)習(xí)的主動力,只有主動學(xué)習(xí)才能學(xué)得更好,學(xué)得更多[3].只有充分思考不斷改革,加強(qiáng)教師自身修養(yǎng),才能達(dá)到理想的教學(xué)效果.
〔1〕嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C 語言版)[M].北京:清華大學(xué)出版社,1997:前言.
〔2〕王淮亭.《數(shù)據(jù)結(jié)構(gòu)》實踐教學(xué)探討與實踐[J].計算機(jī)教育,2009(12):133-134.
〔3〕王秀清.教學(xué)關(guān)鍵——提高學(xué)生學(xué)習(xí)興趣[J].價值工程,2010(20):209.
〔4〕羅淇方.淺談案例教學(xué)在數(shù)據(jù)結(jié)構(gòu)課程中的實踐應(yīng)用[J].中國科技信息,2010(19):251.
〔5〕Han J,Kamber M,范明,孟小峰,等.數(shù)據(jù)挖掘概念與技術(shù)(原書第二版)[M].機(jī)械工業(yè)出版社,2007.
〔6〕武建華.基于ACM模式的數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)改革與探索[J].計算機(jī)教育,2007(12):114.
〔7〕王志軍.啟發(fā)式教學(xué)——啟發(fā)學(xué)生的創(chuàng)新思維[J].實驗技術(shù)與管理,2008(12):17.
G642
A
1673-260X(2011)10-0253-02