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