《數(shù)據(jù)結(jié)構(gòu)》實驗教學(xué)方法探討的教育論文
摘要:《數(shù)據(jù)結(jié)構(gòu)》是計算機專業(yè)的專業(yè)基礎(chǔ)課程,具有很強的實踐性。本文結(jié)合筆者在課程教學(xué)的一些體會,從實驗教學(xué)設(shè)計、實驗教學(xué)手段等方面對《數(shù)據(jù)結(jié)構(gòu)》實踐教學(xué)方法提出自己的一些看法和建議。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu)實驗教學(xué)
引言
《數(shù)據(jù)結(jié)構(gòu)》是計算機專業(yè)課程體系的核心課程之一。課程主要講述各種數(shù)據(jù)的邏輯結(jié)構(gòu)、物理結(jié)構(gòu)及基本操作的實現(xiàn)算法以及數(shù)據(jù)查找、排序算法,并對各種算法進行性能分析和比較。
根據(jù)調(diào)查發(fā)現(xiàn),目前大多數(shù)院!稊(shù)據(jù)結(jié)構(gòu)》課程教學(xué)現(xiàn)狀不容樂觀。學(xué)生普遍反映課程學(xué)習(xí)比較困難,教師也感覺教學(xué)效果不理想。實驗教學(xué)更是因為程序設(shè)計語言基礎(chǔ)不扎實、課程內(nèi)容太抽象等原因而較難開展,有些學(xué)校因此而縮短學(xué)時甚至不開設(shè)實驗。一些專家和教師就課程實驗教學(xué)改革已經(jīng)提出了一些具體的教學(xué)方法,如案例驅(qū)動、課題答辯等。這些方法都具有比較重要的借鑒價值,但某些文章過于片面的強調(diào)某一種教學(xué)方法。筆者認為根據(jù)學(xué)生的實際情況完善教學(xué)設(shè)計、加強教學(xué)管理,通過行之有效的教學(xué)手段使學(xué)生學(xué)有所獲才是根本。下面結(jié)合自己的實際教學(xué)工作,談?wù)剬?shù)據(jù)結(jié)構(gòu)實驗教學(xué)方法的認識。我!稊(shù)據(jù)結(jié)構(gòu)》課程理論學(xué)時48,實踐學(xué)時16,教材選用嚴蔚敏的《數(shù)據(jù)結(jié)構(gòu)(C語言版)》)。
1講好理論第一課,明確課程性質(zhì)
僅從課程名稱來看,《數(shù)據(jù)結(jié)構(gòu)》就很容易被誤解為實踐性不強的理論課。講好第一堂理論課非常重要,應(yīng)讓學(xué)生明確課程性質(zhì)并理解實踐學(xué)習(xí)的重要性。
結(jié)合程序設(shè)計語言、操作系統(tǒng)等課程內(nèi)容,筆者設(shè)計了一些學(xué)生比較熟悉并容易理解的應(yīng)用實例和學(xué)生一起探討,如:inta[10]和a[i]=5的確切含義;文件簇的鏈式形態(tài);國際象棋大師與超級計算機的對決;圖的著色問題等。在講解圖的著色問題時引導(dǎo)學(xué)生思考圖的存儲中需要關(guān)心什么,怎么存以及大致的程序邏輯等。通過對實例的分析,引入課程主要內(nèi)容,學(xué)生也可明確課程的性質(zhì)和專業(yè)地位并思考課程學(xué)習(xí)目標。
2制定實驗教學(xué)計劃,設(shè)計實驗內(nèi)容
程序設(shè)計語言是數(shù)據(jù)結(jié)構(gòu)的前驅(qū)課程之一,多數(shù)院校都是以C語言程序設(shè)計作為學(xué)生程序邏輯訓(xùn)練的課程。數(shù)據(jù)結(jié)構(gòu)教材中采用類C語言來描述算法,對指針、結(jié)構(gòu)體等內(nèi)容并未作詳細的介紹。對于剛剛學(xué)完C語言的'學(xué)生來說,指針等內(nèi)容本來就比較模糊,要將類C算法轉(zhuǎn)換為程序?qū)崿F(xiàn)就更加困難。
在制定實驗教學(xué)計劃時,可以采用由易到難、逐步加深的方式來安排實驗內(nèi)容。結(jié)合實驗學(xué)時數(shù)和教學(xué)大綱要求,筆者將實驗內(nèi)容作了如下設(shè)計和安排:
2.1第一次上機任務(wù)只要求學(xué)生運用以前學(xué)過的C語言知識來編寫一個程序:給定一個整數(shù)序列,要求①用冒泡或選擇算法進行排序;②輸入一個整數(shù)X,在此有序序列中進行查找,如成功,則返回其位置;③如查找不成功,將X插入到序列中并使序列仍然有序。此題目運用到數(shù)組的定義、排序、查找、數(shù)組元素插入算法等相關(guān)內(nèi)容。通過此實驗,不僅能了解學(xué)生程序語言的熟悉程度,也能了解學(xué)生對排序和查找等基礎(chǔ)算法的掌握情況,為后面教學(xué)內(nèi)容設(shè)計作好鋪墊。
2.2結(jié)合教學(xué)進度要求學(xué)生實現(xiàn)常見數(shù)據(jù)結(jié)構(gòu)的基本操作,并能作一些驗證性的實驗。如用數(shù)字菜單的形式實現(xiàn)單向鏈表的基本操作,并完成兩個有序鏈表合并算法的驗證。實驗要求學(xué)生能實現(xiàn)大多數(shù)基本操作算法,完成頭文件的設(shè)計,并能利用已實現(xiàn)的基本操作完成復(fù)雜算法的驗證。通過此類實驗,學(xué)生對數(shù)據(jù)結(jié)構(gòu)的理解更直觀,程序邏輯更清晰,C語言的掌握能力逐漸增強,同時也為面向?qū)ο笳n程的學(xué)習(xí)打下一定的基礎(chǔ)。
2.3設(shè)計性實驗即課程設(shè)計安排。課程設(shè)計的目的在于培養(yǎng)學(xué)生分析和解決實際問題的能力,訓(xùn)練和提高學(xué)生規(guī)范的程序設(shè)計方法。教師可推出一些典型的并與后續(xù)課程有一定聯(lián)系的題目供學(xué)生選擇。每個題目規(guī)模不能太小,并能反映相關(guān)數(shù)據(jù)結(jié)構(gòu)在程序設(shè)計中起的關(guān)鍵作用。如:①實現(xiàn)一個串的基本操作演示程序,提供命令行的輸入(仿照COMMAND),并對命令行能進行簡單的編譯和出錯處理,最后根據(jù)命令動詞的功能來執(zhí)行命令;②利用哈夫曼編碼算法實現(xiàn)簡單文本文件的壓縮和解壓。題目隨著理論教學(xué)進度推出,有難有易,學(xué)生結(jié)合自己實際來選擇并可提前完成。
3規(guī)范實驗過程,加強實驗教學(xué)管理
為保障計劃的有效實施,必須規(guī)范實驗過程并加強實驗教學(xué)管理。
3.1根據(jù)計劃制定實驗指導(dǎo)書。指導(dǎo)書中給出每個實驗的目的、學(xué)時、內(nèi)容等。其中設(shè)計性實驗另給出一些基本的分析思路,每個實驗都適當(dāng)?shù)奶砑右恍┻x作題。學(xué)生通過閱讀實驗指導(dǎo)書能進一步明確每次實驗的具體內(nèi)容和要求。
3.2要求學(xué)生做好上機前的準備。大二學(xué)生的編碼速度普遍較慢,如果把實驗課時間主要用于輸入代碼是非常不值得的,應(yīng)將主要精力放在程序調(diào)試上面。這樣不僅有充足的提問時間,也便于教師歸納并集中講解學(xué)生調(diào)試過程中所遇到的常見問題。
3.3要求學(xué)生實驗后完成實驗報告。報告中須給出問題分析、數(shù)據(jù)描述、算法描述、程序描述、測試結(jié)果和心得體會等內(nèi)容。教師對學(xué)生提交的實驗報告進行分析,總結(jié)并指出實驗的成功和不足之處。
3.4加強實驗教學(xué)管理,從正面引導(dǎo)學(xué)生。隨著網(wǎng)絡(luò)信息技術(shù)的發(fā)展,網(wǎng)絡(luò)中提供的各種信息服務(wù)和娛樂方式使部分學(xué)生的學(xué)習(xí)積極性逐漸降低,學(xué)習(xí)目標也越來越不明確。如果管理松懈,有些學(xué)生就會把實踐學(xué)習(xí)當(dāng)成是簡單的Ctrl-C和Ctrl-V,不能達到實驗教學(xué)的預(yù)期目標。因此,教師應(yīng)了解學(xué)生的學(xué)習(xí)動態(tài),加強實踐教學(xué)管理,并根據(jù)實際情況進行相應(yīng)調(diào)整和改進。
4豐富教學(xué)手段,搞好實驗指導(dǎo)
在實踐教學(xué)過程,教師不能只停留于解決學(xué)生提出的問題,還應(yīng)不斷摸索教學(xué)方法,豐富教學(xué)手段。
4.1演示基本算法實現(xiàn)時可采用互動的方式進行。先按類型定義→初始化→輸入測試數(shù)據(jù)→輸出的實現(xiàn)順序和學(xué)生一起得到結(jié)果;再讓學(xué)生逐個實現(xiàn)其余算法,最后完成頭文件的設(shè)計。學(xué)生通過教師演示和實際操作可以更快的掌握類C算法和C程序的轉(zhuǎn)換思路。
4.2數(shù)據(jù)結(jié)構(gòu)中的程序規(guī)模相比C語言來說更大。由于缺乏經(jīng)驗,很多學(xué)生在程序調(diào)試中會出現(xiàn)較多的語法和邏輯錯誤,可利用多媒體網(wǎng)絡(luò)教學(xué)手段在學(xué)生機上直接演示并講解程序調(diào)試的方法和技巧。
4.3學(xué)生實驗過程中盡力營造一種你追我趕的競爭氛圍,通過激勵機制提高學(xué)生學(xué)習(xí)積極性。如果有同學(xué)較早實現(xiàn)了某些算法,可有選擇性的適當(dāng)?shù)摹按碳ぁ辈糠謱W(xué)生以激發(fā)其不服輸?shù)男睦,從而帶動其他學(xué)生。
4.4鼓勵學(xué)生多實踐,要求學(xué)生通過實踐來找出理論學(xué)習(xí)中存在的問題,提高自己的抽象思維和邏輯推理能力。對于編程能力較強的學(xué)生,鼓勵他們多做題,做難題,為今后參加各種資格水平考試和專業(yè)競賽作好準備。
5總結(jié)
《數(shù)據(jù)結(jié)構(gòu)》是一門理論和實踐結(jié)合性非常強的課程,其課程性質(zhì)決定了教學(xué)過程的復(fù)雜性。作為承擔(dān)課程教學(xué)的老師,不管是理論教學(xué)還是實驗教學(xué),都應(yīng)結(jié)合學(xué)生的特點,從教學(xué)設(shè)計、教學(xué)手段、教學(xué)管理等多方面進行深入具體的探討和研究,并運用到教學(xué)實踐中。只有這樣,才能真正使學(xué)生理解《數(shù)據(jù)結(jié)構(gòu)》課程意義和課程核心地位。
參考文獻:
[1]嚴蔚敏,吳偉民.《數(shù)據(jù)結(jié)構(gòu)(C語言版)》[M].北京:清華大學(xué)出版社.1997.
[2]黃現(xiàn)代.“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)改革與實踐[J].北京:計算機教育.2007(16).
[3]李丹丹.數(shù)據(jù)結(jié)構(gòu)教學(xué)改革與實踐[J].北京:北京城市學(xué)院學(xué)報.2007(3).