吳志芳 袁 嵩
摘要:本文針對“數據結構”課程教學中存在的問題,從如何理清學生的知識結構、提高學生的課堂效率、激發學生的學習興趣、培養學生的分析能力、強化學生的實踐能力等方面,提出了教學上的一些改進措施。
關鍵詞:數據結構;算法;學習興趣;邏輯思維能力
中圖分類號:G642 文獻標識碼:B
1引言
“數據結構”是計算機專業的一門核心課程,在計算機教學中起著承上啟下的作用,一方面它以程序設計為基礎,對學生進行較復雜程序設計的訓練,另一方面它又是后續專業課程如操作系統、數據庫等的基礎,由此可見學好它的重要性。“數據結構”課程系統介紹了幾種常用的數據結構,討論其在計算機中如何存儲,進而對數據操作的各種算法進行實現。通過這門課程的學習,學生的軟件設計和編程水平將得到提高,使學生學會分析實際問題涉及的數據特性,以便為這些數據選擇適當的邏輯結構、存儲結構,并采用適當的算法處理數據,解決實際問題。
2教學現狀
“數據結構”課程不僅內容繁多,而且其理論性和抽象性還很強,因此給教學帶來很大的難度。學生通常上課時能聽懂,能夠掌握一些基本知識,會做題,但課程學完后,對自己到底學到了些什么、學了有什么用、怎么用感到很茫然。歸納一下,教學中主要存在以下問題:
學生難以建立對課程內容的整體概念,無法將各知識點聯系起來;
理論課時減少,傳統教學方式已經不適合當前形勢;
與實際應用問題脫節,學生感到枯燥,不知學了有什么用;
學生被動理解算法,缺乏思維能力和分析問題能力的訓練;
遇到實際應用問題時,學生往往束手無策,缺乏靈活運用的意識。
3教學改進措施
為了提高教學質量,筆者針對以上的教學現狀,以學生為主體,教師為主導,從以下幾個方面進行教學改進。
3.1理清學生的知識結構
“數據結構”課程內容豐富,要求教學思路清晰、邏輯性強,幫助學生構建對數據結構整體的理解,避免學生迷失在細枝末節中。如課程介紹時首先要讓學生理解數據結構是討論非數值計算范疇問題的課程。數據結構從邏輯關系上分為四類:線性結構、樹形結構、圖狀結構和集合結構。整個教學就以此為主線展開,隨后各章將就這四類結構進行詳細討論,如:第2章線性結構,第3章棧和隊列,可看成是限定性的線性結構等;又如:第7章查找和第8章排序實際討論的就是集合結構,查找就是判定某個數據元素是否屬于查找表這個集合,而排序就是尋求集合中記錄從無序調整為有序的方法。
在每一章的課堂教學中,根據教學大綱的要求,需對教學內容去粗取精,提煉出各章的框架體系,并按照數據結構的邏輯結構、存儲結構、運算和運算的實現這四步逐層展開討論。要重點突出,簡潔明了而不求面面俱到。根據學生的實際情況,對那些學生感到困難的內容,進行有的放矢的講解。
3.2提高學生的課堂效率
傳統的板書教學固然重要,但若能與多媒體輔助教學手段相結合,將會取得事半功倍的效果。多媒體課件形象生動、圖文并茂,非常適合“數據結構”課程的教學。教學中通過幻燈片展現知識點,具有信息量大、內容豐富生動的特點,并可節省大量的板書時間,提高教學效率。教學中通過Flash 動畫演示算法的動態執行過程,可以極大地調動學生聽課的積極性,有助于學生很好地理解和掌握所學內容。比如在講解排序的時候,單純講解算法學生理解起來有些困難。如果在講授的同時配以Flash動畫來模擬排序的全過程,就會使得算法描述形象生動,促進了學生對算法的理解。
3.3激發學生的學習興趣
學生在課堂上如果只是一味被動地接受知識,很容易感到枯燥無味,教學效果也不好。其實學習知識,學生最關心的是學了有什么用,因此為了激發學生的興趣,在教學過程中要始終強調數據結構的應用性。即:在學習新知識時,先不急于講授,而是通過一個實際問題的引入,讓學生思考該怎樣解決,激起學生探究的欲望。然后將問題抽象成相應的模型,并用數據結構對它進行描述,從而自然過渡到運用新知識對問題的求解。這樣使學生認識到數據結構確實很有用,提高學習的主動性。例如在講圖的最小生成樹時,提出一個應用背景:在n個城市之間架設通訊網,由于地理條件不同,在不同城市間架設的費用不等,怎樣選擇線路能使費用達到最低。解決這樣的問題具有一定的挑戰性,同時也會激發起學生的求知欲。俗話說,“良好的開端是成功的一半”,此時趁熱打鐵引入數據結構描述:這個問題就等價于構造連通網的一個最小生成樹。即:n個城市表示為連通網中的頂點,各個城市之間可能架設的通訊線路用邊表示,且架設每一條線路的經費用每一條邊上的權值表示。所以求得的一個最小的生成樹就對應了使總的工程費用最低的線路的選擇。在解決這個問題的過程中,自然地調動學生參與的積極性,通過問題的不斷擴展以及不同算法的討論開闊學生的思維,從而激發學生學習數據結構的濃厚興趣。
3.4培養學生的分析能力
算法的描述和理解是“數據結構”課程的重點和難點,教學過程中不僅要講解算法的思路,還要教授算法設計的思維方式,以提高學生的邏輯思維能力。通常的做法是:從問題出發,先啟發學生從不同的角度尋求解決問題的最佳算法,然后與學生一起一步一步寫出程序,最后回過去重讀一遍程序,對不夠理想的地方加以改進。經過這樣由淺入深的訓練后,不但消除了學生的編程恐懼感,增強了信心,還教會了學生考慮問題的方法、培養了學生的分析能力。比如在講解對鏈表的操作時,教師可以先與學生一起分析在鏈表中插入一個元素的方法,此時教師應一邊講一邊在黑板上畫出插入的演變過程;然后與學生一起寫出程序;最后讓學生加以模仿并編寫出在鏈表中刪除一個元素的算法。同時要讓學生知道,當看不懂或寫不出算法時,可借用畫圖的方法幫助理解。又如在講授循環鏈表和雙鏈表時,可分析建立單鏈表的算法,然后在此基礎上,通過對其中幾個語句的改動,實現了單循環鏈表、雙鏈表、雙循環鏈表的建立操作。采用這種方式的教學,不僅培養了學生的思維能力,學生的編程能力也逐步提高。
3.5強化學生的實踐能力
“數據結構”是實踐性很強的一門課程,實踐的好壞直接影響教學質量。因此,在授課的同時,需要安排一定學時的上機來加強實踐。在上機題目的選擇上,要體現分析設計能力的培養。由于數據結構課程中各章數據結構之間相對獨立,因此在每章的實踐中,可以針對單一的數據結構,選擇有代表性的上機題目進行訓練;對于基礎不好的學生,還應引導他們將教材上用類C語言描述的算法用C語言實現。如:在學習第6章樹和二叉樹時,上機可選擇實現二叉樹的基本操作,如:構造二叉樹、遍歷二叉樹等。當課程學完后,還需要安排一周半的課程設計,設計一些難易適中的綜合性題目,訓練學生綜合運用知識的能力。如:可讓學生完成計算機和人對弈的問題,該問題是對樹知識的綜合運用。總之,通過一定學時的上機調試和教師的指點,將使學生掌握“數據結構”的應用和軟件開發方法,提高學生的實踐能力。
4結束語
經過多年的“數據結構”課程教學,筆者深深認識到以學生為中心,注重學生能力的培養的重要性。作為教師應與時俱進,一方面不斷提高自身專業水平,另一方面不斷探索和改進教學方法,才能不斷提高課程教學質量,造就出合格的技術人才。
參考文獻:
[1] 嚴蔚敏,吳偉民. 數據結構[M]. 北京:清華大學出版社,1996.
[2] 劉亞波,劉大有. 以實驗教學深化“數據結構”理論教學[J]. 吉林大學學報:信息科學版,2005(23).
[3] 鄧桂英.《數據結構》課程教學方法的淺談[J]. 科技信息,2007(35).