文章編號:1672-5913(2008)06-0061-02
摘要:本文針對于非計算機專業“數據結構”教學過程中存在的主要問題,闡述了如何在課堂教學激發學生的思考,發揮學生的主動性以及如何培養學生的實踐興趣,提高實踐能力。
關鍵詞:數據結構;互動式;啟發式;多樣化
中圖分類號:G642
文獻標識碼:B
1引言
非計算機專業開設的“數據結構”課和計算機專業開設的“數據結構”課相比,重要的差別之一就是授課時間和實驗時間相對較少,學生程序設計方面的基礎薄弱。為了使非計算機專業的學生在這種有限的情況下掌握“數據結構”的基本內容,采用互動式的教學方法來提高學生的積極性顯得十分重要和必要。
2教學過程中遇到的問題
2.1先行課的掌握不足
C語言程序設計是“數據結構”的前導課程之一。通常情況下學生在剛開始學習數據結構課程,對C語言中的數組、結構體、指針這三種數據類型的認識和理解不深,甚至根本不理解,這成為了學生數據結構的主要絆腳石,直接影響教學進度,使得教學時間大部分花費在基本概念上。部分學生對函數、函數的參數、函數的返回值、函數調用的理解也不夠,對遞歸及遞歸過程更是難以理解,而這些內容在數據結構課程中使用頻率很高。因此,在數據結構教學初期,盡管老師費盡唇舌,學生仍然模糊不清,致使教學效果不理想,學生甚至會喪失對該課程學習的興趣和信心。
2.2教材理論性太強
現有的“數據結構”教材無論是C語言版還是JAVA版的,都是以基于類的思想對數據類型進行描述,這樣的描述形式對象數據類型的定義簡明清晰,有利于培養學生良好的編程習慣。但在開設課程時,學生一般只學習過C語言,對于用類進行編程掌握得并不熟練,往往對教材上的描述感到很抽象,難以具體編程實現,甚至部分學生會直接將教材上類C語言的描述當成程序來理解。抽象數據類型是指一個數學模型以及定義在該模型上的一組操作,但在教學過程中,我們發現學生對于抽象數據類型的理解往往局限于前者,而忽略了后者。對于數據類型的數學模型以及數學特征較容易理解,而對于數據模型的操作則容易理解成是一個獨立的部分,出現這種現象的主要原因是面向對象知識的欠缺。
2.3缺乏上機的興趣
學生不理解抽象數據類型的定義及相應的存儲表示,難以實現算法與程序之間的轉換,更談不上將所學的數據結構中的算法應用于實際問題上,從而降低了上機興趣和學習“數據結構”的信心。
3啟發式教學的探討
3.1首先解決先行課的不足
教師可根據學生對C語言掌握的情況,有目的地講授一些數據結構所涉及的C程序語言的疑難點,如動態存儲函數使用、靜態數組、指針等知識,培養他們建立程序設計的思想體系,逐步提高學生閱讀和理解算法的能力。在教學中以學生為主體,改變“填鴨式”的做法,設計“提問—解決方法—再提問”的方式讓學生參與,用問題去激發學生思考,引導他們如何解決問題。
3.2理論教學可以采用多樣化的方式
3.2.1盡量用生活中實例來講解基本概念
由于“數據結構”理論性很強,直接從定義出發講解相關概念學生不易接受,在教學過程中,結合日常生活中的事例可大大激發學生的興趣,從而調動學生的求知欲。
例如學生對鏈表這種結構體不太理解,可以直接以女生手上帶的手鏈為例進行講解,手鏈解開是一個帶有頭結點的鏈表,帶上后是一個環鏈。在講解棧和隊列這一章時,分別舉出日常生活中的事例。如棧的例子,在刷洗盤子時,依次把每個洗凈的盤子摞到洗好的盤子上面,相當于進棧;取用盤子時,又從上面一個接一個地向下拿,相當于出棧。隊列的例子,以學生在食堂打飯為例,所排的隊就是一個隊列,剛來打飯的同學接到隊尾(即進隊),站在隊首的人打完飯后離開(即出隊),當最后一人離隊后,則整個隊列為空。
通過引用實例既形象又直觀,進而使學生更加明確結構與算法的作用,提高學生運用算法解決實際問題的能力。
3.2.2加強多媒體教學方式的使用
多媒體課件生動、形象、圖文并茂、交互性強,非常適合數據結構課程的教學。在教學中可以用幻燈片展現知識點,用Flash動畫演示算法的動態執行過程。這樣可以把學生對所學知識的理性認識和感性認識有機地結合起來。比如在講解二叉樹的遍歷和線索化的時候,可以通過幻燈片講解遍歷和線索化二叉樹的過程。由于遍歷的過程是一個遞歸的過程,許多學生開始掌握起來有些困難。如果配以Flash制作的動畫來模擬遍歷的全過程,可以取得良好的教學效果。
3.2.3創新思維的培養
可用問題去激發學生去學習,引發學生興趣、誘發學習動機。“數據結構”教學中,特別是算法設計中,可以設計許多問題。如在介紹了字典的順序檢索、二分法檢索、分塊檢索等算法后,可以引導學生分析這些檢索方法的共同特點:通過待查元素x與關鍵碼的“比較”來實現檢索,檢索的效率與比較次數相關,減少比較次數即降低平均查找長度,從而提高檢索效率。就此提出設想:能否有一個函數H(x)來計算待查元素x的存儲地址?這樣,給定待查元素x,只需計算H(x),即可查找到元素x,這是一種非常理想的檢索方法,檢索運算平均查找長度可能達到常數級。
不斷創設問題情景,將教材上的平面知識、技能點轉化成問題的形式展現在學生面前,引發學生創新的興趣,增強學生思維的內驅力。
3.3以學生為主體,培養學生實踐能力
3.3.1實時了解學生的上機興趣
在教學實踐中發現,在整個學期的實驗過程中,學生的興趣表現出如下圖所示的態勢:
初期:學生編程語言工具基礎不夠扎實,對課程理解不夠,編程能力較差,從而實驗興趣偏低。
中期:學生經過一段時間的學習和調整,對課程所要求的基礎實驗有所了解,能實現和調試一些算法,編程能力有所加強,實驗興趣得到很大提高。
后期:開設的實驗以綜合性實驗為主,實驗難度加大,學生表現出綜合應用能力較差,實驗興趣又有所下滑。

