曾志峰
數據結構是計算機及相關專業的一門專業基礎課,計算機科學各個領域及有關應用軟件都要用到各種數據結構,在整個專業教學中占有極其重要的地位,是學生學習的一門重點課程,也是難點課程。筆者根據多年從事數據結構課程教學實踐,對該課程教學實踐中遇到若干問題進行整理并提出一些解決思路。
一、數據結構課程教學中的常見問題
(一)學生對課程目的及意義認識不夠深刻
在可視化化程序設計的今天,借助于集成開發環境可以很快地生成程序,程序設計不再是計算機專業人員的專利。目前,有許多非計算機專業和非計算機相關專業的人士也在從事著一些中小型計算機軟件或是一些簡單的網站、網頁設計工作,這些相關人士在其經歷的許多項目中,數據結構確實用得很少,他們所使用的一些好的通用的算法,都是直接從網上找到的。因此,很多人認為,只要掌握幾種開發工具就可以成為編程高手。網上也有許多數據結構課程無用武之地的言論。這些都在一定程度上對相當部分不明就里的學生產生了誤導。因而,學生對學習數據結構的重要性及其學習的目的認識不夠,不能真正理解各種數據結構的特點及其各種操作的算法思想。
(二)學生缺乏學習興趣
在傳統的數據結構教學中,大多數實驗配套教材詳細描述了理論課中所有算法的程序實現。每次實驗之前,老師會向學生詳細講解算法的理解、實現過程和運行結果,學生只需照搬教材錄入,驗證結果就可以。這樣的教學模式使學生毫無學習興趣,也不用動腦思考,使上機調試變得十分被動,也就沒有了學習的動力。這在很大程度上也影響著學生學習數據結構的效果。
(三)學生先行課程基礎不扎實
C語言程序設計是數據結構的前導課程之一,學生對它的熟悉掌握程度,直接關系到數據結構課程的實踐教學效果。數據結構課程的理論教學重在算法思想的描述,大多數學生因程序設計語言基礎差,有的學生甚至連C語言程序的結構都沒能弄清楚。實驗教學中,通常呈1:1:1的狀態,即,三分之一的學生能夠獨立或只需教師少量指導就能完成實驗,三分之一的學生需要教師給予較多的指導才能完成實驗;剩下的三分之一的學生需要教師做全程指導才能完成實驗,這部分學生往往對算法思想的體驗很有限,課程實驗教學效果不盡人意。
(四)課程本身較抽象
數據結構課程本身較強的邏輯性和抽象性決定該課程的難度較大,學生學習興趣不高,有些算法思想即便在課堂中學習理解了,但在實驗環節中由于語言基礎等其他因素的影響,常使得一些學生從心理上畏懼數據結構,害怕實踐,拿到實驗任務到上機實習,常常茫然不知如何動手。而對于具體問題的部分差異就更難把握,常使得學生在一種算法思想的實現中,教師講解能理解也能實現,但問題稍有變通便出現一定的困難。
二、提高數據結構課程效果的措施
(一)培養學生的學習興趣
興趣是最好的老師,有了興趣就有了學習、探索的動力。學生對某一學科有興趣,就會持續地專心致志地鉆研它,從而提高學習效果,所以,在教學中要注重學生學習興趣的培養。可以從以下兩個方面入手:一是,在教學過程中,教師可以根據教學內容設計適宜的、學生感興趣的題目供學生討論,在討論中以學生為中心,并進行適當的引導,使討論富于情趣,寓教于樂,達到較好的教學效果。比如,在排序這部分的教學內容中,隨機抽取10個左右的學生,以各學生的身高進行排序,讓所有學生在游戲中參與算法的演示,以加強學生對算法思想的理解,在輕松愉悅的環境中培養學生的學習積極性。二是,在課堂教學中實時地引入IT行業中有關數據結構的信息,或是針對教學內容列舉一些具體的實例說明數據結構在程序設計及現實生活中的應用,激發學生對數據結構的求知欲,培養其學習興趣。
(二)淡化語言,強調算法思想
數據結構課程的教學目標是使學生掌握各種數據結構的邏輯結構、存儲結構及其所涉及的各種操作的算法,以及常用的非數值計算方法,如查找、排序等,使學生掌握各種數據結構的特點和算法思想,并能結合具體情況,運用各種數據結構和算法解決實際問題。其中,算法思想的把握又是數據結構中的重中之重,是數據結構的重要組成部分。鑒于所有數據結構教程都是基于某一種語言編寫的,而學生對先行的程序設計語言掌握情況又不盡人意。故,我們在教學中,對每個算法,都采用自然語言表示法、偽代碼表示法、流程圖表示法之一來重點描述、講解,然后再給出具體的程序代碼,并在代碼中作完整注釋。布置作業、實驗題目時,要求學生首先在作業、實驗程序中,先用偽代碼等表示法將算法描述、注釋出來,然后再給出具體的程序代碼,考核時亦重點考核算法,使學生充分發揮其想象空間,不一味地將注意力集中在程序的語句、過程和函數上,而重點關注算法,學生也不會因程序設計語言不扎實而影響對算法的理解和掌握。
(三)改進教學方法
任何一門課程的教學,最忌諱的就是對學科背景、現狀及發展不作引證就直接講授具體教學內容。數據結構這門課程的教學實踐尤其忌諱一來就講授什么是數據結構等具體知識。部分學生,甚至部分正在從事與軟件開發相關工作的人士,對數據結構課程的目的及意義認識不夠深刻。所以,數據結構的第一堂課非常重要,在第一堂課中,必需對數據結構在軟件項目中的作用作一些論述及引證,務必使學生認識到數據結構非常重要,是專業開發人員的必備知識之一。
在教學實踐中采用多媒體教學與傳統教學相結合的方法。多媒體教學信息量大、變換快速、表現直觀、操作簡便,教學活動很容易出現課件喧賓奪主的不良傾向;教師容易忽視教學策略和教學方法,忽視教學難點和重點,忽視與學生的交流;學生忙于觀看課件,無暇做筆記,無暇思考。因此,在數據結構課程中一定要注重適時適當地采用一些傳統的教學方法,加強與學生的交流,在課堂中注重與學生的互動,杜絕采用填鴨式教學方法。
此外,教師要注意在每一堂課結束之后對所學內能進行歸納小結,整理教學內容的內在聯系。在整門課程的教學過程中,注重各種數據結構的比較,使學生總覽全局,對各種數據結構之間的差異和聯系有宏觀的把握,促進對各種數據結構知識的理解和掌握。