摘 要: 《數(shù)據(jù)結(jié)構(gòu)》課程是計算機及相關(guān)學(xué)科的一門重要的專業(yè)基礎(chǔ)課,也是一門鍛煉程序設(shè)計能力的實踐課程。本文從幾個方面闡述了如何對《數(shù)據(jù)結(jié)構(gòu)》進(jìn)行教學(xué)改革。
關(guān)鍵詞: 教學(xué)方法改革 降低理論性程度 增強直觀性
《數(shù)據(jù)結(jié)構(gòu)》課程是計算機及相關(guān)學(xué)科的一門重要的專業(yè)基礎(chǔ)課,也是一門鍛煉程序設(shè)計能力的實踐課程。它相對于其他應(yīng)用性課程來說抽象、枯燥,學(xué)生學(xué)習(xí)起來有一定的難度,教師講起來也比較難。那么如何降低理論性程度,增強直觀性,提高學(xué)生的學(xué)習(xí)興趣呢?我在教學(xué)中盡量做到以下幾點:
1.講好第一堂課,以調(diào)動學(xué)生的學(xué)習(xí)興趣
《數(shù)據(jù)結(jié)構(gòu)》雖然包含了較多的理論內(nèi)容,但具有實踐應(yīng)用的特點?!芭d趣是最好的老師”。因此在進(jìn)行數(shù)據(jù)結(jié)構(gòu)課的第一次授課中,我并不急于介紹理論,而是強調(diào)應(yīng)用,通過介紹數(shù)據(jù)結(jié)構(gòu)在實際中的應(yīng)用來激發(fā)學(xué)生的學(xué)習(xí)興趣。如圖書館的書目檢索系統(tǒng),如何組織圖書的登錄號、書名、分類號等數(shù)據(jù),才能快速實現(xiàn)查找、插入、刪除操作;旅游線路設(shè)計問題,如想去北京、上海、天津等地旅游,怎樣安排線路以求花費最少;在鐵路建設(shè)中,如何施工以求花費最少,等等。以上應(yīng)用貼近生活,學(xué)生都比較熟悉,興趣就能夠被激發(fā)起來,形成想學(xué)好這門課的愿望。其實上述例子就已經(jīng)囊括了本門課中涉及的幾大類數(shù)據(jù)結(jié)構(gòu)——線性表、樹和圖,這樣教師就可以水到渠成地歸結(jié)出數(shù)據(jù)結(jié)構(gòu)的概念,以及本章涉列的幾種數(shù)據(jù)結(jié)構(gòu)的類型,為后續(xù)章節(jié)的講解打下了良好的基礎(chǔ)。
2.解決C語言的不足
《C語言程序設(shè)計》是數(shù)據(jù)結(jié)構(gòu)的前導(dǎo)課程之一,學(xué)生對它的熟悉掌握程度直接關(guān)系到數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)效果。C語言本身極具靈活性,剛剛學(xué)完C語言程序設(shè)計的學(xué)生運用不是很自如。另外,C語言的難點是指針、函數(shù)、數(shù)組作為函數(shù)參數(shù),以及結(jié)構(gòu)體類型等,而數(shù)據(jù)結(jié)構(gòu)課程教學(xué)過程中主要運用這些知識點來分析、解決問題。對于大部分學(xué)生來說,C語言運用能力不是很強,如果上課時直接切入主題,他們就會有“云遮霧罩”的感覺。如何解決這個問題呢?我們可以利用一兩次課的時間來復(fù)習(xí)C語言的相關(guān)知識,即數(shù)組、指針、函數(shù)和結(jié)構(gòu)體等??梢詫⑦@些學(xué)時納入到教學(xué)進(jìn)度表中,教師在復(fù)習(xí)并不是面面俱到,而是將與本課相關(guān)的內(nèi)容加以歸納總結(jié),這樣既可以復(fù)習(xí)以前的知識,加深印象,強化理解,又可以為數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)作鋪墊。
3.教學(xué)內(nèi)容的歸納提煉
不少教師常說《數(shù)據(jù)結(jié)構(gòu)》這門課難講,學(xué)生也反映這門課不好學(xué),這是因為《數(shù)據(jù)結(jié)構(gòu)》不但有很強的理論性,而且具有一定的抽象性。同時《數(shù)據(jù)結(jié)構(gòu)》課程又有較強的實踐性,要求學(xué)生能夠使用一種語言(PASCAL、C、C++或Java),對算法進(jìn)行程序設(shè)計,并且能夠進(jìn)行上機調(diào)試,對于基礎(chǔ)薄弱的學(xué)生這就好似“雪上加霜”。既然“教”與“學(xué)”都有困難,那么在“教”與“學(xué)”的過程中就應(yīng)該首先解決教師應(yīng)該怎么“教”的問題。教師首先應(yīng)對理論概念和算法思想進(jìn)行處理,避免“照本宣科”,教師自己要熟悉教材、精通教材,把握本課程的重點和難點,能夠?qū)⑶昂髢?nèi)容聯(lián)系起來分析思考,盡量從中尋找共性的、規(guī)律性的東西進(jìn)行歸納與提煉,并將其系統(tǒng)化、具體化。例如從數(shù)據(jù)結(jié)構(gòu)的定義出發(fā)包含三方面的內(nèi)容:邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和算法。在講到每種數(shù)據(jù)結(jié)構(gòu)(線性表、棧、隊列、樹、圖)都會涉及它的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和算法。我在講授的過程中用數(shù)據(jù)結(jié)構(gòu)包含的三方面內(nèi)容作為一條主線貫穿整本書,每講到一種新的數(shù)據(jù)結(jié)構(gòu)時都可以拿出這條主線來闡明其上的三方面內(nèi)容,這樣,學(xué)生學(xué)起來就會覺得有系統(tǒng)性,容易把握。綜觀全書,不論是線性表、樹還是圖,最基本的、典型的存儲結(jié)構(gòu)就是兩類:順序存儲結(jié)構(gòu)、鏈?zhǔn)酱鎯Y(jié)構(gòu),只要把它們掌握好,整個課程學(xué)習(xí)的難度就不覺得大。所以在教學(xué)過程中,我一方面緊扣課程的主脈(即各種數(shù)據(jù)結(jié)構(gòu)的基本概念、邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)、主要算法與相關(guān)應(yīng)用),把基本的概念與術(shù)語解釋清楚,把各種數(shù)據(jù)結(jié)構(gòu)與操作運算分析清楚,把有關(guān)算法的設(shè)計思路與實現(xiàn)方法講解清楚。另一方面,我更注重有關(guān)內(nèi)容的前后呼應(yīng),把握其內(nèi)在聯(lián)系,對各種相關(guān)結(jié)構(gòu)的特點與操作,進(jìn)行相應(yīng)的歸納、總結(jié)與對比。
4.教學(xué)模式的更新
“問題”是創(chuàng)新的起點,是引發(fā)學(xué)生興趣、誘發(fā)學(xué)生動機的理想載體?!稊?shù)據(jù)結(jié)構(gòu)》教學(xué)中,特別是算法設(shè)計中可以設(shè)計許多問題。我在備課時,不僅消化教材內(nèi)容,深入探究知識的奧秘,更精心設(shè)計課堂情景,準(zhǔn)備好“問題”;課堂教學(xué)時不僅生動詳盡地講解知識,更努力激發(fā)學(xué)生思維;教學(xué)過程中不僅要求學(xué)生認(rèn)真聽,更引導(dǎo)學(xué)生積極思考,逐步培養(yǎng)學(xué)生發(fā)現(xiàn)問題、分析問題、解決問題的能力。例如,在講到棧時,為了讓學(xué)生掌握棧的特點,我讓學(xué)生先用數(shù)組來編寫算法,然后用棧進(jìn)行編寫,最后我來進(jìn)行點評,讓學(xué)生清楚了解什么情況下使用棧比較方便。這樣既有助于講清問題,又能提高學(xué)生的積極性。
5.加強實踐環(huán)節(jié)
為使學(xué)生真正學(xué)好《數(shù)據(jù)結(jié)構(gòu)》,我除了在課堂上采用行之有效的教學(xué)方法外,還讓學(xué)生多做習(xí)題。要學(xué)好《數(shù)據(jù)結(jié)構(gòu)》,只“看”不“練”肯定是不行的,習(xí)題的作用是極其重要的,學(xué)生不僅要做,而且必須交作業(yè),這樣我才能知道學(xué)生的掌握情況,然后對出現(xiàn)的問題進(jìn)行總結(jié)、歸納、講評。講評時我細(xì)講解題思路,規(guī)范解題方法,并強調(diào)有關(guān)的注意事項,同時,對于作業(yè)中的可取之處加以表揚,鼓勵學(xué)生開拓創(chuàng)新。
當(dāng)然實踐還包括上機實驗。上機實驗不僅能進(jìn)一步鞏固對有關(guān)內(nèi)容的理解,而且能提高學(xué)生靈活運用數(shù)據(jù)結(jié)構(gòu)和算法的能力,使學(xué)生在編程、上機操作、程序調(diào)試與正確性驗證等基本技能方面得到訓(xùn)練。
以上就是我在《數(shù)據(jù)結(jié)構(gòu)》教學(xué)中的教學(xué)方法改革,有不當(dāng)之處希望廣大同仁多多指點。
參考文獻(xiàn):
[1]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu).北京:清華大學(xué)出版社,1992.
[2]陳小平.數(shù)據(jù)結(jié)構(gòu).南京:南京大學(xué)出版社,1994.