莊鎖法,馬 潤
(安徽科技學院,安徽 滁州 233100)
數(shù)據(jù)結構實踐教學的改革與實踐
莊鎖法,馬潤
(安徽科技學院,安徽 滁州 233100)
摘要:數(shù)據(jù)結構課程是一門實踐性很強的專業(yè)基礎課程。文章分析了數(shù)據(jù)結構實驗教學過程中存在的問題和困難,提出了保證基礎實驗,強化設計實驗,推動綜合實驗多層次的實踐教學內(nèi)容的改革,同時對實踐教學方法進行探索,通過實踐取得良好效果。
關鍵詞:數(shù)據(jù)結構;實驗教學;啟發(fā)式;教學方法
數(shù)據(jù)結構課程是計算機科學與技術的一門核心專業(yè)基礎課程,與計算機各門主干課都有密切聯(lián)系,具有獨特的承上啟下的重要位置[1]。同時數(shù)據(jù)結構又是一門實踐性極強的技術基本課,其內(nèi)容隨計算機科學與技術的飛速發(fā)展而不斷更新。本課程系統(tǒng)地介紹各種典型的數(shù)據(jù)結構,包括它們的概念、性質、實現(xiàn)方法和應用。通過講授、練習和上機實踐,培養(yǎng)學生根據(jù)求解的要求,選擇合適的數(shù)據(jù)結構,應用抽象數(shù)據(jù)類型的思想方法,組織數(shù)據(jù)和算法的能力,進一步提高程序設計水平,培養(yǎng)良好的程序設計方法,為將來學習和后繼課程打好基礎,因此更新數(shù)據(jù)結構的實驗教學教學內(nèi)容,改進實驗教學方法,提高教學質量對培養(yǎng)高素質軟件人才起著決定性的作用。
在長期數(shù)據(jù)結構教學過程中。我們發(fā)現(xiàn)數(shù)據(jù)結構實踐教學中存在以些問題和困難,主要表現(xiàn)在如下幾個方面。
1.1課程較為抽象,學生理解困難
在教學過程中,學生普遍反映學習難度較大,理論性太強。的確,數(shù)據(jù)結構是一門理論性強、思維抽象、難度較大的課程,是基礎課和專業(yè)課之間的橋梁。該課程的先行課程是計算機基礎、程序設計語言、離散數(shù)學等,后續(xù)課程有操作系統(tǒng)、編譯原理、數(shù)據(jù)庫原理、軟件工程等。因此即使理論課老師采用各種可行的方法,例如項目驅動和案列教學法等方法,但效果并不理想,實驗課學生仍然找不到解決的辦法,造成老師講得累,學生聽不懂,上機很難進行的局面。筆者在數(shù)據(jù)結構的實踐教學環(huán)節(jié)中,感到學生在上機實驗方面,普遍存在很大的困惑與難點。
1.2學生對程序設計語言掌握不夠
程序設計語言是數(shù)據(jù)結構的先修課程,我們學校在大學一年級開設,數(shù)據(jù)結構課程在第三學期開設,近幾年,在第一學期開設程序設計課程,學生剛進大學,由于學習目的性不強,學習方法不正確,對程序設計的興趣不濃,學生難以適應,程序設計語言課程掌握不夠,從實踐教學的角度要求學生必須掌握函數(shù)、結構體、指針、遞歸程序設計方法、動態(tài)內(nèi)存分配方法等語言要素。而這些方面正好是學生的薄弱環(huán)節(jié),直接影響到數(shù)據(jù)結構課程的實踐教學正常進行。
1.3實驗內(nèi)容設計不合理
數(shù)據(jù)結構的實驗內(nèi)容選擇都是教材中的一些算法或是課后的練習,或者是課后的實驗。一方面?zhèn)鹘y(tǒng)實踐教學中,實驗題目僅針對某一個問題,體現(xiàn)不出綜合性,也沒有和具體的應用相結合,體現(xiàn)不出應用性[2]。另一方面,教材中的算法是無法直接在機器中執(zhí)行的,必須要把算法思想轉化成完整的程序才行,在實驗時要想象應用環(huán)境,分析邏輯結構,選擇存儲結構,算法的調用需要做哪些準備等等,所以,沒有很好的引導和很強的編程能力也是無法自行完成的。
長期以來,課程組重視實踐教學,致力于理論基礎和實踐教學的完美結合,形成了保證基礎實驗,強化設計實驗,推動綜合實驗多層次的實踐教學體系[3]。
2.1基礎實驗屬于基本算法題目
針對課堂上講解的數(shù)據(jù)結構的基本算法給出程序的大體框架和相關算法,主要是用來驗證算法的基本思想。首先按照實驗大綱要求每章編制以驗證為主的基礎性實驗指導書,每個實驗分三個部分,第一部分,預備知識介紹本次實驗的指導思想和實驗一般方法,內(nèi)容組織結構概述,需要的基礎和準備工作及環(huán)境安裝,注意事項;第二部分,實驗小題,把本次實驗的實驗算法用實驗小題的形式給出,主要要求學生在理解算法的基礎上,如何調用這些算法;第三部分,采用分步驟填空的方式如何實現(xiàn)每一個小題,實際上就是分步驟填寫采用的存在結構,數(shù)據(jù)如何存入計算機,如何調用算法,需要的數(shù)據(jù)如何提供,調用后如何得到運行結果。
2.2設計實驗屬于應用性題目
設計實驗是在基礎實驗的基礎上,利用已經(jīng)學過的基本算法,讓學生自己動手來完成一些具體的應用問題。通過設計實驗一方面降低了學習數(shù)據(jù)結構的難度,增強了學生學習數(shù)據(jù)結構的興趣,了解數(shù)據(jù)結構的應用范圍,同時也鍛煉了學生的編程能力。課程組根據(jù)大綱和教材設計了如一元多項式加法計算、表達式分析與計算、迷宮、停車場管理問題、醫(yī)院病人就診、約瑟夫環(huán)問題、高速公路建設問題、教學計劃編排等問題。對每一個問題,給出具體指導和要求,比如,以一元多項式加法為例,具體指導內(nèi)容包括:首先給出兩個多項式相加的實際例子,其次采用何種類型的存儲結構來存儲多項式的系數(shù),多項式相加中合并同類項如何實現(xiàn),如何建立多項式,如何輸出多項式等等引導學生去思考,要求學生利用課后時間,對每一個指導步驟得到準確回答,題目可以集體討論解決,也可以一個學生獨立完成。這類實驗題目,學生積極性高,興趣濃,由于可以討論,也增強了學習主動性和合作精神。
2.3綜合實驗屬于課程設計實驗
綜合實驗是給出面向實際應用的稍大一些的實踐題目,課程組根據(jù)大綱要求,編寫了數(shù)據(jù)結構課程設計實驗指導,設置了學生信息管理系統(tǒng)、圖書管理系統(tǒng)、集合運算、車票管理系統(tǒng)等綜合實驗題目。每一題目給出了題目描述、程序應該完成功能和題目要求。以學分管理程序為例,題目描述:請設計一個學生的學分管理程序,假設每位學生必須完成基礎課50學分、專業(yè)課50學分、選修課24學分、人文類課程8學分、實驗性課程20學分才能夠畢業(yè),因此在管理學分時,要考慮每個學分所屬于的課程類別。程序應完成功能:(1)通過鍵盤輸入某位學生的學分;(2)給定學號,顯示某位學生的學分完成情況;(3)給定某個班級的班號,顯示該班所有學生學分完成情況;(4)給定某位學生的學號,修改該學生的學分信息;(5)按照某類課程的學分高低進行排序;(6)提供一些統(tǒng)計各類信息的功能。題目要求:1)存儲結構采用順序表或鏈表;2)用本學期所學算法實現(xiàn)各模塊;3)主函數(shù)設計一個菜單,通過菜單進入各模塊測試。
在教學過程中僅僅有合適的教學內(nèi)容,如果沒有配套的實踐教學方法,那么實驗教學內(nèi)容就不能很好落實,實驗教學質量也很難保證,因此,針對實踐教學中存在的問題,對實驗內(nèi)容進行設計的基礎上,對實驗教學方法要進行不斷的探索和改進,我們課程組通過認真實踐,摸索出一套數(shù)據(jù)結構實踐教學方法。
3.1加強編程能力的培養(yǎng)
針對學生程序設計基礎差,實踐動手能力差的特點,有針對性進行學習和訓練。數(shù)據(jù)結構課程中頻繁使用C 語言的函數(shù)參數(shù)傳遞、指針和結構體等,對于理解數(shù)據(jù)結構起到舉足輕重的作用,因此,教師必須根據(jù)學生對 C 語言掌握的情況,有目的地講授一些數(shù)據(jù)結構所涉及的 C 語言知識,強化學生 C 語言的運用能力,從而更好地完成數(shù)據(jù)結構的實驗教學,達到事半功倍的效果,我校在開設數(shù)據(jù)結構之前,特地開設程序設計技能訓練,而且這門課程由數(shù)據(jù)結構教師來教授,這樣我們課程組教師就可以有針對性的進行項目訓練,并且在此基礎上把數(shù)據(jù)結構中的有關算法引入該課程,讓學生先知道怎樣用了,以后再學習數(shù)據(jù)結構時,學生就更好的理解所學概念和知識的來龍去脈了。
3.2采用啟發(fā)式教學方法提高實驗教學效果
所謂啟發(fā)式教學,就是教師根據(jù)教學目的、內(nèi)容、學生的識水平和知識規(guī)律,運用多種教學手段,采用啟發(fā)誘導辦法傳授知定的分析問題、解決問題和編寫程序的能力[4]。課程組教師在進行數(shù)據(jù)結構基礎實驗時,課前讓學生預習預備知識,實驗課時,課程組在方法上進行指導,同時結合實際應用作一些啟發(fā)性的提問,使學生知道從哪里入手做,以及從哪些方面可以作些變化。例如,在學生鏈表實驗時,根據(jù)教材內(nèi)容,問學生,建立鏈表有什么方法,學生肯定回答,有頭插入法和尾插人法,教師追問,能不能用插入算法來實現(xiàn)呢?怎么做就可以達到頭插入法效果?怎么做就可以達到尾插人法的效果?關于鏈表長度算法,常常用“順藤摸瓜”來比喻,那么輸出模塊是不是也可以摸一個輸出一個呢?通過一些列的啟發(fā)提問,學生漸漸的學會舉一反三,收到良好效果。
3.3綜合性實驗采用任務驅動教學方法
綜合性實驗屬于課程設計實踐是前兩項實踐內(nèi)容的提高過程,按照任務驅動式的教學方法,對于實踐內(nèi)容、實踐目的、實踐結果更有針對性[5]。每個任務按軟件工程的方法來實踐,教師提供可選題目,學生根據(jù)自身興趣進行選題,老師給出每個題目邏輯分析,學生進行需求分析,寫出需求分析報告,在老師的指導下,學生進行題目的概要設計、對每一模塊進行詳細設計,最后代碼編寫、上機調試。通過這樣的交流和討論,一方面老師能了解學生的學習情況,另一方面,學生對應用程序設計有較深的認識,也有效杜絕了抄襲程序的現(xiàn)象。
3.4實驗考核方式的改革
考核方式是檢驗教學內(nèi)容的正確性及教學方法的合理性的重要手段。我們針對實驗內(nèi)容和形式的不同,采用不同的考核方式,對于基礎實驗,采用隨堂評分的方法,每次實驗結束前對每個學生進行檢查,根據(jù)學生實驗課的學習態(tài)度、出現(xiàn)錯誤情況、調試程序能力和實驗完成情況給學生評分。對于設計實驗,我們采用包括程序演示、回答問題、程序改進和實驗報告四個過程。程序演示過程由學生向教師演示自己的編寫程序,教師檢查學生程序是否達到預期要求;回答問題過程教師向學生提出與題目相關的問題,例如題目真正要完成的任務,每一個模塊的算法的思想,而且要求由非編寫模塊的同學回答,這樣起到相互學習,取長補短的作用;根據(jù)前兩個過程,教師提出設計中存在的問題和不足,希望學生再進行改進,使得程序基本達到預期目標;實驗報告要求按指定的格式完成,同時把應用實例寫進實驗報告中,另外還要寫明程序在編寫過程中出現(xiàn)的問題,以及解決的方法和實驗收獲。
經(jīng)過數(shù)據(jù)結構實驗內(nèi)容的調整和設計,實驗教學方法的改進和實施,取得了不少寶貴的經(jīng)驗和可喜的成績,使得我校這幾年數(shù)據(jù)結構的課程教學效果有了很大提高,形成了學生愛好數(shù)據(jù)結構課程的良好局面。當然,教學改革和探索是沒有止境的。因此,今后我們課程組將繼續(xù)探索下去,設計最合理的實踐教學內(nèi)容,掌握最有效的實踐教學方法,培養(yǎng)學生分析、解決問題的能力,為培養(yǎng)合格的計算機專業(yè)應用型人才多作貢獻。
參考文獻:
[1]李春葆.數(shù)據(jù)結構教程[M].清華大學出版社(第4版),2013(01).
[2] 胡學鋼,張晶等.數(shù)據(jù)結構實踐教學體系設計[J].吉林大學學報(信息科學版),2005(08):138-140.
[3]秦玉平.數(shù)據(jù)結構課程實踐教學改革與實踐[J].渤海大學學報(自然科學版),2013(12):398-400.
[4]米文麗.啟發(fā)式教學在《數(shù)據(jù)結構》課程中的應用[J].佳木斯教育學院學報,2014(05):156,158.
[5]曹春萍,陳平.問題驅動法在“數(shù)據(jù)結構”教學中的應用探討[J].中國電力教育,2014(23):78-79.
基金項目:安徽科技學院教學研究項目資助(編號:X2012030)
作者簡介:莊鎖法(1965-),男,副教授,研究方向:信息管理,網(wǎng)絡管理和網(wǎng)絡安全教學與研究。