代文征 楊勇 蔣文娟
摘要:針對數(shù)據(jù)結(jié)構(gòu)綜合程序庫建設(shè)的內(nèi)容匱乏問題,分析數(shù)據(jù)結(jié)構(gòu)課程的特點,提出基于經(jīng)典的數(shù)據(jù)結(jié)構(gòu)形式以及采用兩種基本的存儲方式實現(xiàn)相關(guān)基礎(chǔ)算法,實現(xiàn)擴展的綜合項目程序,并通過實踐結(jié)果驗證構(gòu)建綜合程序庫的教學(xué)效果。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);程序庫;實踐
背景
隨著網(wǎng)絡(luò)和信息技術(shù)的不斷普及,人們的生活及生產(chǎn)活動產(chǎn)生的數(shù)據(jù)正在呈指數(shù)級增長。對海量數(shù)據(jù)進行處理及應(yīng)用,是衡量現(xiàn)代化國家信息技術(shù)能力的一個重要標(biāo)準(zhǔn),是一個國家信息技術(shù)發(fā)展程度的展板。因此,讓學(xué)生認(rèn)識數(shù)據(jù)的重要性、樹立數(shù)據(jù)處理的計算思維是很重要的。數(shù)據(jù)結(jié)構(gòu)是高校計算機、信息類專業(yè)的重要專業(yè)基礎(chǔ)必修課,是培養(yǎng)學(xué)生計算思維的基礎(chǔ)課。數(shù)據(jù)結(jié)構(gòu)有助于程序員更有效地組織數(shù)據(jù)、設(shè)計高效的算法、完成高質(zhì)量的程序,以滿足錯綜復(fù)雜的實際需要。
數(shù)據(jù)結(jié)構(gòu)課程涵蓋了各種基本數(shù)據(jù)結(jié)構(gòu),其目的是使學(xué)生掌握并熟練應(yīng)用各種基本數(shù)據(jù)結(jié)構(gòu)及復(fù)雜數(shù)據(jù)結(jié)構(gòu)來解決實際的數(shù)據(jù)處理問題。在實際教學(xué)中,由于沒有較好的案例,學(xué)生無法將基礎(chǔ)算法規(guī)律化,更無法將其應(yīng)用到實際問題上。
2數(shù)據(jù)結(jié)構(gòu)內(nèi)容與特點
數(shù)據(jù)結(jié)構(gòu)課程主要介紹基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)、算法及算法在存儲結(jié)構(gòu)體上的實現(xiàn),并擴展了基本數(shù)據(jù)結(jié)構(gòu)。學(xué)生要重點掌握基本數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)、存儲方式及算法實現(xiàn)。數(shù)據(jù)結(jié)構(gòu)課程的基本內(nèi)容比較多,需要學(xué)生深刻理解并掌握。在眾多的教學(xué)內(nèi)容中存在著某種可遵循的規(guī)律,也就是“算法公式化”。學(xué)生需要不斷地閱讀并動手編寫算法程序,才能從中找到這些規(guī)律。學(xué)生切身體會并掌握基本規(guī)律后,就能夠輕松簡單地進行相關(guān)數(shù)據(jù)結(jié)構(gòu)算法程序的編寫及應(yīng)用。因此,課程教學(xué)內(nèi)容以基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)為切入點,講解如何分析邏輯結(jié)構(gòu)和基本算法,并在兩種基本的存儲方式下進行相關(guān)算法程序的編寫。數(shù)據(jù)結(jié)構(gòu)課程的主要特點如下:
(1)數(shù)據(jù)結(jié)構(gòu)知識點多。針對線性結(jié)構(gòu)的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)形式包括線性表、棧、隊列、串等,非線性結(jié)構(gòu)的包括樹、二叉樹、圖(有向圖,無向圖)等。
(2)算法實現(xiàn)思想多。針對不同的數(shù)據(jù)結(jié)構(gòu)形式有兩種基本的存儲方式:順序存儲及鏈?zhǔn)酱鎯Γ糠N數(shù)據(jù)結(jié)構(gòu)的常見操作(如插入、刪除、查找、排序、修改等)算法的實現(xiàn)又與存儲結(jié)構(gòu)有關(guān)。
(3)知識關(guān)聯(lián)性多。數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)需要線性代數(shù)、離散數(shù)學(xué)、概率統(tǒng)計等數(shù)學(xué)知識,還需要具有相關(guān)的程序語言基礎(chǔ)。
(4)實踐性強。數(shù)據(jù)結(jié)構(gòu)需要學(xué)生動手使用程序語言實現(xiàn)相關(guān)的抽象算法,來驗證算法的正確性及可行性,即最終的目的不是掌握算法,而是使用程序語言具體實現(xiàn)算法。
3構(gòu)建程序庫
簡單的課程講解和實驗實踐并不能讓學(xué)生真正了解和掌握該課程所要求的知識。因此,需要建立一個基礎(chǔ)程序及應(yīng)用程序庫,幫助學(xué)生更好地掌握數(shù)據(jù)結(jié)構(gòu)的算法及具體程序?qū)崿F(xiàn),為學(xué)生進行創(chuàng)新學(xué)習(xí)打下一定的算法及實現(xiàn)基礎(chǔ)。數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)程序及應(yīng)用程序庫包含以下幾方面。
(1)數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)算法及程序:典型的數(shù)據(jù)結(jié)構(gòu)基本操作算法及相關(guān)存儲體上的具體實現(xiàn)程序庫。
(2)數(shù)據(jù)結(jié)構(gòu)應(yīng)用程序庫。典型的數(shù)據(jù)結(jié)構(gòu)在大中型項目中的具體使用及相關(guān)操作算法實現(xiàn),例如購票系統(tǒng)、多通道病人就醫(yī)系統(tǒng)、旅游引導(dǎo)系統(tǒng)等,讓學(xué)生了解這些系統(tǒng)的具體實現(xiàn),幫助學(xué)生樹立知識應(yīng)用的思想,增強學(xué)生的學(xué)習(xí)興趣。
(3)在線互動平臺和資源庫。構(gòu)建針對各項目的在線資源和答疑區(qū),鍛煉學(xué)生的組織能力、溝通能力和協(xié)作能力。
(4)課程內(nèi)容庫。針對數(shù)據(jù)結(jié)構(gòu)課程的各個數(shù)據(jù)結(jié)構(gòu)形式,建設(shè)相應(yīng)的課程內(nèi)容,方便學(xué)生自主學(xué)習(xí)。
(5)數(shù)據(jù)結(jié)構(gòu)文檔庫。讓學(xué)生使用文檔模板記錄開發(fā)過程中的各個元素,規(guī)范學(xué)生的文檔寫作。
4程序庫更新、維護及代碼復(fù)用
構(gòu)建的程序庫隨著算法研究的發(fā)展,可以根據(jù)需要在服務(wù)端進行相關(guān)案例及算法的更新和維護。程序庫的管理操作是由程序庫管理平臺來實現(xiàn)的,用戶只有使用權(quán),但用戶可以反饋自己在使用中發(fā)現(xiàn)的問題及對程序庫的意見,程序庫管理系統(tǒng)收集用戶的反饋信息進行針對性的維護。
構(gòu)建程序庫系統(tǒng)前,首先對系統(tǒng)進行用例模型、領(lǐng)域知識模型的分析,然后采用正向工程,生成系統(tǒng)需要設(shè)計的相關(guān)對象,從而保證功能代碼的復(fù)用,方便后期進行系統(tǒng)維護。
5程序庫實施與使用
課程共安排64課時,包括52課時的理論教學(xué)和12課時的實驗教學(xué),基本保證了知識點的傳授和實際項目的鍛煉。另外,在52課時的理論教學(xué)課程中,有4課時的討論時間?;A(chǔ)理論授課時,將基礎(chǔ)程序庫中的部分算法進行現(xiàn)場的編程實現(xiàn),如果學(xué)生想在課后進行強化的自學(xué),可以到程序庫中進行檢索。在構(gòu)建程序庫時,要求函數(shù)名能夠體現(xiàn)程序功能,學(xué)生在課后自主學(xué)習(xí)進行程序庫檢索時,需要提供基本的功能名,系統(tǒng)進行粗糙匹配、相似度評價,在半監(jiān)督的方式下由學(xué)生進行精確定位算法函數(shù)。
為幫助學(xué)生學(xué)習(xí),我們已經(jīng)建立了校內(nèi)在線學(xué)習(xí)系統(tǒng),將主講教師的講課錄像及相關(guān)課程庫發(fā)布到移動互聯(lián)網(wǎng)中。此外,還為學(xué)生開放了相關(guān)實驗室,幫助學(xué)生研究一些開放性問題,激發(fā)學(xué)生利用移動互聯(lián)網(wǎng)尋求問題的答案,培養(yǎng)學(xué)生解決問題、撰寫文檔的能力。
6結(jié)語
目前,數(shù)據(jù)結(jié)構(gòu)算法及案例庫研究和構(gòu)建非常匱乏。由于學(xué)生的興趣點不同,案例庫應(yīng)提供不同關(guān)注點的項目案例,使學(xué)生有更多的選擇,在達到同樣的教學(xué)目的的同時,能夠滿足學(xué)生不同的興趣需要。因此,構(gòu)建一個完整的自成體系的綜合項目案例庫是很有必要的。將該程序庫應(yīng)用到學(xué)校計算機信息類專業(yè)的數(shù)據(jù)結(jié)構(gòu)教學(xué)中后,經(jīng)過4個學(xué)期的效果對比,教學(xué)效果較好,相關(guān)成果獲得了河南省教育廳教學(xué)成果二等獎。