孫歧峰
摘要:本文在教學實踐的基礎上,闡述了當前在“數據結構”教學過程遇到的主要問題,從綜合運用多種教學模式和手段、強調基礎知識的理解、完善教學評價制度、加強實踐教學環節等方面提出了改革措施,并在課程教學中實踐,取得了良好的教學效果。
關鍵詞:數據結構;方法;實踐;教學評價
中圖分類號:G642 文獻標識碼:B
“數據結構”是計算機科學與技術專業重要的專業基礎課,在整個專業課程體系中處于承上啟下的核心地位。它一方面擴展和深化了“離散數學”、“程序設計語言”等課程學到的基本技術和方法,另一方面為進一步學習“操作系統”、“編譯原理”等專業課奠定堅實的理論與實踐基礎,更是今后進行高級程序設計、算法設計、軟件工程的基礎。因此,各高校都非常重視“數據結構”課程的教學工作,這也是計算機教育改革的重點和熱點。
筆者一直從事“數據結構”課程的教學實踐,從青年教師的角度出發對該課程教學中出現的問題進行了反思,并提出自己的看法和解決思路,希望與同行共同交流。
1教學中遇到的問題
計算機專業的學生今后大多將從事與計算機應用與軟件開發相關工作,因此迫切希望能學好此課程。但是在實際教與學的過程中,有時教學效果并不理想,教師感覺講授比較吃力,許多學生感覺課程抽象、枯燥,入門困難。在幾年的“數據結構”課程教學和實踐過程中,我們發現主要存在以下一些問題。
(1) 課程的性質決定學習難度大
“數據結構”課程強調問題的分析和抽象表達,把現實中遇到的問題抽象出其邏輯模型(包括數據及它們之間的關系、實施的操作等,即ADT),再選擇適當存儲結構(存儲數據及關系),設計出各個操作的算法從而在計算機上解決問題。它是一門理論與實踐相結合的課程。由于缺乏實際應用經驗,學生很難將樹、圖等抽象概念和具體問題相結合起來。
(2) 程序設計基礎不扎實
C/C++語言程序設計語言是學習“數據結構”的重要基礎。在C/C++語言課程的教學中,由于學生的接受能力和學時的限制,致使C/C++語言中的函數、指針和結構體等重要知識點難以完全理解和融會貫通。另外,大多教師在教學過程中重點強調程序設計語言的掌握,忽視了程序調試技能培養。然而,這些難點和程序調試技術在數據結構課程實踐環節中恰好是使用頻率最高的內容,結果導致學生在將抽象的理論轉化為具體實踐的過程中遇到重重障礙。
(3) 學生學習興趣較高,主動性不夠
前期課程介紹強調充分,學生大多明白本課程的重要性,因此學生的學習興趣較高,但長期以來的學習方式和教學模式讓學生在學習過程中缺乏獨立思考的主動性,隨著課程的深入,學生容易對課程學習的意義產生懷疑,失去學習的興趣和主動性。如何在整個教學過程中保持學生的學習興趣也是一個決定教學效果的關鍵因素。
2教學中采取的措施
針對“數據結構”教學過程中存在的問題,我們一方面查閱前人文獻和教改成果,一方面在教學中實踐摸索,從教學方法、調整學時分配、完善教學評價制度、加強實踐教學環節等幾個方面入手提出了改革措施,并在課程教學實踐中取得了很好的教學效果。
2.1突出課程主線、強調基礎知識
“數據結構”課程整體內容連貫,脈絡清晰,系統性、層次性強。在每個章節都有明確的主題和線索,就是每種數據結構的抽象數據類型(ADT),分為定義(抽象)和實現(具體),即“數據結構”的數學模型和定義在該模型上的一組操作及其實現。這也是貫穿整個教學環節的一條主線。
在具體教學過程中,我們當重視概念的建立和基礎知識的掌握。例如,第二章線性表是學習的第一種數據結構,按照線性表ADT定義(包括數據結構定義和實施的操作)、ADT的虛擬實現(數據結構的虛擬實現即存儲結構、操作的虛擬實現即設計算法)的層次學習。這是第一次把前面學習的抽象概念進行應用,如何定義ADT,如何去實現ADT等都由抽象到了具體,后面其他數據結構都會反復用到,因此第二章線性表是整個課程學習的基礎和關鍵。講授過程中,我們應當適當放慢速度,并在此過程適當回顧C/C++中的基本知識,必要時寫出程序設計的詳細過程和代碼,以此來使抽象的概念轉化為具體的程序實現。再如,第三章棧的應用遞歸程序設計就是樹和圖部分算法設計的基礎,對用遞歸方法解決問題的方法、遞歸的執行過程應該深入地學習和理解。
2.2綜合運用實例化和啟發式教學
“數據結構”課程中難點較多,許多算法設計巧妙,邏輯性強。針對這一特點,我們在不同的教學階段采取了不同的教學模式和手段。實踐證明,通過精心設計的實例可以加深學生對算法的認識和理解,就是對課程中的重點、難點內容選配簡單有效的例題、運用恰當的比喻,把抽象的內容具體化、形象化,幫助學生理解掌握這些內容,并適當加以引伸,引導并激發學生作進一步的思考和探索。例如在講解樹數據結構時把樹和生活中的家族譜聯系起來進行比喻說明,學生不僅聽起來較有興趣,而且更容易理解。
“啟發式教學法”是指教師在教學中把所講解的內容與學生的思考有機地結合起來,激發調動學生的積極性和主動性,讓學生更好地掌握基本知識和基本技能,從而達到融會貫通地掌握知識和技能,培養學生獨立思考能力和創新意識。“數據結構”課程有許多和現實生活規律相通的地方,例如:棧、隊列就和生活中停車、排隊買飯具有很多相似的規律。教學過程中我們以學生為中心,精心設計問題情境,引起學生的好奇,通過引導、啟發、訓練學生的思維,取得了較好的教學效果。
2.3重視實踐在教學中的作用
學習“數據結構”的最終目的是為了提高應用計算機解決問題的能力,培養并提高學生的實踐能力是其教學重點之一。在教學實踐中,學生普遍反映課堂上能夠理解講授的知識點,但只要一動手實踐就糊涂。學生在實踐環節上的失敗,反過來又會影響其對理論知識的掌握,打擊學習的興趣和主動性。因此,我們在學生掌握基本理論的基礎上,要求和鼓勵學生進行一些實踐工作,重視實踐在教學中的作用。
“數據結構”課程的實踐方式主要有三種:一是做習題,二是上機實踐,三是課程設計。在課程開始初期,應當適當布置一些習題,主要是幫助學生掌握基本概念和數據結構方法;在進入基本數據結構學習后,讓學生通過上機實驗來驗證數據結構各種存儲結構與算法的具體實現;基本數據結構學習結束后為了進一步提高學生對課程內容的理解和動手實踐能力,針對性地進行課程設計,選題靈活多樣、趣味性強(在課后或者暑期完成)。對學生的上機實踐應當嚴格要求,尤其是要加強上機指導和監督。上機前要求學生做好充分的準備,上機結束后要求學生寫出問題分析,算法的時間復雜度分析,以及經驗體會。
2.4課程考核的改革
課程考核是教學過程中的重要環節,是督促學生加強學習和了解教學效果的重要手段。作為核心基礎課,“數據結構”強調數據關系的抽象,課程本身實踐性很強。通過“數據結構”課程的實踐,不僅可以提升學生程序設計的能力,更重要的是提高他們對問題分析和數據抽象的能力。因此,考核方案分四個部分:
(1) 平時作業,占10%,主要督促學生注意平時學習和及時復習鞏固;
(2) 實驗和報告,占20%,目的是加強學生實踐動手能力;
(3) 期中考試,占 20%,鞏固學生的階段學習成果;
(4) 期末考試,占50%,主要對課程內容的總結和評測。
可以看出,方案制定的主導思想突出了階段考核和實踐環節考核的重要性。考核方案在一定程度上制約了部分學習意愿較差的學生,使他們在教學過程中始終保持較高的積極性。
“數據結構”學習中上機是非常重要的一個環節,是將抽象的算法轉化具體問題,是理解課程內容的關鍵,但程序設計不是該課程的重點。傳統上我們通常要求學生完成規定的實驗項目然后才能申請驗收和評分,但是在實踐中發現,有些實驗項目對部分學生而言比較難,只能完成部分內容。為了保護和鼓勵學生學習的積極性,突出課程內容,可以對較好完成部分實驗任務的學生的成果也進行驗收,給予適當的肯定,并分析指出其設計中存在的問題,最后統一給出標準程序。
2.5充分利用計算機輔助教學
教學手段的多樣化已成為教學改革的一個大趨勢,但不是一味的否定“黑板加粉筆”的傳統教學模式。“數據結構”課程教學過程中輔以多媒體教學,不僅可以使一些原來板書不能完成或很難完成的教學問題得到解決,而且還提高了教學效率。我們把清華大學出版社的《數據結構算法演示系統》用于課堂教學,對較難理解的知識點,如遞歸程序調用過程、排序的數據交換過程、最小生成樹等,可以化抽象為直觀、形象,取得良好教學效果。
計算機輔助教學絕不是一般的PPT講課,應該把板書和計算機輔助教學很好地結合起來才能真正達到好的教學目的和效果。
3總結
在教學活動中,教師是教學過程的主導者,教師的教
學經驗和方法非常重要,如果能夠具有豐富的實踐經驗,對教學工作就會如虎添翼,講授也會更有說服力。學生是學習的主體,他們對知識掌握的情況就是對教師工作的最好檢驗。但教學效果的好壞更主要取決于學生對課程的興趣和主動性,在教學和實踐過程充分發揮教師的引導作用保持學生的信心和積極性是一個重要因素。作為青年教師,應多向老教師學習,使教學過程更加通俗易懂,貼近生活。
“數據結構”是計算機專業的骨干、核心課程,是計算機程序設計和算法的重要理論基礎課,學好這門課程對學生來說是至關重要的。因此,對于該課程的教學不僅要從理論上進行探討,還要從內容結構、教學方法等方面進行研究。本文就實際教學中遇到的幾個問題從教學方法、內容組織以及考試考核等方面提出了建議和對策,希望同行共同討論。
參考文獻:
[1] 嚴蔚敏,吳偉民. 數據結構(C語言版)[M]. 北京:清華大學出版社,1997.
[2] 殷人昆. 數據結構(用面向對象方法與C++語言描述)[M]. 北京:清華大學出版社,2007.
[3] 張曉宏. 高校研究型教學范式之探究-啟發式教學[J]. 教學探索,2007(3):63-64.
[4] 黎遠松. 數據結構課程考試與評價制度改革的探索[J]. 四川理工學院學報:社會科學版,2007(10):88-89.