蘇艷
【摘 要】《數(shù)據(jù)結構》是軟件工程專業(yè)的一門核心課程,也是培養(yǎng)學生程序設計能力的一門專業(yè)課。但這門課程比較抽象,學起來比較困難,因此本文從教學的角度出發(fā),從教學內容、教學方法等方面進行了一些探討。
【關鍵詞】數(shù)據(jù)結構;教學內容;教學方法
數(shù)據(jù)結構課程是軟件工程專業(yè)的一門專業(yè)基礎課,其課程內容與軟件工程專業(yè)的其他課程有著密切的關系,為進一步學習操作系統(tǒng)、編譯原理、數(shù)據(jù)庫等專業(yè)課奠定堅實的基礎。該課程的特點是知識點多,概念之間聯(lián)系緊密,算法抽象難懂,要求學生具有較強的邏輯思維能力,給學生學習帶來一定困難,使用傳統(tǒng)的教學模式,教學效果很不理想。本人從自己的教學體會出發(fā),結合我校具體情況,對《數(shù)據(jù)結構》這門課程的教學方法進行了一些探討。
一、學生學習情況分析
講課不是教師的個人秀,而是讓學生學到知識。任何一門課程,不僅要將知識傳授給學生,還應該提高學生的各種能力。C語言程序設計是數(shù)據(jù)結構的基礎課程,學生對它的掌握程度,關系到《數(shù)據(jù)結構》課程的教學效果。因此,上課之前,需要充分了解學生對C語言的掌握程度。對于大多數(shù)學生來說,對C語言的運用能力不是很強,如果直接對學生講算法和程序,學生會感覺很吃力,跟不上教師的進度?!稊?shù)據(jù)結構》課程主要運用C語言中的數(shù)組、函數(shù)、指針、結構體等知識點來分析問題、解決問題,因此,在講授該課程之初,可以利用兩個課時,對這些知識點進行復習。只有把這些知識點理解透徹了,才能進一步的學好《數(shù)據(jù)結構》課程。
二、分析教學任務與教學目的
數(shù)據(jù)結構課程的教學任務是讓學生掌握一些最常用的數(shù)據(jù)結構,闡明數(shù)據(jù)結構內在的邏輯關系,討論其在計算機中的存儲表示,并結合各種典型應用說明其在進行各種運算(操作)時的動態(tài)性質及實際的執(zhí)行算法。通過對不同存儲結構和相應算法的對比以及上機編程練習,增強根據(jù)求解問題的性質選擇合理的數(shù)據(jù)結構。
數(shù)據(jù)結構課程是一門實踐性較強的專業(yè)基礎課程,教學目的就是培養(yǎng)學生針對實際問題在數(shù)據(jù)結構的選擇和應用、算法的設計及其實現(xiàn)以及程序設計方法等方面的基本技能。
三、歸納教學內容
數(shù)據(jù)結構課程的一個顯著特點就是概念多。學生之所以感覺老師講的內容都聽懂了可就是不會編寫算法,正是因為他們沒有把握住這門課程的主線,沒有把概念理出層次,而僅僅是孤立的認知,所以不懂得靈活的應用。
因此,理清主線、對于基本概念的正確理解是合理選擇算法的前提。在此基礎上,明確數(shù)據(jù)結構是指數(shù)據(jù)之間的關系,它包括數(shù)據(jù)之間的邏輯結構、數(shù)據(jù)在計算機中的存儲結構和數(shù)據(jù)的基本運算等3個方面。數(shù)據(jù)的邏輯結構是指數(shù)據(jù)之間的邏輯關系,分為4種結構:集合、線性結構、樹形結構和圖形結構。數(shù)據(jù)的存儲結構指數(shù)據(jù)在計算機中的存儲形式,包括:順序存儲結構和鏈式存儲結構。數(shù)據(jù)的基本運算:定位、插入、刪除、更新。然后,討論兩種實際操作:查找和排序。最后,為了構造好的數(shù)據(jù)結構及實現(xiàn),還需要考慮數(shù)據(jù)結構及算法實現(xiàn)的性能,即時間復雜度和空間復雜度。
講解每一種數(shù)據(jù)結構時均貫穿這一主線,這樣既保持了課程的邏輯性,又對課堂教學起到強化作用,加深理解和記憶。例如,講解第三章的隊列結構時,可以按照如下主線進行:隊列是限定僅在表尾進行插入,在表頭進行刪除操作的線性表,又稱為先進先出線性表;隊列的邏輯結構是線性結構;隊列的存儲結構可以是順序存儲結構(稱為順序隊列)或鏈式存儲結構(稱為鏈隊列);隊列的基本運算為入隊(插入)、出隊(刪除)等;基于順序隊列和鏈隊列的各種算法實現(xiàn)性能(時間復雜度)的比較、各自適用的范圍等;隊列結構可以應用于解決叫號系統(tǒng)等實際問題。
四、教學方法的改進
現(xiàn)代的教育模式應該由“授之以魚”轉換為“授之以漁”,使學生不僅知其然,還要知其所以然。因此在教學中要著重體現(xiàn)啟發(fā)式教學,除了詳盡的講解知識的內涵,還要將教學意圖融入其中,在課堂教學中既能吸引學生的注意力,又能充分表達問題的實質。通過提出問題、分析問題、解決問題的過程,激發(fā)學生的學習興趣,加深對知識的理解程度。例如講解隊列的順序存儲結構時,通過對順序隊列的特點的講解,得出順序隊列存在假溢出的現(xiàn)象,由此提出問題:如何解決假溢出?進而對其進行分析,給出解決方案:將順序隊列當做首尾相連的表處理,從而引出循環(huán)隊列。
在算法設計的講授過程中,始終以問題為研究對象,按照上述問題求解的過程,找到每個關鍵問題的解決方法后,不要急于給出算法的程序代碼,不管是什么語言,一旦將程序給出,就完全禁錮了學生的想象空間,學生只是一味的去理解程序的語句、過程和函數(shù)。因此在課堂教學中,凡講解算法時,應采用“算法的求解思路”→“偽代碼描述”→“C語言描述”的三級模式描述算法,這樣不僅解決了由于學生語言不足而影響算法掌握的難題,同時也給學生留下足夠的發(fā)揮空間,培養(yǎng)了良好的解決實際問題習慣。
例如,講解“在順序表L中第i個位置之前插入新的元素x”算法時。首先利用自然語言描述算法思路如下:
①判斷順序表否滿;
②定位參數(shù)i是否合法;
③最后一個元素~第i號元素依次后移一位;
④將元素x放入第i號位置;
⑤表長加1。
然后再將各步驟轉換成C語言描述具體算法。
教師在授課時,可以使用案例式教學,適當介紹與課程知識的應用性相關的案例以引起學生的學習興趣。例如,在講解隊列的入隊、出隊算法時,我們以去銀行的ATM機取款為案例,引導學生給出入隊、出隊的算法思路,然后通過課件動態(tài)演示入隊、出隊的過程。通過案例引導學生,使學生更深刻、更快地理解算法,從而激發(fā)學生的學習興趣,增強學生的信心。
五、加強實驗教學
《數(shù)據(jù)結構》這門課程既要培養(yǎng)學生軟件設計方面的理論水平,也要培養(yǎng)學生基本的上機動手能力。從本專業(yè)學生實際情況出發(fā),總結多年教學經驗,撰寫了《數(shù)據(jù)結構實驗指導書》。指導書內容詳細,極大方便了學生學習,鞏固了課堂教學效果。在實驗選題上,考慮到學生的個體差異,將實驗設置成不同的類型:必做和選做實驗,前者目的在于幫助學生掌握基礎知識,例如:基于線性表、棧和隊列、串、二叉樹等的操作以及查找、排序的實現(xiàn)等等,題目類型為驗證性;后者的題目類型為設計性,則在于培養(yǎng)和鼓勵學生的學習興趣、擴大知識面以及培養(yǎng)學生的應用能力和創(chuàng)新意識,例如:有序順序表的操作等。
總之,每位教師要講好任何一門課程,都要了解課程、了解學生,準確的定位課程及教學目標,合理的安排教學內容,采用合適的教學方法,才能收到良好的教學效果。
【參考文獻】
[1]朱站立.數(shù)據(jù)結構——使用C語言[M].電子工業(yè)出版社,2014.
[2]嚴蔚敏.數(shù)據(jù)結構[M].清華大學出版社,2007.
[3]王紅梅等.數(shù)據(jù)結構(C++版)[M].清華大學出版社,2011.
[4]余麗娟.數(shù)據(jù)結構課程與學生邏輯思維能力的培養(yǎng)[J].職業(yè)教育研究,2008(2):140-141.