摘要:《數據結構》是計算機專業的基礎課之一,是一門原理性較強的課程。在教學過程中,除了使用傳統的講授方式以外,還可以增加一些實例以及多媒體演示的方法,便于激發學生的學習興趣,提高教學效果。
關鍵詞:數據結構課程;教學體會
《數據結構》課程是大部分高等院校計算機專業基礎課,也是計算機專業學生公認難學的課程之一。在計算機專業高職升本的考試中,大部分的本科學校選擇《數據結構》作為專業考試課程之一。而《數據結構》課程本身是一門原理性較強的課程。對于應考的學生而言,這門課程要比C++等程序設計類課程考試難度大一些。《數據結構》課程主要的教學任務是使學生了解和掌握數據結構中線性、樹型和圖形三種結構的相關知識,以及算法設計中常用到的幾種排序算法和查找算法。它是處于程序設計初級階段的一門學科,選擇適當的數據結構對算法的設計做了基礎結構的保證。《數據結構》課程的內容中也介紹了算法分析的標準。由于該課程原理性較強,不能像應用軟件課程那樣,讓學生直觀地去認識;也不像程序設計課程那樣,通過一個階段的學習,學生可以制作出一個作品,對自己所學的內容加以總結。《數據結構》就像另一門原理性課程《微機原理》一樣,大部分學生都會覺得很難學,而學過后也沒有什么效果,從教師的角度來看,大部分任課教師對原理性較強的課程講授時,一般都會采用傳統的“一塊黑板、一支粉筆、一人講課、眾人聽”的模式,只有個別教師會使用多媒體課件進行講授。通過多年的教學實踐,筆者總結歸納出了比較適合學生的教學方法,并取得了良好的效果。
根據課程內容選擇教學方法
《數據結構》課程教材中包含了數據結構相關的基礎知識和相關的算法知識。對于基礎理論知識部分可以采取在教室集體講授的教學方式。在講授時可以通過舉例或借用實物的方式對內容進行描述,利用引導教學的方式讓學生發揮自己的想象去解答問題。例如,在講到第三章“棧和隊列的結構”時,首先說明棧和隊列與前面所講到的線性表有所不同。在線性結構中,我們可以對它的任意一個數據元素進行操作,而棧和隊列都是操作受限的線性表,棧的插入和刪除操作在一端進行,這樣的結構決定了它的特點是先進后出,后進先出;隊列的結構是插入在一端,刪除在另一端,其特點是先進先出,后進后出。教師在說明了棧和隊列的結構及特點之后,引導學生自己考慮現實生活中存不存在棧和隊列結構,很多學生會找到隊列的結構。例如,在超市排隊結賬,火車進站,這些答案基本相似。對于棧結構學生的答案有所不同,有經常用到的單門電梯、有特殊藥瓶、飛機行李倉等。學生通過思考,對棧和隊列的結構有了初步的認識。這種認識要比教師直接講授記憶更加深刻、生動,也可以把課上講授的問題與實際生活中的問題結合起來。例如《數據結構》中的哈夫曼樹可以應用于算法的設計以及電報碼的編碼方面。在有向圖(見右圖)中,某點到其他各點的最短路徑問題中,可以把這個有向圖看成是一張地圖,固定點V0可以假設為天津,那么V0與其他各點之間的最短路徑可以假設為天津到其他各城市間的最短路徑。像這樣的問題在《數據結構》中還有很多。利用這種方式,學生的理解程度比不用實例時要好得多。除此之外,《數據結構》中還有一些內容可以通過flash將過程以動畫的形式展現出來。Flash的動畫形式比傳統的板書更加吸引人。Flash動畫從顏色、聲音、圖像等方面對學生視覺的沖擊比傳統方式要強烈得多,可以強化學生的記憶。總體來說,《數據結構》課程以教室傳統講授為主,適當地加入實例教學、多媒體教學等多種教學方式,可以激發學生的學習興趣,提高教學效果。
先講授如何得到結果,再規范過程
在《數據結構》的內容中,有些問題的解決過程很繁瑣,如果按照常規的講授方式,先提出問題,規范過程,一步步地推出過程,有些學生會在講解過程中不知所措,不如先將問題簡化,用語言或實例解決問題并得到答案。在學生知道如何解決問題之后,再規范過程。例如,在圖的最短路徑問題中,題目中給出了一個有向網絡(見下圖)要求出V0到其他各結點的最短路徑距離。按常規的作法設定三個數組S[6]、dist[6]、path[6],分別表示是否找到最短路徑、路徑值和路徑終點的前驅結點,通過循環記錄過程。有些學生對算法掌握不熟練,在繁瑣的過程中找不到結果。筆者嘗試使用了如下的方法:先不考慮規范的過程,讓學生先學會如何從圖中找到最短路徑,然后再對應規范過程一步步求出結果。因為學生已經掌握了求解的過程,只是將過程規范化,所以比起常規的方式更容易接受。一個問題有多種講解方式,要選擇一種適合的方式來教授學生,并且要根據學生課堂的反應對內容進行調整。

