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