摘要:本文針對獨立學院《數據結構》實驗教學中出現的問題,提出了實驗教學內容層次化、實驗方法規范化、實驗過程規范化、實驗報告規范化、實驗考核標準化等措施,并已在甌江學院理工分院的計算機科學與技術專業2010、2011級的學生中實施,取得較理想的教學效果。
關鍵詞:數據結構;實驗內容;實驗方法;實驗過程;實驗考核
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2013)20-0063-02
《數據結構》是計算機程序設計的重要理論基礎,是計算機科學及其應用專業的一門重要的基礎課程和核心課程。《數據結構》課程內容豐富、理論抽象且實踐性強,所以在本課程的教學過程經常聽到學生的反映是課堂上能聽懂老師的講解,但自己解決問題編寫算法時感到困難重重,將課程的抽象理論知識應用到實際解決問題時感到無從下手、力不從心,因此加強《數據結構》課程實驗課教學迫在眉睫。筆者從事多年《數據結構》的教學工作,在《數據結構》實驗課規范化建設方面作了一些初步探討。
一、《數據結構》實驗教學存在的問題
在《數據結構》的教學中,存在著課程、教師、學生等方面的諸多問題:(1)課堂實驗課時嚴重不足。現在《數據結構》實驗一般安排32個實驗課時,加上課程設計32個實驗課時,也只有64課時。在這有限的時間里完成課程的所有實驗在時間上顯得嚴重不夠,必須突破實驗的時間和空間限制,讓多數實驗在課外完成。(2)實驗內容單一,不能形成體系,更多地注重驗證性實驗,較少開設設計性、綜合性、創新性實驗項目。(3)課堂理論教學與實驗教學未能很好地協調,理論和實驗不能有機地結合。《數據結構》課程是不僅理論抽象而且實踐性很強的課程,目前在教學中教師更多地是注重學生課堂理論知識的掌握,而輕視實踐教學,實踐教學缺乏具體明確的要求和任務。同時理論和實驗在時間上存在滯后現象。(4)學生學習能力嚴重不足。《數據結構》課程較之入門的《程序設計語言》,教學內容的難度與算法的復雜程度都要大。部分學生的學習能力瓶頸凸顯,致使學生產生畏懼與厭煩情緒,學習動力喪失,學習疲于應付,抄襲現象嚴重。(5)程序設計語言掌握不到位。常見的問題包括:函數調用關系混亂、實際參數和形式參數類型不匹配、指針變量不會使用、變量定義不規范、調試程序能力較弱等。
二、《數據結構》課程實驗教學的改革方法
根據獨立學院學生特點,注重學生學習興趣和應用能力培養,加強《數據結構》課程實驗課教學,規范實驗課教學的各個環節,對實驗內容、實驗方法、實驗過程監控和實驗考核機制等實施改革,建設完善的實驗教學體系,對提高實驗教學效果有重要的意義。
1.實驗教學內容層次化。根據獨立學院應用型人才培養目標,注重培養實踐動手能力,結合教育部的“面向21世紀教學內容和改革計劃,保留少量必開的經典驗證型實驗,增開綜合型、設計型實驗”的精神,為了保證實驗課的正常運行,完成實驗教學目標,針對獨立學院學生普遍編程能力比較弱、C程序設計語言基礎較差的情況,我們打算增開一些鞏固C語言的課程預備型實驗項目,保留了部分必要的經典的驗證型實驗內容,增加一些設計型實驗,加強綜合型實驗,使得實驗類型不再單一,實驗內容更顯層次化,做到既要有基本實驗的訓練,又有獨立思考、綜合運用知識、創新等能力、素質的培養。預備型實驗:主要加強學生C語言的薄弱環節,如結構體、指針、數組、函數調用等,掌握C語言的這些知識點是完成《數據結構》實驗的有力保證。驗證型實驗:主要為了理解和鞏固《數據結構》的基本知識點,用來驗證典型《數據結構》的邏輯定義及在具體存儲結構下的相關操作實現。設計型實驗:以《數據結構》課程理論知識為基礎,讓學生設計一些能解決實際問題的題目,這樣既加深了學生對基礎理論知識的了解,同時提高了學生學習的興趣,鍛煉了學生設計算法解決實際問題的能力。綜合型實驗:實驗內容涉及本課程多數章節及相關課程知識。主要培養學生的綜合分析能力、實驗動手能力、數據處理能力及查找參考資料的能力。
2.實驗方法規范化。對于一般的驗證型實驗,學生上機的任務只是將課本上的算法修改為在某種編程語言環境下可以運行的程序而已。但對于設計型和綜合型實驗,尤其是綜合型實驗,它是多種能力的綜合訓練,包括問題分析、總體結構設計、程序設計等基本技能,需要用更科學的實驗方法系統地完成。所以,為完成《數據結構》實驗,我們引入軟件工程的方法來指導實驗,實現實驗方法的規范化。需求分析:需求分析說明實驗的主要任務,如輸入的形式和輸入值的范圍、輸出的形式、程序功能、測試數據等。概要設計:說明本實驗中用到的所有抽象數據類型的定義、主程序的流程以及各程序模塊之間的層次調用關系。詳細設計:實現概要設計中定義的所有數據類型,對每個操作用程序設計語言編寫代碼;畫出函數之間的調用關系圖。調試分析:調試過程中遇到的問題是如何解決的以及對設計與實現的回顧討論和分析;算法的時空分析(包括基本操作和其他算法的時間復雜度和空間復雜度的分析)和改進設想。
3.實驗過程規范化。《數據結構》課程實驗同其他課程不同,在上實驗課之前需要做大量的準備工作,整個實驗從開始到結束不可能在有限的實驗計劃課時中全部完成,因此對整個實驗過程的控制和管理顯得非常重要。實驗過程從課前預習階段、實驗操作階段和實驗總結階段等三個階段進行改革,以實現實驗過程的規范化。課前預習階段:以往的實驗教學環節,往往是學生到課堂才知道實驗內容,學生往往措手不及,不利于實驗教學的正常開展。現在我們采用把每個實驗內容提前通知學生,要求學生做好課前預習,詳細了解實驗目的和原理、實驗要用到的數據結構和算法,寫出實驗預習報告,在實驗之前提交。通過課前預習,保證學生在實驗中思路清晰,能及時發現問題,易于取得實驗的成功。實驗操作階段:上機實驗的過程是實驗成敗的關鍵,我們一方面要求學生在實驗過程中養成做實驗記錄的良好習慣,另一方面引導學生在實驗過程中積極思考、反復調試,當出現異常情況時,要指導學生分析其產生問題的根源,尋求解決問題的方法。每次實驗結束后,要將實驗記錄交給教師檢查簽字。實驗總結階段:這一階段要求學生完成高質量的實驗報告,實驗報告中除了包括數據結構定義、算法思路、異常情況分析、測試數據及運行結果等必備的內容外,更重要的還要包括實驗設計實施的成敗得失、經驗教訓、心得體會。整理和填寫實驗報告的過程,即是學生對自身存在的問題進行修正和完善的過程,通過分析整理實驗報告,學生可以更深刻地認識到自己在實驗中存在的問題,加強其設計思維的訓練,也能不斷積累解決實際問題的動手能力。
4.實驗報告規范化。實驗報告是對整個實驗過程的總結,要求學生能從實驗的方法、原理、操作步驟、實驗的數據和結果等方面進行分析,掌握其中的基本實驗方法。對于不同類型的實驗項目,因為實驗的難易程度、教學目的不同,我們要求實驗報告的規范格式也不同。
對于預備型、驗證型實驗,實驗報告的基本組成部分有:(1)實驗目的:(2)實驗環境:(3)實驗內容和要求。前三項由教師統一提供。(4)數據結構和算法思想:程序中用到的數據的描述及涉及的算法思想的簡單描述。(5)實驗結果:含各組測試數據及運行結果(經任課教師簽字的原始實驗記錄)、實驗總結等。⑥思考題解答:主要寫出解決問題的方法,不要求寫代碼。對于設計型、綜合型實驗,實驗報告的基本組成部分有:(1)問題描述:描述要求編程解決的問題。(2)基本要求:給出程序要達到的具體的要求。(3)測試數據:設計測試數據,或具體給出測試數據。要求測試數據能全面地測試所設計程序的功能。(4)算法思想:描述解決相應問題算法的設計思想。(5)模塊劃分:描述所設計程序的各個模塊(即函數)功能。(6)數據結構:給出所使用的基本抽象數據類型以及新定義的抽象數據類型。(7)源程序:給出所有源程序清單,要求程序有充分的注釋語句,至少要注釋每個函數參數的含義和函數返回值的含義。(8)測試情況:給出程序的測試情況,并分析運行結果。
5.實驗考核標準化。關于實驗成績的考核,不能過分依賴實驗報告的優劣,否則會導致學生不注重實驗過程,片面追求實驗結果的正確性、實驗報告的篇幅和整潔程度,并嚴重制約了對學生綜合素質的培養。因此,必須大力革新傳統的考核體制,制定合理科學的考核方法。現在我們采用將學生實驗成績以優、良、中、及格和不及格5個等級評定。其中實驗考核成績占總成績30%;實驗預習占總成績15%;實驗態度(包括出勤)占總成績15%;實驗報告占總成績40%。
上述這些改進措施的絕大部分應用于2010和2011級學生的教學實踐中,證明是行之有效的,也取得了較好的成效。學生的學習積極性提高了,尤其是上實驗課的熱情增強了,學習效果有了明顯改善。今后我們還需要在建立規范化的實驗判題系統、加強實驗課前預習管理和控制抄襲多發現象等方面作一些有益的嘗試,以更好地搞好《數據結構》實驗課教學工作。