張小剛(塔里木大學信息工程學院,新疆阿拉爾843300)
?
數據結構課程實踐教學改進探討
張小剛
(塔里木大學信息工程學院,新疆阿拉爾843300)
摘 要:“數據結構”課程是計算機專業重要課程之一,也是理論抽象程度較高的課程,鞏固理論知識的實踐教學對數據結構的掌握和靈活運用至關重要。論文通過分析研究,針對我校數據結構教學中存在的重理論、輕實踐,重驗證、輕設計的弊端,提出從實驗設置內容和實驗過程保證兩個方面來改進實踐教學,并結合多年的教學實踐,具體從實驗內容、實施方式、考核方法、實驗流程等方面展開研究和探討。
關鍵詞:數據結構;實踐教學;實踐教學改進
實踐教學能使學生鞏固理論知識,加深理解,是對知識掌握從抽象到具體的必經階段,是提高學生實踐能力、創新能力與創新意識的基礎,對提高學生綜合素質,培養創新精神和實踐能力有著理論教學不可替代的特殊作用[1]。“數據結構”是計算機專業一門重要的專業技術基礎課程,介于數學、計算機硬件和軟件三者之間,涉及數據的邏輯結構、存儲結構和操作實現、查找和排序技術,是非數值計算程序設計和編譯程序、操作系統、數據系統及其他系統程序和大型應用程序的應用基礎[2]。同時也是工科、理科、醫科等學科中許多專業的必修或選修專業基礎課[3]。
2015年9月我被國家留學基金委派往渥太華大學工程學院進行高等教育教學法研修,歷時3個月。研修過程中,我對渥大電子工程與計算機學院數據結構課程進行了隨堂聽課,發現國內我校學生綜合運用數據結構及相關算法知識解決實際問題的能力明顯不足。通過比較、分析,我發現造成這種現象的一個重要原因是我校數據結構課程教學中以利用偽代碼描述數據結構為主,以編程實踐為輔,重理論、輕實踐,實踐教學不能支撐起理論教學。在有限的實踐教學中,學生只對理論課上老師講授的知識進行驗證,自己動手設計數據結構和算法的實驗很少,重驗證、輕設計。
這種教學模式造成的后果是:第一,對理論學習內容不能充分理解。學生實驗的時候只是按照老師的思路被動的完成,沒有經過自己的充分思考,不需要自己去考慮各種可能的解決方案并找尋解決問題的方法,對學習內容不能充分理解,只能知其然不知其所以然。第二,解決實際問題的能力較差。各個章節實驗內容各不相關,互相脫節,這就造成思考問題片面,對實際問題認識不全面、不深刻,無法與實際應用相關聯。第三,不能進一步提高學生綜合運用數據結構知識的編程能力。由于我校數據結構課程一般開設在大學二年級,這時學生編寫程序的時間還比較短,編寫程序的能力還比較弱,驗證型實驗很多都有源程序,不能引起學生認真思考,不能運用數據結構知識與加強前導程序設計語言的進一步融合。例如C語言程序設計中指針及動態內存分配與釋放的原理與方法不能與數據結構中線性結構進行融合,綜合運用。
“數據結構”及相關算法理論抽象程度較高,必須要配合相應的實踐課程才能夠理解透徹和靈活運用。在教學中我們發現學生對數據結構掌握的困難不是在概念和算法的原理、流程,而在于將具體的數據結構及相關算法的具體實現上。實踐教學體系中實驗內容和實驗流程是實踐教學體系科學、合理設置的關鍵,因此我們從這兩個主要方面入手進行實踐教學設計。首先,我們從合理設置實驗內容入手,保證經典和常用的數據結構及相關算法的知識點得到訓練;在保證實驗題目包含基本內容的基礎上增加綜合設計型實驗,訓練學生運用所學知識,解決實際問題的能力。其次,嚴格設置實驗流程,加強對學生實踐能力的考核,引導學生完成解決實際問題的步驟,保證實驗效果。通過這兩個方面的訓練,學生對一個實際中較復雜的問題,通過熟悉背景知識,小組任務分工、問題分析、數據結構設計、編碼、調試等各環節的完成,使學生在實踐中理解并、應用數據結構與算法設計技術,提高分析、解決實際問題的能力[3]。
(一)合理設置實驗內容
數據結構實驗可以分為驗證型實驗和設計型實驗,驗證型實驗要求每個學生在教師指導下獨立完成,主要驗證課堂理論教學所授內容,以加深理解。教師全程參與指導,即從算法基本思想到算法實現,實現的各個環節(包括編程技巧、程序調試與測試等)都要參與指導。設計型實驗要求每位同學獨立完成,但在算法設計環節,教師可以給出提示。
驗證型實驗的目的是使學生掌握基礎的常用的數據結構用法,強化對各種數據結構本身構造的理解,同時在使用的過程中進一步鞏固加強程序設計語言的應用。但基礎驗證型實驗在設置上不宜過多,應把握典型性的特點,應能夠集中體現某個數據結構的基本特征,而且要難度適中,要使多數學生經過努力可以實現,應包括的典型算法如下表1。

