◆呂雅麗
(河南中醫藥大學)
“數據結構”課程實驗教學的研究與探索
◆呂雅麗
(河南中醫藥大學)
“數據結構”課程是高等院校理工科專業的一門必修課程,其實驗教學環節不僅幫助學生理解數據結構的基本概念和基礎算法,而且培養學生良好的算法編寫技能,鍛煉學生通過編程解決實際問題的能力。本文針對“數據結構”課程實驗教學環節中存在的問題,將整個實驗教學分成基礎篇、提高篇、專項篇等三個階段,設計和實現了與實例緊密結合的分層次的實驗教學模式。這一教學模式由易到難、由單一到綜合,逐步培養學生的算法編寫能力,在教學過程中也取得了良好的效果。
數據結構 實驗教學 實例
“數據結構”課程是高等院校理工科專業的一門必修課程,是計算機科學領域中的一門重要基礎課。該課程主要介紹如何利用算法實現各種數據在計算機中的存儲和處理,其重點學習內容包括:順序表、鏈表、棧和隊列、數組、樹與森林、圖、查找、排序等。通過本課程的學習,使學生深透地理解數據結構的基本概念和基礎算法,培養學生良好的程序設計技能,鍛煉學生通過編程解決實際問題的能力。為后續相關專業課程的學習打下堅實的基礎,為從事計算機科學領域的研究和開發打下理論和實驗的基礎。
“數據結構”的課程實驗不僅幫助學生理解數據結構的基本概念和基礎算法,而且培養學生良好的算法技能,鍛煉學生通過編程解決實際問題的能力。
在大多數院校,按照教學大綱和實驗大綱安排,“數據結構”課程一般在大學期間的第三學期或者第四學期開設,并且前期已開設一門程序設計基礎課程。其總教學學時72學時,其中理論教學54學時,實驗教學18學時。目前,在實驗教學的整個過程中存在以下幾個問題。
1.學生對實驗教學重視程度不夠。“數據結構”課程的理論知識多是用偽代碼寫的,學生往往側重于算法的理解,忽略了算法的實現。教材中的算法往往是偽代碼或者是程序段,學生要想將算法實現,就需要把偽代碼或者程序段放到帶有數據的實例中,用正確的、可執行的程序實現,然后調試運行,查看算法結果。而這一過程,一方面,比較復雜;另一方面,不是“數據結構”課程的重點,所以往往會被老師和學生忽略。但是這一過程恰恰是幫助學生透徹理解算法,幫助學生把算法與實際應用結合。
2.實驗項目設置關聯性。每一個實驗項目對應一定的理論知識,實驗項目之間不相關,學生做完做不完都不會影響下次實驗,導致很多學生對一些實驗不夠重視,主動性不高。有一些學生在個別實驗項目沒有做完的情況下,沒有主動的在課下完成,在下次實驗課上也沒有主動積極的補做,時間久了,越積越多,最終導致這門課程學得不好,也必然影響后續課程的學習。
3.實驗項目內容設置缺乏與實例的結合。實驗不僅僅是理論知識鞏固,更是知識總結和能力的提高。實驗內容的設置不能僅僅考慮理論知識體現,更應考慮如何讓學生在理解理論的同時和實際應用相結合,培養學生把理論應用于實際的主動性。目前,大多數學生學習態度是被動的,不愿意去多想,不愿意去擴展。教師在設計實驗項目時要引導他們去聯系實際,去擴展內容。這樣持續下去,學生才會在掌握理論知識的同時,和實際應用相結合,掌握算法的精髓。
針對以上存在的問題,在“數據結構”實驗教學中我們設計了與實例緊密結合的分層次的實驗教學模式。這一教學模式由易到難、由單一到綜合,逐步培養學生的算法編寫能力。我們將整個實驗教學分成基礎篇、提高篇、專項篇等三個階段,每個階段完成一定的知識目標和理論目標。
多數高校的教學計劃中,“數據結構”課程的實驗教學是18學時,我們將18學時分為9個實驗項目,分別為:順序表的操作、單鏈表的操作、棧的操作、隊列的操作、數組的操作、二叉樹的操作、圖的操作、查找操作、排序操作。不同實驗項目結合不同的實例,劃分到不同的層次,具體實施如下。
1.基礎篇。“數據結構”實驗教學的初級階段屬于基礎篇的內容,是對教材的理論知識點的簡單實現。實驗項目中順序表的操作、單鏈表的操作、棧的操作、隊列的操作等屬于基礎篇的實驗,這一階段的實驗實例相對簡單,重點在于讓學生掌握基本的數據結構類型。這一階段的順序表實驗和單鏈表實驗用的實例是學生成績管理系統,這里對學生的信息只存儲學號和姓名,成績信息可以存儲一門到三門課程的成績。這樣數據比較簡單,著重讓學生掌握線性表的順序存儲和鏈式存儲。對于棧的操作采用的是火車車廂重排問題的案例,這里要求學生也要通過順序和鏈式兩種存儲方式實現。對于隊列操作的實驗采用的實例是銀行排隊叫號系統。在銀行排隊叫號系統這一實例中要求學生不能僅僅使用一個隊列,一次簡單的先進先出操作實現,需要學生考慮到一個排號隊列,多個叫號隊列的情況,讓學生有所思考,從而實現對隊列操作的深入理解。
2.提高篇。通過基礎篇實驗的學習,學生對線性表、棧、隊列等基本數據結構有了深刻的認識,對順序存儲結構和鏈式存儲結構的使用有了一定的基礎。接下來要學習的是較為復雜的數據結構:數組、樹和圖。數組的操作、二叉樹的操作、圖的操作等實驗就是提高篇要完成的實驗內容。這一階段接觸的是復雜的數據結構,但核心還是運用基礎篇學習的基本數據結構,實例的選擇也會較為復雜。數組操作的實驗選擇的實例是超市物品購買數據存儲系統。這個實例中要處理的數據不是簡單的數組,其需要的數組較大,但存儲的數據較少,這就是典型的系數矩陣。在現實生活中這類數據經常遇到,對這類數據的存儲和操作就要通過數組操作的實驗進行學習和掌握。樹操作通過二叉樹實現的,所以樹這一章節的實驗設置的是二叉樹的操作,結合的實例是磁盤文件的記錄系統,著重是運用線索二叉樹的知識。圖操作的實驗用的實例是高速公路交通網這一經典案例。這一實例不僅運用了圖的遍歷操作,還用了最短路徑等經典算法。通過這些提高篇的實驗項目學生對復雜的數據結構有所掌握,也對數據結構的復雜應用有所了解。
3.專項篇。對于大多數數據的處理都會用到兩種典型的操作:查找和排序。數據結構課程的后期都會講到這兩項內容,同樣也會有兩項專門的實驗來對應。查找操作和排序操作采用的實例分別是奧運會獎牌的排行榜的查詢和排名,著重讓學生掌握不同的查找方法和排序方法。需要學生熟記一些經典的查找算法和排序算法,會對不同的算法比較優劣,同時也對時間復雜度和空間復雜度有所了解。
基礎篇、提高篇、專項篇這三個實驗階段,由易到難,相輔相承,讓學生逐步掌握不同數據結構的定義和使用,進而培養學生的算法編寫能力。具體在實施過程中根據學生的實際接受情況和掌握情況對具體實驗內容進行增減。
我們在2012級學生的“數據結構”課程教學中開始探索這一實驗教學模式,在2013級學生的“數據結構”課程教學中進一步完善,效果很好。學生學習的積極性明顯提高,學習效果也有了明顯的提高。
經過一系列的實驗教學實踐,我們針對“數據結構”課程,探索出了由基礎篇、提高篇、專項篇這個三個階段組成的與實例緊密結合的實驗教學模式。這一教學模式由易到難,逐步培養學生的算法編寫能力。今后,我們將繼續結合教學實際進一步完善實驗教學文件、豐富“數據結構”課程實驗內容和課程設計的內容,從而提升“數據結構”課程的教學效果。
[1]黃賢英.計算機專業實驗教學體系建設思考[J].實驗技術與管理,2009,(10):94-100.
[2]馬彬.三維一體化的計算機實驗教學建設體系[J].實驗室研究與探索,2013,(10):163-165.
[3]孫愛東,楊秋妹,肖媚燕.多層次的“數據結構”實驗教學模式探討[J].教學改革與研究,2009.