3.3.2理論與實踐相結合,激發學生的興趣
在“數據結構”課程的學習過程中,學生比較困擾的是理論不能和實踐相結合,不知道學習數據結構能做什么。所以在課程講述中,除了要求學生上機實現基本算法并完成一定數量的較大的典型的程序外,更應給學生大量的實例,提高學生解決實際問題的能力。例如:堆棧的應用——編譯器中表達式的處理、火車調度問題;隊列和堆棧的綜合應用——實現停車場管理;二叉樹和樹的應用——產品分類過程、哈夫曼樹用于通信編碼、下棋問題;圖的應用——地圖著色、旅游最短路徑問題等。這些程序的實現不僅有助于數據結構課程的學習,更主要的是通過這些程序的實現大大提高了學生編程能力和解決實際問題的實踐能力。
3.3.3注重對實驗結果的分析
實驗結果包括學生按照實驗要求開發的所有源程序、源程序的說明文件(說明上交程序所在的目錄及主程序文件名,如果需要安裝,要有安裝說明等)、實驗報告(包括算法的主要思想、主要數據結構、算法的基本實現、調試過程、結論及心得)。對算法要注釋,書寫工整、繪圖規范,正確引用術語以及實驗環節的總結。總結可以包括實驗過程的收獲、遇到的問題、解決問題的思考過程、程序調試能力的思考、對數據結構這門課程的思考、在實驗過程中對課程的認識等內容。教師可以針對學生實驗報告的情況,對實驗中出現的問題進行剖析,提高學生的實踐能力。
參考文獻
[1] 張涌逸. “數據結構”互動式教學探討[J]. 電腦知識與技術,2006,(6):218.
[2] 周云,李革. 非計算機專業“數據結構”實驗教學的探索與實踐[J]. 計算機教育,2007,(6).
[3] 嚴蔚敏,吳偉民. 數據結構[M]. 北京:清華大學出版社,2006.
[4] Sartaj Sahmi. 數據結構算法與應用C++語言描述(英文版)[M]. 北京:機械工業出版社,2002.