葉振+李小波
摘要:數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)及相關(guān)專業(yè)的核心專業(yè)基礎(chǔ)課,在學(xué)生專業(yè)培養(yǎng)中占據(jù)非常重要的地位。然而,由于數(shù)據(jù)結(jié)構(gòu)課程本身的抽象性,部分教師的教學(xué)方法問(wèn)題以及學(xué)生對(duì)該課程重視程度和動(dòng)手實(shí)踐不足等原因,數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)效果一直不佳。該文對(duì)數(shù)據(jù)結(jié)構(gòu)課程特點(diǎn)以及當(dāng)前該課程教學(xué)存在的不足進(jìn)行了深入分析,并在此基礎(chǔ)上對(duì)如何在地方性院校上好數(shù)據(jù)結(jié)構(gòu)課程進(jìn)行了探索,在實(shí)際教學(xué)過(guò)程中采取了一系列相應(yīng)措施并取得了良好的教學(xué)效果。
關(guān)鍵詞: 數(shù)據(jù)結(jié)構(gòu);教學(xué)研究;地方院校;實(shí)踐
中圖分類號(hào):G64 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)26-0136-02
數(shù)據(jù)結(jié)構(gòu)課程是計(jì)算機(jī)科學(xué)與技術(shù),軟件工程,網(wǎng)絡(luò)工程及其他計(jì)算機(jī)類相關(guān)專業(yè)的核心專業(yè)基礎(chǔ)課程。在整個(gè)教學(xué)課程體系中起著承上啟下的作用,能否學(xué)好該課程,對(duì)學(xué)生的后續(xù)課程學(xué)習(xí),甚至是整個(gè)專業(yè)能力的培養(yǎng)有著至關(guān)重要的影響。
然而,由于數(shù)據(jù)結(jié)構(gòu)課程涉及知識(shí)較為抽象,并且需要大量的實(shí)踐,學(xué)生往往會(huì)產(chǎn)生畏懼心理,再加上部分學(xué)生對(duì)該課程的重要性認(rèn)識(shí)不足,如果采用傳統(tǒng)的講授式教學(xué),往往教學(xué)效果會(huì)不好。尤其是在地方性本科院校中,學(xué)生的基礎(chǔ)相對(duì)較為薄弱,理解能力,動(dòng)手能力及學(xué)習(xí)的主動(dòng)性和重點(diǎn)院校學(xué)生來(lái)說(shuō)相對(duì)較弱,因此更應(yīng)采取一系列的措施來(lái)增強(qiáng)該課程的教學(xué)效果。
1 數(shù)據(jù)結(jié)構(gòu)課程的特點(diǎn)
數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ),組織數(shù)據(jù)的方式,而《數(shù)據(jù)結(jié)構(gòu)》課程主要就是介紹常用的數(shù)據(jù)結(jié)構(gòu)以及一些基本算法的課程[1],該課程具有如下特點(diǎn):
1.1 內(nèi)容抽象,實(shí)踐要求高
數(shù)據(jù)結(jié)構(gòu)所教授的對(duì)象都是抽象的概念和結(jié)構(gòu),這些不同的結(jié)構(gòu)負(fù)責(zé)將數(shù)據(jù)和數(shù)據(jù)以一定的方式組合起來(lái)并支持相應(yīng)的操作。和其他課程不同,數(shù)據(jù)結(jié)構(gòu)并沒(méi)有對(duì)應(yīng)的實(shí)體,觸摸不到,只能通過(guò)抽象的邏輯思維去理解,因此掌握起來(lái)具有一定的難度。
此外數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)目的其實(shí)分為兩個(gè)層次,一是使學(xué)生能理解相應(yīng)的數(shù)據(jù)結(jié)構(gòu)的概念和操作,能用算法將這些操作描述出來(lái);二是在理解的基礎(chǔ)上能用具體的編程語(yǔ)言完整正確的實(shí)現(xiàn)這些數(shù)據(jù)結(jié)構(gòu)。因此除了理解本身外,還要有很強(qiáng)的動(dòng)手實(shí)踐能力。而這個(gè)實(shí)踐能力的教學(xué)目的能否達(dá)到很大程度上取決于學(xué)生在相關(guān)的前導(dǎo)語(yǔ)言課程掌握的程度。
1.2 是后繼課程學(xué)習(xí)和將來(lái)專業(yè)工作的基礎(chǔ)
數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)專業(yè)很多后繼核心課程的基礎(chǔ),如操作系統(tǒng),數(shù)據(jù)庫(kù),計(jì)算機(jī)網(wǎng)絡(luò)等課程,其實(shí)現(xiàn)都用到了很多數(shù)據(jù)結(jié)構(gòu)知識(shí),如學(xué)生不能很好掌握數(shù)據(jù)結(jié)構(gòu),將嚴(yán)重影響到后繼核心專業(yè)課程的學(xué)習(xí)。同時(shí),如果學(xué)生將來(lái)從事計(jì)算機(jī)編程相關(guān)工作,更是離不開(kāi)和數(shù)據(jù)結(jié)構(gòu)打交道。因此數(shù)據(jù)結(jié)構(gòu)課程在整個(gè)課程體系及學(xué)生的職業(yè)生涯中都非常重要。
2數(shù)據(jù)結(jié)構(gòu)教學(xué)效果不佳的原因分析
根據(jù)多年來(lái)的學(xué)生反饋,數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)效果一直不佳,學(xué)生普遍感覺(jué)學(xué)習(xí)該課程難度較大,缺乏興趣,不會(huì)實(shí)踐[4,5]。經(jīng)過(guò)認(rèn)真分析,本文認(rèn)為存在此現(xiàn)象的原因主要包括:
2.1 教材及課程內(nèi)容設(shè)置不當(dāng)
當(dāng)前數(shù)據(jù)結(jié)構(gòu)采用的教材多為名校教師所編,而該教材中的內(nèi)容及教材對(duì)應(yīng)的教學(xué)進(jìn)度基本針對(duì)的是名校學(xué)生,對(duì)于地方性普通本科院校學(xué)生來(lái)說(shuō),由于基礎(chǔ)相對(duì)較差,理解力和學(xué)習(xí)主動(dòng)性也往往不如重點(diǎn)高校的學(xué)生,因此如果直接采用此類教材并且按照該教材建議的教授內(nèi)容和進(jìn)度進(jìn)行講授,學(xué)生往往會(huì)感覺(jué)部分內(nèi)容偏難并且無(wú)法跟上進(jìn)度。
2.2 課程本身較為抽象導(dǎo)致難以理解
正如本文第一節(jié)指出的,數(shù)據(jù)結(jié)構(gòu)課程的特點(diǎn)之一就是所學(xué)內(nèi)容較為抽象,不易理解。特別是涉及樹(shù),圖等較為復(fù)雜的數(shù)據(jù)結(jié)構(gòu),以及遞歸,動(dòng)態(tài)規(guī)劃等一些相對(duì)復(fù)雜的算法,學(xué)生很難在一時(shí)半會(huì)理解透徹。此外,很多算法涉及邊界條件的判別,異常情況的考慮以及其他很多細(xì)節(jié)處理,想要完整正確的理解此類算法,需要很強(qiáng)的邏輯思維能力,學(xué)生往往對(duì)此深感頭疼。
2.3 前導(dǎo)語(yǔ)言課程掌握不好
數(shù)據(jù)結(jié)構(gòu)本身雖然可以用偽代碼進(jìn)行描述,和具體的編程語(yǔ)言無(wú)關(guān)。然而,要想真正透徹掌握內(nèi)容,必須使用某種語(yǔ)言進(jìn)行實(shí)踐。目前高校計(jì)算機(jī)類專業(yè)開(kāi)設(shè)的第一門計(jì)算機(jī)語(yǔ)言課程基本上都是C語(yǔ)言,C語(yǔ)言細(xì)節(jié)繁多,學(xué)習(xí)門檻較高,一個(gè)學(xué)期的學(xué)習(xí)完成之后,學(xué)生往往不能很好的掌握其內(nèi)容,尤其是指針的操作,而此部分在數(shù)據(jù)結(jié)構(gòu)的C語(yǔ)言實(shí)現(xiàn)過(guò)程當(dāng)中恰恰是最重要的部分?;A(chǔ)語(yǔ)言能力的薄弱,導(dǎo)致學(xué)生即使在課堂上理解了老師所上內(nèi)容,由于無(wú)法及時(shí)對(duì)所學(xué)數(shù)據(jù)結(jié)構(gòu)進(jìn)行上機(jī)實(shí)踐,又會(huì)很快忘記相關(guān)知識(shí),從而在很大程度上影響了整體的學(xué)習(xí)效果。
2.4 部分學(xué)生對(duì)該課程重要性認(rèn)識(shí)不足
盡管很多老師在課程一開(kāi)始就強(qiáng)調(diào)數(shù)據(jù)結(jié)構(gòu)課程在整個(gè)計(jì)算機(jī)相關(guān)的專業(yè)培養(yǎng)中的重要地位,然而還是有很多學(xué)生對(duì)該課程的重要性缺乏必要認(rèn)識(shí),沒(méi)引起足夠的重視,不愿投入更多的精力,花更多的時(shí)間學(xué)習(xí)和實(shí)踐。而要想學(xué)好數(shù)據(jù)結(jié)構(gòu)課程,唯一的途徑是花更多的時(shí)間去學(xué)習(xí),實(shí)踐,沒(méi)有其他捷徑。很多同學(xué)都是在學(xué)習(xí)后繼的專業(yè)課程,如操作系統(tǒng),數(shù)據(jù)庫(kù)時(shí),甚至在日后工作要用到時(shí)才明白數(shù)據(jù)結(jié)構(gòu)的重要性,在那個(gè)時(shí)候再回過(guò)頭去重新學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)相關(guān)的知識(shí)。
3 采取措施辦法
由于數(shù)據(jù)結(jié)構(gòu)課程以往的教學(xué)效果不佳,本文在對(duì)造成此現(xiàn)象的原因進(jìn)行了細(xì)致分析后,有針對(duì)性的采取了若干辦法進(jìn)行改進(jìn),并取得了較好的效果。
3.1 解決前導(dǎo)語(yǔ)言課程的造成的障礙
由于數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)和學(xué)生對(duì)所用語(yǔ)言的掌握程度密切相關(guān),在教授該課程錢,本人和前導(dǎo)語(yǔ)言課程的相關(guān)老師和學(xué)生進(jìn)行了密切溝通,請(qǐng)相應(yīng)老師在講授指針及其他和數(shù)據(jù)結(jié)構(gòu)相關(guān)知識(shí)時(shí)進(jìn)行重點(diǎn)強(qiáng)調(diào),并在此時(shí)就提醒學(xué)生該部分內(nèi)容對(duì)數(shù)據(jù)結(jié)構(gòu)以及再后續(xù)課程的密切關(guān)系,讓學(xué)生在此刻就引起重視并花更多的精力掌握好相關(guān)知識(shí)。此外,在數(shù)據(jù)結(jié)構(gòu)課程開(kāi)始階段對(duì)C語(yǔ)言中的重點(diǎn)內(nèi)容,包括指針,結(jié)構(gòu)體,傳值傳引用等和數(shù)據(jù)結(jié)構(gòu)密切相關(guān)的概念進(jìn)行復(fù)習(xí),安排相應(yīng)的預(yù)備實(shí)驗(yàn),幫助學(xué)生鞏固C語(yǔ)言知識(shí),避免因?yàn)榫幊陶Z(yǔ)言本身的障礙導(dǎo)致的學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課程困難的情況。
3.2 采用各種方法對(duì)數(shù)據(jù)結(jié)構(gòu)的操作和算法進(jìn)行演示
為了讓學(xué)生更加直觀的理解數(shù)據(jù)結(jié)構(gòu),在教授相關(guān)的知識(shí)時(shí),除了用課件進(jìn)行講授外,還特意準(zhǔn)備了一些演示軟件對(duì)相關(guān)代碼進(jìn)行演示。對(duì)于每段代碼,使用此類演示軟件時(shí)學(xué)生都可以輸入一些例子,并且對(duì)代碼進(jìn)行單行執(zhí)行及設(shè)置斷點(diǎn)執(zhí)行,執(zhí)行的過(guò)程中可以隨時(shí)看到各變量的值以及當(dāng)前執(zhí)行的各種環(huán)境。
此外,還充分利用各種互聯(lián)網(wǎng)上的相關(guān)資源進(jìn)行教學(xué)演示,如發(fā)現(xiàn)一個(gè)網(wǎng)上使用舞蹈的例子來(lái)演示各種排序算法的運(yùn)行過(guò)程后[2](如圖1所示),就將其引入課堂教學(xué)中,學(xué)生普遍反映效果較好。
圖1 使用舞蹈模擬各種排序算法的運(yùn)行過(guò)程
3.3 將不同數(shù)據(jù)結(jié)構(gòu)及相同數(shù)據(jù)結(jié)構(gòu)的不同實(shí)現(xiàn)進(jìn)行聯(lián)系對(duì)比學(xué)習(xí)
由于數(shù)據(jù)結(jié)構(gòu)種類較多,而且同一個(gè)數(shù)據(jù)結(jié)構(gòu)可能還有不同的實(shí)現(xiàn)方式,如果只是單獨(dú)的講解該數(shù)據(jù)結(jié)構(gòu)學(xué)生對(duì)其特點(diǎn)和應(yīng)用場(chǎng)景很難有直觀的認(rèn)識(shí),在以后遇到問(wèn)題時(shí)也無(wú)法進(jìn)行靈活應(yīng)用。因此,在教學(xué)的時(shí)候,盡可能地對(duì)不同的數(shù)據(jù)進(jìn)行聯(lián)系類比,讓學(xué)生對(duì)各個(gè)數(shù)據(jù)結(jié)構(gòu)以及同一數(shù)據(jù)結(jié)構(gòu)的不同實(shí)現(xiàn)方式的特點(diǎn)都有所了解,在遇到某個(gè)具體問(wèn)題時(shí),能根據(jù)該問(wèn)題的需求合理地選擇恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)方式,從而能以最高效率來(lái)解決該問(wèn)題。
3.4 按內(nèi)容難易和重要程度劃分不同層次
由于不同學(xué)生在專業(yè)基礎(chǔ)和學(xué)習(xí)意愿等方面都存在差異,因此采取粗粒度的個(gè)性化教學(xué)方式,在符合課程大綱的前提下,將知識(shí)內(nèi)容根據(jù)重要程度和難易分成兩部分。對(duì)于重要的內(nèi)容以及相對(duì)容易的內(nèi)容,要求全體學(xué)生都要掌握,對(duì)于部分確實(shí)較難的內(nèi)容,鼓勵(lì)部分學(xué)有余力又感興趣的同學(xué)進(jìn)行學(xué)習(xí),并提供指導(dǎo)。這種分層次的教學(xué)方式,同時(shí)兼顧了落后學(xué)生和學(xué)有余力的學(xué)生,避免基礎(chǔ)差的學(xué)生學(xué)不懂,以及基礎(chǔ)好的學(xué)生吃不飽的情況。
3.5 充分調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性和主觀能動(dòng)性
在教學(xué)過(guò)程中時(shí)刻注意充分調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性和主動(dòng)性。如,在期末試卷的題目來(lái)源中,部分題目可以采用學(xué)生提供題庫(kù)的方式,讓所有學(xué)生都提供若干道題目并給出參考答案和評(píng)分標(biāo)準(zhǔn)。學(xué)生在出題過(guò)程以及在思考答案的過(guò)程中就發(fā)揮了其主觀能動(dòng)性。
3.6 強(qiáng)化實(shí)踐訓(xùn)練
學(xué)好數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵在于進(jìn)行大量的實(shí)踐。為了達(dá)成這個(gè)目的,在課程教學(xué)過(guò)程中大量增加了實(shí)踐環(huán)節(jié)。改變以往紙質(zhì)作業(yè),采用在線練習(xí)系統(tǒng)來(lái)進(jìn)行作業(yè)[3],每章學(xué)習(xí)完成后學(xué)生在線上提交代碼來(lái)完成作業(yè),提交后系統(tǒng)自動(dòng)判別該程序是否正確,并判定是否有抄襲情況。課程配套了大量的實(shí)驗(yàn)課時(shí),每講完一個(gè)數(shù)據(jù)結(jié)構(gòu),都有相應(yīng)的上機(jī)實(shí)驗(yàn)課,課上要求學(xué)生完成相應(yīng)的代碼閱讀,修改,編碼等任務(wù)并上交實(shí)驗(yàn)報(bào)告。此外,在數(shù)據(jù)結(jié)構(gòu)課程之外,還專門開(kāi)設(shè)了一門數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)課程,讓學(xué)生能更加充分的得到實(shí)踐鍛煉。
3.7 更直觀的讓學(xué)生認(rèn)識(shí)該課程的重要性
為了讓學(xué)生更加直觀地認(rèn)識(shí)到數(shù)據(jù)結(jié)構(gòu)課程的重要性,在課程教學(xué)過(guò)程中邀請(qǐng)企業(yè)負(fù)責(zé)招聘的技術(shù)管理人員來(lái)講解程序員相關(guān)職位面試流程及涉及數(shù)據(jù)結(jié)構(gòu)和算法的知識(shí),讓學(xué)生知道即使從最現(xiàn)實(shí)地找到好工作的角度考慮,學(xué)好數(shù)據(jù)結(jié)構(gòu)也是非常重要的。
4 結(jié)語(yǔ)
本文在對(duì)地方性本科院校的數(shù)據(jù)結(jié)構(gòu)教學(xué)效果不佳的原因進(jìn)行細(xì)致分析的基礎(chǔ)上,結(jié)合平時(shí)的課堂教學(xué)經(jīng)驗(yàn),提出了一系列可以采取的措施來(lái)幫助學(xué)生提高該課程的學(xué)習(xí)效果,為其后續(xù)專業(yè)課程及未來(lái)的職業(yè)能力奠定堅(jiān)實(shí)的基礎(chǔ)。
參考文獻(xiàn):
[1] 嚴(yán)蔚敏. 數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版[M]. 清華大學(xué)出版社,2007.
[2] 舞動(dòng)的排序算法. http://v.youku.com/v_show/id_XMjU4MTg3MTU2.html.
[3] 麗水學(xué)院在線聯(lián)系和考試系統(tǒng). http://acm.lsu.edu.cn.
[4] 范德寶, 于曉聰, 丁偉祥. 提高數(shù)據(jù)結(jié)構(gòu)課程教學(xué)效果的探討[J]. 黑龍江科技信息,2007.
[5] 董麗薇. “數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)方法的改進(jìn)[J]. 沈陽(yáng)師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2012.