表1.驗證型實驗應包含典型算法
設計型實驗的目的是訓練學生針對實際問題,提煉出運算模型,綜合運用學過的知識,選擇合適的數據結構并設計合理的算法求解問題。與驗證型實驗相比,設計型實驗最大的優勢就是要求能夠訓練學生對知識的綜合運用,這一點恰好可以彌補驗證型實驗的不足。設計型實驗可采用基于問題本身的任務驅動式方法,訓練學生獲取新知識以及分析、解決實際問題的能力。
數據結構中設計型實驗典型題目:電子通信薄構造問題,要求實現聯系人信息的添加、刪除、修改、查找和排序功能;利用哈夫曼算法對文本文件進行壓縮和解壓縮,顯示壓縮比、壓縮時間、解壓時間與對應的加密壓縮編碼表問題;設計數據結構存儲站點及公交線路信息,實現公交所經站點和站點所經公交以及對給定公交站點間換乘方案的查詢問題的公交查詢系統問題;帶優先級的計算器問題,要求從終端以字符序列形式輸入四則混合運算表達式,程序實現對運算數、運算符及優先關系的識別和表達式的計算;代碼相似度檢測問題,要求查閱資料了解代碼相似度檢測的典型解決方法,設計以串的模式匹配為基礎的檢測程序;內部排序算法效率比較平臺的設計與實現等[4]。
(二)合理設置實驗環節
在合理設置了實驗內容的基礎上,還需要合理設置實驗環節,實驗環節的設置是實驗效果的重要保證,對單純的驗證型實驗,實驗環節是比較容易設定的,只需介紹一些實驗環境及實驗中需要注意的問題,同時給出進行驗證型實驗的步驟。學生在按部就班演示和理解源代碼的基礎上,就可以完成實驗報告中的問題需求分析、數據結構和算法概要設計和詳細設計部分,從而加深對數據結構的理解,提高算法理解和算法設計能力[6]。
設計型實驗是模擬實際工程中軟件設計的綜合性實驗,它的目的是培養學生靈活運用所學知識獨立解決實際問題和團隊合作的能力,要求學生能夠根據實際問題合理分工,分析出輸入、輸出,選擇合適的某個或某些數據結構組織需要處理的數據,并設計出正確的、高效的算法。設計型實驗則必須要注意兩點,一是實驗內容,二是實驗步驟。實驗內容中要注意的是實驗的綜合性和背景知識,如果實驗包含多個數據結構的知識點,綜合性較強,則一般難度較大。如果題目涉及到的知識背景比較豐富,也會加大學生理解和設計問題的難度[3]。
實驗步驟一般可以劃分為5個階段,具體包括“提出問題-提出設計要求-任務實現并提示-測試、運行與展示-分析、探討、修改”5個部分。
第一階段:提出問題。這部分教師給出問題背景,把本實驗題目背景知識連同主要知識點提取出來,并融入到每個具體的任務中,教師一般只給任務書而不提供指導書。班級同學根據興趣分成任務小組,以3-5人為一個分組,適當調整優勢互補,分工合作,所有工作都以任務為中心來展開。這一部分要注意“任務”的明確性和可操作性。
第二階段:提出設計要求。教師提出任務設計與實現功能上需求,給出算法實現對數據邏輯結構、存儲結構、功能設計、數據輸入或輸出上的要求,學生通過分析分給自己的任務,了解任務的背景知識,所需知識點,規劃解決任務的方案和步驟等。每一個任務小組要根據自己的研究任務制定研究方案,并將任務分配到個人,并做好研究準備工作。在此階段教師以指導教師的身份出現,通過巡回指導觀察學生操作情況。
第三階段:任務實現并給出提示。將整個小組的大任務根據人數分成多個小任務,并將具體任務模塊化,小組內部對每個任務進行分析、研究、討論,進行概括和總結,從中得出小組內部的結論,提出組內設計方案,并根據個人興趣來挑選完成。在完成過程中同學之間可以合作,學生完成這些任務的同時,無形中提高了他們的動手能力和合作精神。
第四階段:測試、運行及展示。學生在展示過程中應給出各種具體情況的測試案例。包括項目的準備、項目實施過程中遇到和解決的各種疑難問題、自己所負責模塊的運行效果等等。展示方式可以是小論文、多媒體演示、實驗報告、程序運行模塊等,但應該包括任務內容(做什么),算法說明(怎么做)等。
第五階段:分析、探討、修改。展示完成后,教師和別的小組的同學根據展示進行分析、討論,給出評判和建議,學生根據評判和建議進行修改。這一部分除了對測試結果進行分析外,還要求學生不局限于題目要求使用的算法,探討更多解決問題的途徑,或者提出自己的見解,給出可能的改進算法建議。學生通過這一階段工作可以了解自己及別的小組的任務完成情況,對比、分析,得到啟迪,提高自己分析和解決問題的能力[7]。
“數據結構”實踐教學是該課程教學的重要組成部分,作者通過在渥太華大學工程學院跟班聽課,發現與國外對比國內數據結構課程實踐教學環節有所欠缺,尤其是實踐設計環節偏少,導致學生動手設計數據結構及算法并解決實際問題能力較差。特此分析后,針對國內我校數據結構實踐課程教學中存在的重驗證、輕設計,導致學生綜合運用能力較差的實際問題,結合多年的教學實踐,提出從實驗設置內容和實驗過程保證兩個方面來加強實踐教學,并具體從實驗內容、實施方式、考核方法、實驗流程等方面展開研究和探討。該工作對國內轉變以教師為主的灌輸式教學法到以學生為主的自主性、創新性學習的轉變具有一定幫助。
參考文獻:
[1]朱金秀,金紀東,周研,等.實踐教學與就業能力培養相融合的研究與探索[J].實驗室研究與探索,2011,(4):105-107.
[2]嚴蔚敏,吳偉民.數據結構:C語言版[M].北京:清華大學出版社,1997.
[3]徐慧,郭榮祥,周建美.多維一體的“數據結構”實踐教學系統的構建[J].計算機教育,2011,(10):66-69.
[4]林健.注重卓越工程教育本質創新工程人才培養模式[J].中國高等教育,2011,(6):19-21.
[5]余燕,劉燕麗,李琳娜.數據結構實踐教學內容設置的分析與思考[J].實驗技術與管理,2014,(4):170-173.
[6]李曉鴻,駱嘉偉,季潔.“數據結構與算法分析”研究型實踐教學的探索[J].實驗室研究與探索,2012,(1):121-125.
[7]陳越,何欽銘,馮雁.“數據結構”綜合性課程設計教學探索與實踐[J].計算機教育,2008,(8):54-55.
(責任編校:張京華)
中圖分類號:TP311
文獻標識碼:A
文章編號:1673-2219(2016)04-0134-02
收稿日期:2015-12-23
基金項目:國家留學基金委2015(第5期)高等教育教學法出國研修項目(工程類)。
作者簡介:張小剛(1976-),男,塔里木大學信息工程學院副教授,博士研究生,研究方向為數據挖掘。