摘要:數據結構課程設計是高等院校計算機專業的一門重要專業實踐課,文章就目前普遍存在的課程設計教學質量不高的問題,結合我院實踐從五個方面介紹提高教學質量的措施,并對此做了分析和探討。
關鍵詞:數據結構;課程設計;教學質量
數據結構是計算機專業的核心課程之一,是計算機軟件技術的基礎,以數據為中心講述問題如何在計算機程序中得以實現。該課程的教學不僅要注重學生對理論知識的理解,更要培養學生能針對具體問題,設計合理的數據結構,對數據進行有效的存儲、操作,并能完成相應的高效算法。課程設計的教學是整個教學環節中非常重要的一環,它彌補了課堂教學中實踐少的缺陷,其教學目標不僅要培養學生縝密的邏輯思維和數據抽象能力,更要培養學生在軟件設計領域科學的思維方式,將算法理論和編程實踐完美結合,能夠在工程實際中靈活應用。因此不斷改進課程設計的教學方法,提高教學質量是培養高素質軟件人才的迫切要求。
1存在的普遍問題
1.1編程語言基礎差
數據結構課程設計通常是在大二進行,算法是基于C/C++語言。雖然學生之前已先修過這些課程,但C++本身規則復雜,面向對象的思想不容易掌握,而學生又沒有經過系統訓練,普遍存在編程語言基礎薄弱、對調試程序的方法不夠熟練、程序結構設置不合理、代碼編寫可讀性差等問題。不少同學反映算法能聽懂,看教師演示一些實例也覺得簡單,但輪到自己編程就無從下手。這種狀況直接制約了學生完成課程設計的質量[1]。
1.2缺乏系統的軟件開發思想
計算機專業的課程體系中,軟件工程通常安排在數據結構課程設計之后,這樣學生在進行課程設計時,尚不具備軟件開發的思想。遇到問題時,只考慮怎么實現,沒有進行整體軟件開發的過程規劃,忽視了軟件的性能、質量、甚至于需求都不甚明確就急于動手編寫程序。這樣的做法使得課程設計的完成效率很低,經常需要返工。
1.3教師的指導“過多”或“過少”
課程設計中,教師的指導相當重要,但是目前存在兩個極端,有的教師對每個課程設計都講解得面面俱到,如何實現,用什么樣的存儲結構,所得結果等都作了交代,學生只是被動的接收者,這種“填鴨式”的教學方式制約了學生的創新能力。而另一個極端,有的教師認為課程設計是由學生上機完成的,教師督促學生,最后給出考評,對學生完成課程設計的過程關注太少,很多學生因此敷衍了事。教師如何把握指導的度,如何指導是學生能力能否得到提高的一個重要因素[2]。
1.4考評制度不合理
長期以來,課程設計報告被看成是評定學生成績的一個重要依據,而對學生軟件開發的過程關注不多,學生只要上交了報告就能獲得成績[3]。這樣的做法導致學生過度追求報告的整潔度、實驗結果的正確性等。甚至部分同學抄襲、直接從互聯網上下載報告交差。一個學期下來,除了交了幾份報告,學生的收獲甚少,課程設計教學效果甚微。因此,必須改革考評制度,才能真正培養學生的動手能力、創新能力。
2提高課程設計教學效果的措施
2.1規范軟件開發的過程,培養良好的編程習慣
在學生開始課程設計前,教師首先通過一個具體的實例,從需求分析、概要設計、詳細設計、編程測試等各個方面出發,讓學生了解完整的開發軟件過程。在數據結構課程教學中,所有算法均用可運行程序講解,避免出現懂算法不懂編程的現象。有意識地讓學生強化編程的技巧、調試方法、面向對象思想等內容。
我院數據結構課程組教師采用面向對象的思想,將數據結構中基本算法全部用C++模板類實現,學生通過多看、多讀這些規范的程序,取得了不小進步。
2.2梯度命題,循序漸進開展課程設計
課程設計以往是教師根據實驗指導書布置課題后由學生完成,部分學生感到難度很大,無從下手。現階段我們將課程設計改為驗證型、驗證設計型、設計應用型多種層次,針對各種基本數據結構,教師首先用模板類實現,學生在課程設計時先用實例驗證程序,在此基礎上,設計出預留的一些函數接口,實現該類的部分功能。最后再針對某一具體問題,由學生開發出完整的程序。這是一個由易入難的循序漸進的過程,學生通過驗證型實驗更加牢固掌握基本數據結構,再由驗證設計型和設計應用型實驗學會如何應用數據結構,如何在計算機中實現存儲,實現各種需求的功能。
下面以二叉樹部分內容為例,首先實現二叉樹的模板類如下:
/*二叉樹類*/
template
class BinaryTree
{
public:
BinaryTree():m_root(NULL){} /*構造函數*/
~BinaryTree()//析構函數
/*按以先序次序輸入結點值的方式建立二叉樹的接口函數*/
void Create1(ElemType c