摘要:《數據結構》是計算機及其相關專業的專業基礎課,同時具有很強的理論與實踐性。本文針對該課程特點,結合自己的教學實踐,提出幾點該課程教學中的體會和觀點。
關鍵詞:數據結構;算法;教學方法;教學手段;實踐教學
中圖分類號:G642.4 文獻標識碼:A 文章編號:1009-3044(2008)36-2938-01
The Exloration on Data Structure Teaching
ZHOU Si-lin,YIN Xu-dong
(Changshu Institute of Technology,Changshu 215500,China)
Abstract: \"Data Structure\" is a professional and basis course of computer specialty,and moreover,it is highly theoretical and practical.This paper combined with my own teaching practice,and elaborated some my experience and perspective in teaching about the course features.
Key words: Data Structure;algorithm;teaching method;teaching means;teach in Pratice
1 引言
《數據結構》在計算機科學中是一門主干課、專業基礎課。主要介紹用計算機解決一系列問題、特別是非數值信息處理問題時所用的各種組織數據的方法、存儲數據結構的方法以及在各種結構上執行操作的算法。本課程還是《編譯原理》、《操作系統》、《數據庫原理》等其他課程的重要基礎。
本課程的目的是使學生掌握各種數據結構的特點、存儲表示、運算方法以及在計算機科學中最基本的應用。培養、訓練學生選用合適的數據結構、設計質量高的算法、編寫風格好的程序等綜合能力,并為后續課程的學習打下良好的理論基礎和實踐基礎。因此,本文從教學方法、教學手段、實踐教學等各個環節著手,不斷改進以提高教學效果。
2 改進教學方法
《數據結構》課程中有許多抽象的概念和算法,要使學生掌握這些知識并取得良好的教學效果,就要求任課教師運用高效易懂的教學方法提高教學質量。
1) 正確認識本課程
《數據結構》這門課程比較抽象,容易被學生認為這是一門純粹的理論課程,枯燥難學,沒有興趣將這門課程學好,甚而有部分學生認為不學《數據結構》照樣能編程。所以從第一堂課開始,就要引導他們正確認識這門課程的性質和作用。通過編程中的實例來告訴他們這門課程的作用,如以前完成的C語言課程設計中鏈表的使用,編譯程序中堆棧的使用,操作系統中隊列的應用,文字處理軟件中串的模式匹配的應用等;同時這門課程在本專業的各類考試中都是必考內容,如考研、各級軟考、求職筆試等。通過這些學生能夠感受到的實例,使學生正確認識這門課程性質,同時使學生產生對這門課程的興趣,充分調動他們的求知欲,提高他們的學習積極性和主動性。
2) 問題導入教學法
本課程的基本概念很多,如果每堂課一開始就介紹大量的基本概念,教學效果不明顯。因此,對于每一個內容,先提出問題,自始至終圍繞問題展開教學活動,引導學生不斷的發現問題、提出問題、解決問題,培養學生學習的主動性、創新性。比如在表達式轉換、求值的問題講解中,不是每碰到一個運算符就能馬上運算,提出用什么存儲結構來保存運算符的問題,再分析需要保存的數據具有的特性,然后再解決需要利用具有后進先出的棧來保存掃描過程中碰到的運算符。再如圖的最短路徑問題中,可以考慮提出問題,需要去杭州、普陀山、上海、蘇州等幾個城市旅游,如何選擇路線最合算?圍繞這個問題開始講解圖的最短路徑問題,讓學生有興趣且比較容易接受抽象的概念和算法。
3) 由易入難,循序漸進
本課程中各類算法非常多,要引導學生依次靈活掌握各類算法。例如在講解刪除順序表中某個數據元素的基礎上,再提出問題:刪除某順序表中所有值等于key的元素。首先根據之前的解決思路,逐個進行掃描刪除,算法的時間復雜度為O(n2);然后再進一步分析該問題,在前面的移動數據元素的過程中,移動實際上可以一步到位,即對所有的不等于key的數據元素,可以一次將其移動到最后所在的位置,這樣算法的時間復雜度就提高為O(n)。再如在串的模式匹配中,共有五次提到模式匹配的概念,第一個是利用五個最基本的操作實現Index( )操作,第二次是模式匹配BF算法,第三次是模式匹配KMP算法,第四次是next( )的求解,第五次是改進的nextval( ),依次在前問題的解決方案上提出新的問題并進行解決,得到新的解決方案,循序漸進的講解各個算法。
4) 因材施教,層次分明一般理論課都采用大班上課,可能每個學生的基礎不同、理解和吸收能力也不同,如果所有內容都在同一層次和高度,很可能造成“有的同學吃不了,有的同學吃不飽”的局面,因此課程內容的安排等方面都要分不同的層次以適合所有同學。授課的內容分基礎部分和提高部分,對于基礎部分,強調每個同學都必須掌握,對于有能力的同學,爭取掌握提高部分,對于課后作業,也分為基礎題和附加題,附加題增加一定的難度和趣味性,讓大家主動的去完成。
3 提高教學手段
1) 教學手段多樣化,生動教學過程
教學過程中合理利用教學手段,不但能提高效率,而且能生動課堂。通過制作動畫在課堂上演示,比如:線性表中數據元素的插入和刪除過程,棧和隊列的應用,二叉排序樹,平衡二叉樹,各類排序等過程中數據元素的變化過程,通過動畫演示生動易理解,而且節省時間提高效率。當然有的相對復雜的過程引入必要的道具也是有所必要的,如串的模式匹配KMP算法相關部分,非常的抽象,學生不好理解,可以拿出一條一條的串作為移動對象演示匹配過程,感覺比動畫演示更加的貼切。所以課堂中不用拘泥于某一固定的手段,應該不斷的找出更利于學生掌握的手段應用。
2) 利用網路平臺,擴大課堂容量
充分利用教學網站,提供更多的信息支持教學。比如在教學主頁上放上課程材料,如課件、作業、實踐等相關內容。另外可以選擇一些經典的參考書籍,典型的習題放上面,供同學課外進行練習和參考。同時利用網絡平臺提供多種交流方式與學生交流,做到知己知彼教學相長。
4 實踐與理論并進
計算機相關專業學生的最終目標是要能設計實現出好的軟件,因此,實踐技能的提高才是教學的最終目的。實踐課堂是理論課堂的延伸,是靈活運用理論的一個重要環節,起到讓學生真正掌握和鞏固所學知識的作用,因此本課程的實驗教學也越來越得到重視。
精心選擇實踐內容,著重于基礎知識知識點的應用,針對不同層次的學生,可以給予一定的參考資料或代碼,能讓所有的學生都能動手起來,不會有學生覺得無從下手。如對于線性表這一部分:順序表、鏈表的存儲實現、插入刪除查找等基本操作的實現。另外可以在實驗中給出提高難度的附加部分,激發掌握好的同學的潛能,提升興趣,如單向循環鏈表的Joseph問題,雙向循環鏈表的實現與基本操作等,使不同層次的學生都能理解并運用自己層次的內容。
5 結束語
《數據結構》是計算機專業的核心課程,同時也是程序設計的基礎,因此要上好這門課程,必須分析教學對象,從教學方法、教學手段、實踐教學等各個教學方面進行研究,激發學生的學習興趣,讓他們愿意學、努力學,并且能學好,以真正提高該課程的教學效果,達到教學目的。
參考文獻:
[1] 嚴蔚敏,吳偉民.數據結構(C語言版)[M].北京:清華大學出版社,2001.
[2] 楊永斌.“數據結構”教學策略探討[J].合肥:合肥工業大學學報(社會科學版),2008(22).
[3] SARTAJ SAHNI Data Structures,Algorithms,and Applications in C++[M].Silicon Press.2005.8.