劉麗杰 (黑龍江八一農墾大學信息技術學院,黑龍江大慶1 63319)
《數據結構》是一門極具抽象性的課程,其特點就是邏輯性強,概念多,算法多,要求學生具有一定的程序設計能力。這就首先給學生的理論學習造成一定的困難,很多學生認為學習這門課程太枯燥、太抽象、不好學,學了也不知有什么用。慢慢的學生很容易產生畏難和茫然的情緒,在學習過程中缺乏信心。但 《數據結構》是計算機科學與技術專業中的一門核心課程,也是一門理論與實踐緊密結合的基礎課程,《數據結構》課程的學習效果不僅關系到其他后續課程的學習,也關系到計算機專業學生的專業素質和軟件設計水平,在計算機及相關專業的課程體系中起著承上啟下的重要作用[1-3]。因此,研究《數據結構》課程的教學改革是具有一定的深遠意義。
《數據結構》具有抽象性和靈活性等特點,對邏輯思維能力要求高,知識點很多而且靈活多變,這就要求教師在選擇和安排教學內容時多搜集一些生活中的實例,在講授時深入淺出地把這些例子和書本中的理論知識聯系起來,從而使深奧的理論變得生動有趣。例如在講棧時,可以舉一個數制轉換的例子,把棧先進后出的特點及如何在數制轉換中使用棧來存放余數聯系起來,進一步說明棧的應用;或者在講解圖的最短路徑算法時,可將其與城市交通的最優路徑選擇聯系在一起,下面就以此為例詳細講解一下。
通常情況下,兩城市間的 “最佳路徑”可能需要考慮的并非僅僅是 “空間距離”的最短,還有 “時間最短”和 “費用最小”。根據人們出行的需求不同,經濟能力不同,選擇的 “最佳路徑”也不同。考慮到只是以該案例加強教學效果,故在不考慮其他因素的前提下,僅以“空間距離”最短來講解。如圖1給出了幾個城市之間的火車運行情況,判斷火車能否從一個城市到達另一個城市,就是看從這個城市出發順著箭頭的方向是否能夠到達目標城市,如果能夠到達的話,則找出共有幾條路徑?其中路徑長度最短的是哪一條?這樣,城市間最佳路徑的選擇就轉換成了一個圖的求最短路徑問題,其對應的圖結構如圖2所示。

圖1 城市地圖

圖2 城市地圖對應的圖結
以鄭州為例,列出從鄭州到其他各個城市的最短路徑長度和詳細路徑,如圖3所示。這是一個典型的求最短路徑的圖的問題。在該例中使用鄰接矩陣作為圖的結構,使用隊列記錄最短路徑上途經的城市,使用迪杰斯特拉(Dijkstra)算法求解,詳細說明請見代碼中注釋。

編寫程序實現算法并調試運行通過,學生就此會進一步體會到圖的概念及其應用,并不像原來理解的那樣空洞、抽象。通過與實際應用的密切聯系,學生對所學知識的理解和應用能力及學習興趣都會有很大提高。

圖3 鄭州到其他城市的最短路徑
1)現代化多媒體教學手段與傳統教學手段相結合 現代化多媒體教學手段在某些課程的教學過程中發揮了極大的作用,但對于像 《數據結構》這種理論性很強的課程,課堂中完全使用多媒體課件的教學效果可能并不如想象中那樣理想。比如在講解線性表、樹或者圖的時候輔以多媒體課件直觀表示,可以加強學生的理解;在講解算法或者某些證明時也用多媒體課件,效果就不是很好[4]。尤其是在講解算法時,學生更喜歡教師用粉筆邊寫邊解釋,這樣雖然速度比使用多媒體課件稍慢,但學生的理解會更透徹,對學生的影響也會更深刻。當然,這種理解只是學生對某一點上的理解,還需要結合多媒體,由點到面展開,發揮兩者的長處。
2)借助校園網絡平臺 借助校園網絡平臺,將 《數據結構》的課件、習題、典型算法源程序、算法演示動畫等教學資料,進行匯集整理、分類,放在校園網上供師生共享,形成一種全新的教學模式,開展靈活多樣的網絡教學輔導活動,還可以在網站上實現在線答疑、在線測試、學習論壇等功能,讓學生可以在網上靈活地進行學習、復習或自我測試。同時,學生之間以及師生之間可以進行實時或非實時的交流,實現同學間的互相討論以及師生間的答疑。
3)采用 “雙向互動”式的教學方法 教師的職責不僅要教會學生新知識,更重要的要教會學生如何去獲取新知識,教學中既要注重教師的教又要注重學生的學。采取 “合作互動”的方法,在教師的指導下讓學生自己學會提出問題、分析問題和解決問題,將以 “教師為主體”、以 “課程為中心”的教學方式變為 “以學生為主體”、以 “能力為中心”,使學生由被動的接受變為主動的發現[5]。另外,通過師生共同回顧所學內容來找出需要改進和深化的地方,在算法設計之前要讓學生積極思考,遇到問題時教師再進行適當提示,最終找出解決問題的方法。
《數據結構》課程實際上是程序設計課程的延續和深化,程序設計課程只要求學生按照程序設計的要求和規范來設計一些滿足給定要求的程序即可,它強調的是程序設計基礎的理念;但 《數據結構》課程強調的是軟件的理念,《數據結構》的實驗問題表面上是程序設計,但設計的要求和程度是不一樣的,它要求學生掌握的是 《數據結構》的抽象特性[4-6]。
在實驗教學中,學生是實驗的主體,教師可以根據學生對教學內容的掌握情況來設計相應層次的上機實踐內容,采用針對不同學生進行不同的教學方法,即分層次教學,也就是實驗課上既要有基本實驗的訓練,也要有能讓學生獨立思考、綜合運用知識創新等體現能力的實驗。為了學生能夠學好復雜的程序設計,在實驗課上進行強化訓練,要求學生編寫的程序正確易懂、結構清楚,并進行嚴格的課堂打分制度,目的是培養學生的數據抽象能力、分析問題、解決問題的能力以及軟件開發的能力,為學生計算機程序設計與應用奠定了良好的基礎。堅持以 “數據的組織方式和算法設計”為主線,以 “培養綜合應用能力”為目標,鼓勵學生自行設計與開發綜合實驗項目 (大型作業)、設計開發算法的多媒體演示軟件、多參加ACM等程序設計練習,使學生通過自學、討論、參加訓練比賽等多種方式來激發學習興趣,嘗試自主、個性化學習,充分發揮潛力,培養并提高其綜合能力[6]。
[1]張紅霞,盤麗麗.《數據結構》課程教學改革研究與探討 [J].現代計算機 (專業版),2009(6):79-81.
[2]周玉林,賴鑫生.《數據結構》教改中的問題研究與探討[J].上饒師范學院學報,2008(3):84-88.
[3]張 娟,安少華,胡選子,等.“數據結構”課程的教學改革與實踐 [J].計算機教育,2008(16):53-54.
[4]鐘治初.《數據結構》課程實驗教學改革的理論與實踐探討 [J].內江科技,2007(3):149-150.
[5]蔡世霞,孫玉琦.《數據結構》課程教改模式研究[J].北京城市學院學報,2009(5):62-65.
[6]陶影,張斌.《數據結構》實驗教學應重視算法設計與分析能力的培養 [J].實驗室研究與探索,2008(12):119-122.