讓學生參與到講課的過程中,使被動學習變為主動學習
傳統的教學方式肯定了教師的主導作用,但學生只是被動地接受知識。其實在適當的時候可以讓學生參與到講課的內容中來,使他們參與其中,既活躍了課堂氣氛,又形象地將操作過程演示了出來,教學效果會更好。例如,在講授《數據結構》的線性表鏈式存儲結構時,筆者嘗試著找了幾個學生來演示線性表的鏈式存儲,我們假設每一個學生是一個數據元素即鏈表中的一個結點,每個學生的左手是prior指針域,右手是next指針域,如果學生間是通過右手放在下一個學生的肩膀上,這樣就形成了一個單鏈式的結構;如果同時把左手放在前一個同學的肩膀上,就形成了雙向鏈表結構。在我們形成了這樣一個結構之后,學生可以很容易地看出鏈表的結構。讓指定的學生從隊伍中離開即鏈表刪除操作;加入新的人員,即在鏈表中插入新元素。原本鏈表的插入與刪除操作是學生很容易出錯的地方,他們記不清結點連接和斷開的語句順序。但是,面對學生組成的鏈表,他們很容易了解新結點的插入過程和指定結點的刪除過程,對要求執行的插入或刪除操作得出相應的結果。這樣的教學形式既生動,又記憶深刻,比直接給出操作語句更好。通過在幾個班級的實踐,這種方式受到了學生的普遍歡迎,尤其是對程序基礎較差的學生來說,這種方式要比利用語句講解的方式更容易理解和接受。
增加練習,培養學生的實踐能力
雖然《數據結構》是一門原理性較強的課程,但是有些內容是通過算法來實現的。可以在教學過程中加入適當的上機實踐,這不僅可以加深學生對所學內容的認識,更能提高學生的編程能力。學習計算機不動手實踐是很難學會的,操作能力的培養也必須以理論知識與實踐操作的具體結合為基礎。
除了上機實踐外,在《數據結構》課程中,還要適當引入一些具體的題目,讓學生通過練習發現更多的問題,以及面對不同的問題,應采用什么樣的方法去解決。《數據結構》課程有它的獨特之處,在大部分的專接本考試中,都會考到這門課程。教師可以選擇各個學校歷年的題目讓學生多加練習。學生通過這些題目的練習,對各個學校的出題方式有了進一步的認識和了解,同時提高了學生的應試能力。在《數據結構》課程中,習題練習與上機練習起著輔助傳統教學的重要作用。
事實上,只有在《數據結構》課程中采用多種教學方式,才能更好地被學生所接受,從而提高教學效果。文章中筆者所提到的教學方式,近幾年已在一些班級進行了嘗試,收到了良好的教學效果。
參考文獻:
[1]師書恩.計算機輔助教學[M].北京:高等教育出版社,2001.
[2]嚴蔚敏.數據結構(C語言版)[M].北京:清華大學出版社,1998.
[3]謝安邦.高等教育學[M].北京:高等教育出版社,2000.
作者簡介:
趙明(1980—),女,天津人,天津現代職業技術學院教師,主要研究方向為數據結構和程序設計。