摘要:數據結構是計算機專業的重要課程之一,傳統的教學模式過于強調理論性,缺乏趣味性,學生理解困難,教學效果不好。針對這些現象,提出了對數據結構課程采用案例法教學的方式,以提高數據結構課程的教學效果。
關鍵詞:數據結構;案例法;教學改革;課程改革
0、引 言
數據結構作為計算機、信息等專業的核心課程,在教學體系中起著舉足輕重的作用。現階段國內數據結構課程受主流教材的影響,多以傳授知識、利用偽代碼描述數據結構及其算法為主,輔以一定的編程實踐作為主要的教學模式。傳統的教學模式中強調理論教學,實踐環節不夠,造成學生動手能力差,有的學生會考試能做題,卻看不懂實現算法的程序,更難以自己動手編程實現算法,“數據結構”在計算機軟件開發領域的真正價值無法得到體現。在這樣的教學模式下,對于當前大眾化教育背景下應用型高等工科院校的學生來說,想要學好數據結構課程,能夠根據實際問題動手設計數據結構中的算法并能付諸實踐成為—個難題。
案例教學法以其先進的教學理念、鮮活的教學方法被推廣到許多課程中,成為教學中一種不可替代的重要方法。在數據結構課程中引入案例已經引起了許多高校和教師們的重視,筆者通過多年的教學經驗也對如何利用案例驅動數據結構教學作了一定的研究。
1、案例的設計與選擇
案例選編是數據結構教學改革中的重要環節,選擇或設計好適合學生的、難易得當的、繁簡相宜的,又能包含學生已經學過的和即將學到的知識的案例,并以此作為驅動課程的教學和學習,可以提高學生的學習興趣和學習效率,達到教學目的。
筆者經過多年教學實踐,在教學過程中摸索了一系列案例,主要包括:以“一元多項式的四則運算”作為線性表結構特別是鏈表結構教學的驅動案例、以“迷宮路徑搜索”作為棧結構教學模塊的驅動案例、以“井字棋游戲”和“霍夫曼樹及霍夫曼編碼”作為樹結構教學模塊的驅動案例、以“校園導游咨詢”作為圖結構模塊的驅動案例等。
2、在數據結構課程教學中實施案例法教學
數據結構的教學要與其他課程如C++、面向對象與可視化程序設計等課程相結合,并要改變傳統的教師課堂上講解理論為主的教學模式,結合課堂討論、匯報答辯、撰寫學習報告等多種方式開展教學,而且考試形式也應改變“一考定輸贏”的傳統方式,這樣才能從根本上體現案例法教學的優勢和特點。下面以較為簡單的鏈表結構為例,闡述如何用“一元多項式四則運算”案例驅動數據結構課程的教學。
2.1鏈表結構的教學中實施案例法教學
一元多項式四則運算是清華大學嚴蔚敏教授編寫的經典教材中有關鏈表應用的一個章節,在該章節中數據結構及算法由偽代碼構成,學生很難真正理解如何利用鏈表來實現一元多項式的四則運算。筆者在教學過程中已經積累并形成了可視化的多項式四則運算程序,如圖1所示,可以利用該應用程序進行課堂、課后的教學與學習。
2.2案例法在結點的教學中的應用
“結點”作為鏈表乃至樹和圖等各類數據結構來說是一個非常重要的概念,對于初學數據結構的學生來說,大多數學生只掌握了基本數據類型的運算,“結點”概念過于抽象,往往使學生摸不著頭腦,從而影響整個數據結構課程的教學。
通過教師講解一元多項式中的單項式如何在計算機中表示,即由系數(浮點型)、指數(整型)兩種基本數據類型構成一個復雜數據類型,一個單項式就可以認為是一個多項式的一個結點,利用這樣的方式可以讓學生理解“鏈表中結點”這一比較抽象的概念,進一步可引導學生理解:若要描述和實現這樣一個非簡單類型的“結點”,則需要用到C++中的類或者結構體。
2.3案例法在鏈表基本操作教學中的應用
多個單項式“串成一串”便成為多項式,可以用“數組”來串聯這些單項式,也可以用“鏈條”來串聯這些單項式,教師可以與學生一起討論順序表和鏈表的各自的特點。這個案例主要體現在鏈表的應用方面,教師可以引導學生分組討論如何實現串聯,即鏈表的初始化操作、結點插入鏈表以及從鏈表中刪除某個結點等一系列的鏈表操作。
多項式的四則運算特別是加、減法本質上是鏈表的合并過程,而鏈表的合并過程也就是結點的插入操作。因此學生在理解鏈表的基本操作的基礎上才可以進一步學習其具體的應用。
2.4案例法在鏈表實踐教學中的應用
只有理論學習而沒有實踐,這樣的學習成效是不完整的。不同層次的學生可以利用案例進行不同程度的學習。對于理論學習有困難的學生,他們可以通過上述圖形化界面的應用程序“親眼看到”結點在鏈表中的變化,該程序是可操作的、互動式的,通過具體地輸入數據,可以幫助學生理解:—個升序的一元多項式中插入一個任意單項式仍然要保持其升序狀態,需要在鏈表適當的位置插入結點或者修改結點或者刪除結點等算法。對于能夠理解算法但是無法讀懂源程序的學生來說,可以通過學習源代碼、調試源代碼等,達到從理論到實踐的過渡;對于能夠理解源代碼的學生來說,可以讓其嘗試編寫、添加一些具體的函數,以增強動手能力。上述一元多項式四則運算應用程序即為筆者的學生所開發完成的。
對于這樣一個案例驅動的教學方式,僅有案例是不夠的,需要對傳統的教學模式和考試模式、課程組織方式等全方位立體化的改革。
2.5案例法在考試方式改革中的應用
我們借鑒國外Assignment形式、以小組為單位進行期末大作業、撰寫課程報告等多種方式相結合的考核。期末作業的內容應與教學過程中的案例相結合,讓學生們模仿完成類似的、難易得當的應用程序的開發,例如可以選擇讓學生完成四皇后問題(樹的應用)、火車車廂重排問題(棧的應用)等。為避免學生從網上下載源代碼等非誠信的方式來完成期末作業,還要求他們撰寫課程報告并進行匯報答辯。
由于學生個體的差異性,在組成小組時應保證小組成員的多樣化,即有的小組成員擅長整體分析,有的擅長程序辨析,有的擅長總結報告等等,學生們通過分工合作來完成期末作業,這樣可以增強學生們的團隊合作精神,也可以發揮各自的優點和特長。
利用這種開放式的考試方式,可以改變以往學生只有在期末前夕用功學習而平時玩樂就可以完成學業的現象,改變學生重理論輕實踐的思想,增強學習主動性,提高動手能力和表達能力等綜合素養。
3、結束語
案例教學能使理論與實踐更好地結合起來,通過對一個案例的分析、討論和實踐,可以改變以往只是掌握一般性理論而不在實際工作中應用的狀況。以案例驅動整個數據課程的教學模式、考試模式等立體化的教學改革,對于培養學生具備扎實的理論基礎、實踐操作能力、綜合表達能力等綜合素養,有著十分重要的意義。
參考文獻:
[1]殷人昆,鄧伎輝,清華大學數據結構精品課程建設[J],計算機教育,2006,5:20-22
[2]嚴蔚敏,吳偉民編著數據結構(C語言版)[M]清華大學出版社,1997
[3]李克暗《數據結構》案例教學初探[J],長江大學學報(自科版),2004,12:135-136
[4]徐勇,朱張斌,胡艨,《數據結構》輔助教學軟件設計與實現[J],長春師范學院學報(自科版),20lO,2:53-56
[5]陳曉霞,圖形化用戶界面的一元多項或運算,計算機時代,2008,11:70-71
[6]宗瑜,金萍,案例教學法語數據結構教學改革[J],皖西學院學報,2009,4:30-32