楊 利, 閔 輝, 雷 虎,韋友春
(1.池州學院 數學與計算機科學系,安徽 池州 247000;2.江西藍天學院京東校區 a.公教部;b.計算機系,江西 南昌 330029)
《數據結構》課程教學改革探析
楊 利1, 閔 輝2a, 雷 虎2b,韋友春2b
(1.池州學院 數學與計算機科學系,安徽 池州 247000;2.江西藍天學院京東校區 a.公教部;b.計算機系,江西 南昌 330029)
數據結構是計算機專業一門重要的專業基礎課。文章從提高教學效果入手,著重探討了該課程教學中的一些改革措施,將有助于更好地以素質教育為導向,鞏固學生的專業理論基礎,提高學生的實踐動手能力。
數據結構;教學效果;教學改革;教學改革措施
《數據結構》是計算機科學與技術、軟件技術和網絡工程等專業的專業基礎必修課,是計算機學科的核心課程。通過這門課程的學習,可以為后續課程打下知識基礎。因此,數據結構課程在計算機專業課程中具有舉足輕重的作用。在實際的教學過程中發現:該門課程對于大多數學生來說是一門學習較為困難的課程。因此,為了提高該課程的教學效果,分析目前該課程教學中存在的問題并拿出一些實際有效的解決方法是十分必要的。
《數據結構》課程的教學活動一般包括理論和實踐兩個部分。理論教學內容主要系統地介紹了程序設計中常用的幾種數據結構、存儲結構和算法的設計與實現,另外還介紹了兩種常用的運算:查找、排序,以及各種算法的性能比較。實踐教學部分主要包括:使用基本的數據結構進行初步的算法設計和分析;軟件工程文檔基本寫作能力的鍛煉和IDE編程平臺的使用等。
從課程教學目的來說,實踐編程能力是主要的教學目標,而算法編程能力又取決于學生對先行課《C語言程序設計》的掌握程度。從教學中學生上機實踐的效果來看,普遍都不是很理想。
一方面,由于學生入學的基本文化素質參差不齊,有些學生基礎較弱,對于算法的理解和運用感覺很困難。學生的教學問卷調查普遍反映:上課的內容不易理解,容易忘記;上機實踐卻又無從下手,代碼抄襲問題很嚴重。因此教學進度的統一展開難度很大。
另一方面,先行課的影響。比如,《C語言程序設計》課程。根據實際教學進度統計,大多數教學進度內容只講到了數組,指針沒有深入展開,C語言的語法學習未全面講授。
最后,是由于數據結構教學內容面廣,實踐動手能力要求高的原因。該課程中包括了10個主要的實踐內容,由于完成它們需要按照嚴格的軟件工程文檔進行書寫,而且代碼量也達到了上百行,再加上題目也一致,所以經常發生部分學生作業抄襲的現象。
因此,在課程教學過程中,發現有一部分同學已經感覺到課程學習“難入門”、“難深入”、“難實踐”。
《數據結構》課程是一門十分強調實踐能力培養的課程,要求學生將算法和現實問題應用結合起來,采用規范的軟件工程思想來指導算法的理論和上機實踐,并能夠書寫基本的軟件工程文檔。
引導學生自主學習、獨立思考、提高動手實踐的能力是十分重要的。在課堂教學上,不能完全像實驗報告冊一樣進行“教條式”教學,課程理論講授特別是算法的講授應結合具體的實例來講解,例如,給學生講解“搜索引擎”中的數據結構技術(主要涉及到圖搜索、排序和索引技術)的時候,可以講解當前網絡和數據庫的研究熱點—XML(擴展標記語言),不斷引導學生增強自覺獨立思考和動手的意識,提高他們的認識:課程學習最直接的目的是運用所學知識去解決問題,而不是概念的背誦。鼓勵學生參加社會開放的軟件設計大賽也是一種比較好的辦法。另外在教學中要把握一定的原則,不斷地總結教學經驗和方法,激發學生的學習興趣,同時注意教學進度前后銜接的問題。
綜上,《數據結構》課程教學重心在于算法的教學上,根據學生的掌握程度和提高教學效果的基礎上,在教學過程中特別強調要保持適度的張力:一是教師的教學進度,包括前后的進度和知識的連貫性;二是學生對算法的接受程度,時刻注意學生掌握的量和度,并不斷調整教學手段和方式。
目前,數據結構中算法描述主要是類C語言,將C語言作為數據結構的先行課是非常必要的。長期教學實踐發現,采用循序漸進和圖示的方法,有助于加深內容理解和提高教學效果。比如在教學中強調指針的“演變歷史。同時在指針語法講解的時候,采用簡單的圖示教學,更形象且易于理解。例如:指針是一種數據類型,在講解時,可以先引導學生將其同基本數據類型的認識統一起來,只是它所處理的數據不同,是地址相關的信息。在基本概念理清后,再確定幾條基本的學習定式和采用圖示輔助理解:
(1)指針包含了兩層含義:存儲地址和指向某個數據對象,指向的位置依賴于基類型和存儲地址。例如整型指針變量p,存放了整型變量a的地址,p=&a;圖示為:

