紀(jì) 穎,周 欣,劉彥君
(哈爾濱理工大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,哈爾濱 150080)
數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
紀(jì) 穎,周 欣,劉彥君
(哈爾濱理工大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,哈爾濱 150080)
《數(shù)據(jù)結(jié)構(gòu)》是計算機(jī)專業(yè)中一門重要的專業(yè)基礎(chǔ)課程,在分析數(shù)據(jù)結(jié)構(gòu)教學(xué)中主要存在的問題及原因的基礎(chǔ)上,根據(jù)教學(xué)實踐經(jīng)驗,結(jié)合目前的計算機(jī)專業(yè)課教學(xué)改革方法,闡述了在教學(xué)改革上的一些創(chuàng)新的認(rèn)識。
數(shù)據(jù)結(jié)構(gòu);教學(xué)改革;教學(xué)模式;實踐能力
數(shù)據(jù)結(jié)構(gòu)課程不僅是計算機(jī)科學(xué)與技術(shù)的核心基礎(chǔ)課程之一,也是操作系統(tǒng)、數(shù)據(jù)庫、軟件工程和人工智能等課程的基礎(chǔ),是一門實踐性很強(qiáng)的課程,廣泛應(yīng)用于信息科學(xué)、應(yīng)用數(shù)學(xué)以及各種工程技術(shù)領(lǐng)域。數(shù)據(jù)結(jié)構(gòu)課程理論性強(qiáng),教學(xué)重點部分比較抽象,難以理解。針對數(shù)據(jù)結(jié)構(gòu)課程教學(xué)中存在的問題,提出了改革的方案,教學(xué)實踐表明,該方案的實施已取得了明顯的教學(xué)效果。
1.先行課程不扎實。C語言程序設(shè)計是《數(shù)據(jù)結(jié)構(gòu)》的前導(dǎo)課程之一。學(xué)生對它的熟悉、掌握程度,直接關(guān)系到數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)效果。由于 C語言是學(xué)生最先接觸的程序設(shè)計語言,編程思想與以往的思維方式不同,教學(xué)難度比較大,使得教學(xué)時間大部分花費(fèi)在基本概念上。而學(xué)生對數(shù)組、結(jié)構(gòu)體、指針這三種數(shù)據(jù)類型的認(rèn)識和理解不深,甚至印象模糊;對函數(shù)、函數(shù)的參數(shù)、函數(shù)的返回值、函數(shù)調(diào)用的理解也不夠;對遞歸及遞歸過程更是難以理解。然而,這些內(nèi)容是數(shù)據(jù)結(jié)構(gòu)課程的重要基礎(chǔ),在數(shù)據(jù)結(jié)構(gòu)課程中使用頻率很高。因此授課教師在數(shù)據(jù)結(jié)構(gòu)教學(xué)中需要花費(fèi)大量的時間重新介紹這些知識,但學(xué)生仍然模糊不清,致使教學(xué)效果不理想,最終使得學(xué)生喪失對該課程學(xué)習(xí)的興趣和信心。
2.本課教學(xué)難度高。數(shù)據(jù)結(jié)構(gòu)課程的理論性和抽象性使學(xué)生學(xué)起來很困難。首先,學(xué)生對 C語言中的函數(shù)、指針和結(jié)構(gòu)體等知識點本身理解就不夠,一下子跨度到數(shù)據(jù)結(jié)構(gòu),學(xué)生難以接受。其次,本課程要求學(xué)生在理解數(shù)據(jù)邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)等基本概念的基礎(chǔ)上建立算法,最終掌握對數(shù)據(jù)以及數(shù)據(jù)之間關(guān)系的處理方法。但是這些基本概念和數(shù)據(jù)在內(nèi)存中的表示等知識非常抽象,學(xué)生很難建立起概念。
3.理論教學(xué)與實際應(yīng)用脫節(jié)。數(shù)據(jù)結(jié)構(gòu)課程內(nèi)容抽象、瑣碎、龐雜,涉及很多概念和技術(shù)。所有這些內(nèi)容均自成體系,相互之間的銜接線索很少,總體感覺內(nèi)容零散,沒有一個整體的知識框架體系,這些內(nèi)容在實際應(yīng)用中又都很重要。而現(xiàn)行的教學(xué)計劃實踐課時普遍不足,實驗課安排的實驗項目很難涵蓋課程的所有知識點。同時實驗內(nèi)容的設(shè)置,往往都是大量的驗證性實驗,缺乏對實際問題的解決,學(xué)生在實驗之后仍然不知道學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)在解決實際問題的時候能對編程有什么指導(dǎo)意義。
1.鞏固前導(dǎo)課程,培養(yǎng)學(xué)生興趣。針對學(xué)生前導(dǎo)課程學(xué)習(xí)不扎實的問題,在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時穿插復(fù)習(xí)前導(dǎo)課程的內(nèi)容,幫助學(xué)生鞏固程序設(shè)計基礎(chǔ)。數(shù)據(jù)結(jié)構(gòu)主要講授數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)以及不同存儲結(jié)構(gòu)下算法的實現(xiàn)。大量的算法都是由類 C或 C++編寫的。數(shù)據(jù)結(jié)構(gòu)的算法中經(jīng)常要用到指針、函數(shù)和結(jié)構(gòu)體這些知識點,而這些知識點卻都是C程序設(shè)計語言的難點,大多數(shù)學(xué)生在學(xué)習(xí)C語言時都沒很好的掌握,在講授數(shù)據(jù)結(jié)構(gòu)中的算法時,復(fù)習(xí) C語言中的相關(guān)知識點,有利于學(xué)生對算法的理解和應(yīng)用。教師在復(fù)習(xí)前導(dǎo)課程時不用面面俱到,只需要復(fù)習(xí)和數(shù)據(jù)結(jié)構(gòu)課程相關(guān)的內(nèi)容就可以了。復(fù)習(xí)了數(shù)據(jù)結(jié)構(gòu)中相關(guān)前導(dǎo)課程的知識點,鞏固了程序設(shè)計的基礎(chǔ),學(xué)生在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時就能較快理解大量的算法,有助于消除學(xué)生對數(shù)據(jù)結(jié)構(gòu)的恐懼感,培養(yǎng)學(xué)生學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的興趣。興趣是最好的老師,是學(xué)習(xí)的動力。學(xué)生有了興趣,學(xué)習(xí)就會由被動轉(zhuǎn)為主動,取得事半功倍的教學(xué)效果。
2.變“單向”的教學(xué)模式為“雙向”。增加課堂的互動環(huán)節(jié),使學(xué)生很好地參與到課堂教學(xué)中來。在傳統(tǒng)的教學(xué)模式中,一般以教師的講解為主,可適當(dāng)?shù)卦谡n堂上增加一些提問,如果這些問題難度適中的話,既可以增強(qiáng)學(xué)生們的自信心,又能激發(fā)他們的求知欲望[1]。另外,還可以課堂討論的方式,結(jié)合某種實際問題(如交通燈問題),從問題的分析入手,用數(shù)據(jù)結(jié)構(gòu)理論幫助解決問題,從而培養(yǎng)學(xué)生靈活運(yùn)用所學(xué)理論知識分析問題、解決問題的能力,提高他們思維的活躍性。同時以實例的方式使學(xué)生明白通過“數(shù)據(jù)結(jié)構(gòu)”課程的學(xué)習(xí),可以深入理解計算機(jī)軟硬件的理論基礎(chǔ),做到知其然更知其所以然,從而能夠更好地運(yùn)用計算機(jī)解決各種實際問題。
3.強(qiáng)化范例教學(xué)法在教學(xué)中的應(yīng)用。范例教學(xué)在數(shù)據(jù)結(jié)構(gòu)的算法思想講解中能發(fā)揮其無法比擬的優(yōu)勢。對數(shù)據(jù)結(jié)構(gòu)中的主要算法和一些抽象的概念,可以盡量先從直觀意義或具體實例解釋著手,通過多畫圖、多舉例讓學(xué)生更容易理解。這種從特殊到一般,從具體到抽象的方法在數(shù)據(jù)結(jié)構(gòu)中的很多內(nèi)容都可以這樣處理[2]。例如:講解隊列的概念時,可通過日常生活中的購物排隊的過程來反映隊列中插入、刪除的原則,再結(jié)合計算機(jī)中的操作隊列、打印隊列的應(yīng)用來闡明隊列先進(jìn)先出的特點。對二叉樹的遍歷的算法過程可通過一個特定的二叉樹的例子說明其遍歷思想,再推廣到一般的二叉樹的情況等等。
4.利用現(xiàn)代化多媒體技術(shù)進(jìn)行教學(xué)。數(shù)據(jù)結(jié)構(gòu)教學(xué)復(fù)雜和困難的一個主要因素是學(xué)生必須通過腦海中執(zhí)行靜態(tài)的程序代碼來了解數(shù)據(jù)結(jié)構(gòu)的動態(tài)變化,而這很難通過傳統(tǒng)的黑板加粉筆的教學(xué)模式予以實現(xiàn)。因此必須充分利用多媒體教學(xué)課件、算法動態(tài)演示系統(tǒng)等先進(jìn)教學(xué)手段,把多種媒體組合起來,以生動、形象、靈活、全方位、立體化的方式把知識呈現(xiàn)給學(xué)生。但是,另一方面,我們認(rèn)為在講授有關(guān)算法復(fù)雜度的推導(dǎo),尤其是遞歸函數(shù)的推導(dǎo)時,應(yīng)盡量使用傳統(tǒng)的板書教學(xué)模式,以方便學(xué)生掌握推導(dǎo)思想及推導(dǎo)過程??傊?現(xiàn)代化多媒體教學(xué)與傳統(tǒng)教學(xué)方式的綜合使用已成為深化教學(xué)改革的一種有效手段,在數(shù)據(jù)結(jié)構(gòu)的教學(xué)過程中應(yīng)予以充分利用。
5.加強(qiáng)實踐環(huán)節(jié),實施教學(xué)方法多樣化。加強(qiáng)實踐環(huán)節(jié)??梢酝ㄟ^三種實踐方式:一是做習(xí)題,二是上機(jī)實踐,三是課程設(shè)計。習(xí)題主要限于章節(jié)的內(nèi)容,使學(xué)生加深對各章節(jié)主要的理論、概念、方法、結(jié)構(gòu)等的理解。要學(xué)好“數(shù)據(jù)結(jié)構(gòu)”,只“看”不“練”肯定是不行的,習(xí)題的作用是極其重要的,學(xué)生不僅要做,而且要求交作業(yè),教師則要進(jìn)行全面檢查與批改,對出現(xiàn)的問題要及時進(jìn)行總結(jié)、歸納、講評。講評時要細(xì)講解題思路,規(guī)范解題方法,并強(qiáng)調(diào)有關(guān)的注意事項。
上機(jī)實踐則不僅能進(jìn)一步提高學(xué)生靈活運(yùn)用數(shù)據(jù)結(jié)構(gòu)的能力,而且使學(xué)生在編程、上機(jī)操作、程序調(diào)試與正確性驗證等基本技能方面受到嚴(yán)格的訓(xùn)練。在上機(jī)題的選擇上,要體現(xiàn)分析設(shè)計能力的培養(yǎng)。由于數(shù)據(jù)結(jié)構(gòu)課程不具有明顯的整體性,各種數(shù)據(jù)結(jié)構(gòu)之間相對獨立,所以首先要選擇一些單一數(shù)據(jù)結(jié)構(gòu)的上機(jī)題來進(jìn)行基本的訓(xùn)練,然后再選擇一些綜合運(yùn)用的上機(jī)題來進(jìn)行拓展訓(xùn)練。給學(xué)生布置的綜合運(yùn)用上機(jī)題不宜過細(xì),應(yīng)留有余地,并把握好難度,不要事先指定使用某種數(shù)據(jù)結(jié)構(gòu),而是要求學(xué)生從實際出發(fā),在具體、真實的環(huán)境中分析研究數(shù)據(jù)對象的特性,構(gòu)造合理的數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)的算法[3]。通過上機(jī)實踐,可以進(jìn)一步鍛煉學(xué)生的編程能力,要求學(xué)生編制的程序一定要有完整的數(shù)據(jù)結(jié)構(gòu)說明和注釋,要有容錯處理,要能正常運(yùn)行。上機(jī)結(jié)束后要求學(xué)生完成實習(xí)報告,寫出自己調(diào)試過程中遇到的問題是如何解決的以及對設(shè)計與實現(xiàn)的回顧討論和分析,算法的時空分析、測試結(jié)果,以及經(jīng)驗體會,并附上源程序代碼,從而寫出完整的實習(xí)報告。批改學(xué)生實習(xí)報告后,對學(xué)生的上機(jī)實習(xí)情況作及時總結(jié),指出成功之處和不足之處。
課程設(shè)計是培養(yǎng)實踐能力的重要環(huán)節(jié),只有認(rèn)真學(xué)習(xí),勤于實踐,并且理論聯(lián)系實踐,才能將所學(xué)知識和解決問題的能力融為一體。課程設(shè)計的題目選擇要結(jié)合實際,應(yīng)根據(jù)學(xué)生的實際能力和興趣安排課題,以學(xué)生經(jīng)過努力能完成課題為度,太難和太容易都不能達(dá)到預(yù)期的教學(xué)目標(biāo)。課程設(shè)計是以學(xué)生自主設(shè)計為主的教學(xué)過程,學(xué)生在設(shè)計過程中難免會遇到一些困難和問題,大多數(shù)學(xué)生正是在解決這些問題的過程中學(xué)習(xí)和積累能力的。指導(dǎo)教師應(yīng)及時而適度地指導(dǎo)以保證教果。由于專業(yè)課程的理論與技術(shù)往往表現(xiàn)出較強(qiáng)的綜合性、前沿性、探索性,是發(fā)展中的科學(xué)。通過課程設(shè)計讓學(xué)生撰寫自己的小論文或總結(jié)報告,使學(xué)生時刻跟蹤本課程的最新動態(tài)。
本文認(rèn)真研究和分析了數(shù)據(jù)結(jié)構(gòu)當(dāng)前的教學(xué)現(xiàn)狀,提出了數(shù)據(jù)結(jié)構(gòu)教學(xué)改革的具體方案。通過教學(xué)改革和教學(xué)實踐,提高學(xué)生的邏輯思維能力和數(shù)據(jù)抽象能力,掌握軟件設(shè)計領(lǐng)域科學(xué)的思維方式,提高設(shè)計高質(zhì)量程序的能力,奠定扎實的軟件開發(fā)基礎(chǔ)。
[1]黃翔.《教據(jù)結(jié)構(gòu)》教學(xué)改革探討 [J].福建電腦,2009, (7):29.
[2]梁娟,馬同偉.淺談數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)改革 [J].河南機(jī)電高等??茖W(xué)校學(xué)報,2008,(7):32.
[3]金萍,宗瑜.數(shù)據(jù)結(jié)構(gòu)教學(xué)改革初探[J].皖西學(xué)院學(xué)報, 2007,(4):26.
(責(zé)任編輯:侯秀梅)
G420
A
1001-7836(2010)05-0055-02
2010-03-11
紀(jì)穎 (1965-),女,黑龍江哈爾濱人,副教授,從事數(shù)據(jù)結(jié)構(gòu)及算法設(shè)計與分析研究;周欣 (1968-),女,黑龍江哈爾濱人,講師,從事網(wǎng)絡(luò)程序設(shè)計及網(wǎng)絡(luò)安全研究;劉彥君 (1964-),男,黑龍江肇源人,副教授,從事網(wǎng)絡(luò)程序設(shè)計及網(wǎng)絡(luò)安全研究。