圖1 指針圖示1

圖2 指針圖示2
(2)假設基類型相同的指針變量p和q,若有p=q;則從邏輯方面的角度來說,p和q具有相同的指向,有助于理解鏈式插入和刪除操作中指針的運用,圖示為:
(3)指針運算符、指針和數組的聯系
指針相關的運算符有&(取地址)和(*間接指向)。指針和數組的聯系中,要特別強調:數組名是一種特殊的指針,是指針常量,數組名里面存放的地址不能被改變,即不能作為左值。
(4)指針和字符串
在C語言中,字符串的處理是一個比較重要的內容,其處理手段的豐富性不如面向對象語言。在運用過程中,往往涉及到指針。
(5)指針和函數
由于目前數據結構教材中普遍采用類C語言描述數據結構,所以函數作為模塊化設計的主體自然不可缺少,在最新的C語言語法標準中,修飾符const也被吸收進來,增加了指針的表現力。遵循由淺入深的講解原則,有必要理清楚整個語法脈絡,如圖3所示:
需要注意的是,除了注重C語言語法學習外,在教學內容上普遍容易進入一個教學誤區:即以語法教學為主,算法教學次之。這樣一來,課程的教學方向和重點就發生了偏移,脫離了以實踐能力為培養目標的教學要求。
因此,通過調整教學計劃,將《數據結構》課程和先行課作為一個有機整體,使得相關課程教學計劃和進度進行針對性的關聯統一,突出語法為基礎,算法為重心。具體的做法有:例如,由《數據結構》主講教師承擔先行課程《C語言程序設計》的教學,課程之間可以更好的銜接,課程教學效果也較好,學生對于后續課程也能有一個初步的了解和準備。在教學進度的調整中,需要把握教學進度和學生接受程度的關系,特別強調以學生為中心,對于教學過程中特別難學習、難理解的知識點,應增加相應的學時,及時修正相應的教學進度。根據需要可以在數據結構的緒論章節單獨增設算法中數學基礎知識的講解,例如,有關圖論、組合論等,特別是遞歸、遞推、歸納等分析方法。
根據學習認知規律,借鑒計算機科學、心理學和認知學等學科成果,將本課程的內容分成概述、基本數據結構、復雜數據結構、兩種常用運算四個模塊,同時強調數據結構的學習不是知識的記憶,而是算法的設計和實踐。其中尤其是基本數據結構的抽象數據類型概念的理解,在教學中可以和面向對象教學中類的概念進行對比教學。其中理論教學模塊和實踐教學內容描述如下表1、表2所示:

表1 知識模塊順序及對應的學時

表2 實踐教學內容
在實踐教學中,鼓勵教師采用啟發式教學模式,充分調動學生的積極性和主動性,嚴格要求學生,注重考勤和過程性考核,讓每一個學生真正落實動手實踐;同時注意教學重點和難點,采用算法演示輔助軟件,增強教學過程的生動性,提高學生的自主自學能力和算法程序設計能力;利用課余時間進行教學答疑輔導,增強師生之間交流和理解,鼓勵學生增強學習的信心。
另外在實踐教學中可以對教學內容和方式進行改進。長時間實踐教學發現,一開始讓學生接觸圖文并茂的東西和感受程序設計和開發的樂趣對其學習積極性的調動是很有益處的。課程上機實踐采用的IDE環境是Visual C++6.0,雖然與實際開發聯系緊密,但運用到圖形界面還是需要專門的MFC知識,由于學習曲線難度大,所以可以考慮將入門難度低的C++Builder6.0作為首選。圖形化界面的開發對于學生來說封裝性做得很好,一方面,學生確實能排除其他不必要的因素快速地學習語法,另一方面,程序的調試結果為圖形化界面,更加激發了學習熱情。
通過多個學期的課程教學效果來看,以上教學改革建議和措施在解決學生學習的 “三難”問題,鞏固學生的專業理論基礎,提高學生的實踐動手能力和激發學生的學習興趣等方面都起到了很好的作用,課程教學效果有了明顯的提高。
[1]嚴蔚敏.數據結構:C語言版[M].北京:清華大學出版社,2004.
[2]徐孝凱.數據結構實用教程[M].2版.北京:清華大學出版社,2006.
[3]徐孝凱.數據結構輔導與提高實用教程[M].2版.北京:清華大學出版社,2003.
[4]謝楚屏.數據結構[M].北京:人民郵電出版社,2001.
[5]李春葆.數據結構(C語言篇)習題與題解[M].修訂版.北京:清華大學出版社,2002.
G642
A
1674-1102(2011)03-0144-03
2011-03-31
楊利(1980-),男,湖北武漢人,池州學院數學與計算機科學系教師,實驗師,在讀碩士,研究方向為程序設計、網絡編程等;閔輝(1983-),男,江西南昌人,江西藍天學院京東校區公教部講師,在讀碩士,研究方向為程序設計。
[責任編輯:曹懷火]