摘要:數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)專(zhuān)業(yè)的基礎(chǔ)課,同時(shí)也是考研的專(zhuān)業(yè)課,占據(jù)著非常重要的地位。本文針對(duì)筆者在數(shù)據(jù)結(jié)構(gòu)教學(xué)過(guò)程中所發(fā)現(xiàn)的師生精力投入與學(xué)習(xí)效果不成比例,學(xué)生不能用所學(xué)知識(shí)很好地解決現(xiàn)實(shí)問(wèn)題的現(xiàn)象,在分析原因的基礎(chǔ)上,提出一些教學(xué)改革措施。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);教學(xué)問(wèn)題;改革
數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)重要的專(zhuān)業(yè)基礎(chǔ)課,不僅在計(jì)算機(jī)專(zhuān)業(yè)有著重要的地位,在整個(gè)電子與信息領(lǐng)域都是重要的基礎(chǔ)課。學(xué)生通過(guò)數(shù)據(jù)結(jié)構(gòu)課程的學(xué)習(xí)可以掌握客觀事物在計(jì)算機(jī)內(nèi)部的表示方法,也能具備設(shè)計(jì)算法、分析算法好壞的能力,從而不僅能夠具有動(dòng)手能力,也掌握科學(xué)研究的基本功。因此,各高校都非常重視數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)工作,這也是目前計(jì)算機(jī)教育改革的重點(diǎn)和熱點(diǎn)。
1 教學(xué)中遇到的問(wèn)題及其原因
數(shù)據(jù)結(jié)構(gòu)課程的基礎(chǔ)性及其在考研科目中占據(jù)的比例,使得學(xué)生都能夠充分對(duì)待本課程,也愿意花費(fèi)精力與時(shí)間來(lái)學(xué)好本課程,但由于該課程的抽象性等原因,學(xué)習(xí)效果并不理想,學(xué)生學(xué)習(xí)的效果與投入并不成正比。學(xué)生普遍反映的問(wèn)題是:課堂上聽(tīng)老師講解覺(jué)得很好理解,但是讓他們自己動(dòng)手設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)及其算法來(lái)解決實(shí)際問(wèn)題時(shí)就感覺(jué)力不從心了。也有些同學(xué)覺(jué)得數(shù)據(jù)結(jié)構(gòu)理論性太強(qiáng),過(guò)于抽象,在實(shí)際的應(yīng)用中很難抽象出各種抽象數(shù)據(jù)類(lèi)型。當(dāng)老師重新講解后又發(fā)出題目并不難的感慨,即常說(shuō)的眼高手低。另外一個(gè)常見(jiàn)的現(xiàn)象就是只知道本課程很重要,不知道重要在什么地方,與實(shí)際生活相脫節(jié),不能用之來(lái)指導(dǎo)解決實(shí)際問(wèn)題。針對(duì)這些現(xiàn)象,筆者歸納了一些原因如下。
1)課程本身難度較大。
數(shù)據(jù)結(jié)構(gòu)課程本身是一門(mén)抽象程度較高的課程,對(duì)于缺乏實(shí)際應(yīng)用經(jīng)驗(yàn)的學(xué)生來(lái)說(shuō),理解起來(lái)具有一定的難度。不少同學(xué)反映學(xué)完該課程之后不知道能用在什么地方、能夠解決什么問(wèn)題,即使教材上所講內(nèi)容都完全掌握,仍然無(wú)法應(yīng)用到實(shí)際問(wèn)題當(dāng)中,除了課堂上講的例子外,找不出該知識(shí)點(diǎn)的其他應(yīng)用,同時(shí)遇到實(shí)際問(wèn)題時(shí),也想不出該問(wèn)題的抽象數(shù)據(jù)類(lèi)型。
2)編程能力較差。
C/C++程序設(shè)計(jì)語(yǔ)言是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課程的重要基礎(chǔ),無(wú)論對(duì)于學(xué)習(xí)該課程還是應(yīng)用該課程的知識(shí)解決實(shí)際問(wèn)題都是非常重要的前提條件,但不少學(xué)生對(duì)于程序設(shè)計(jì)語(yǔ)言的掌握不能滿(mǎn)足數(shù)據(jù)結(jié)構(gòu)課程的需要,無(wú)法理解課堂上講的例題和思路,更無(wú)法進(jìn)行算法分析、比較算法性能,成為影響學(xué)生學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課程的一個(gè)因素。
3)學(xué)生缺乏主動(dòng)思考。
由于老師的強(qiáng)調(diào)和考驗(yàn)課程的性質(zhì),學(xué)生大多明白本課程的重要性,因此學(xué)生的學(xué)習(xí)興趣較高,但長(zhǎng)期以來(lái)的學(xué)習(xí)方式和教學(xué)模式讓學(xué)生在學(xué)習(xí)過(guò)程中缺乏獨(dú)立思考的主動(dòng)性,隨著課程的深入,學(xué)生容易對(duì)課程學(xué)習(xí)的意義產(chǎn)生懷疑,失去學(xué)習(xí)的興趣和主動(dòng)性。如何在整個(gè)教學(xué)過(guò)程中保持學(xué)生的學(xué)習(xí)興趣也是一個(gè)決定教學(xué)效果的關(guān)鍵因素。
2 教學(xué)中采取的措施
明白了產(chǎn)生問(wèn)題的原因之后,通過(guò)與其他老師的交流和討論,筆者在教學(xué)中采取了一系列的改革措施,并在課程教學(xué)實(shí)踐中取得了很好的教學(xué)效果,主要在如下5個(gè)方面進(jìn)行了改革。
2.1 逐步引導(dǎo)
針對(duì)數(shù)據(jù)結(jié)構(gòu)課程較為抽象和學(xué)生理解起來(lái)比較吃力的特點(diǎn),筆者在講解每個(gè)知識(shí)點(diǎn)的時(shí)候先從直觀的例子引入,然后與學(xué)生討論解決方法。通常情況下,學(xué)生提出的解決方法多數(shù)都存在問(wèn)題,或者是解決方法上存在缺陷,或者是算法的執(zhí)行效率上不夠完善。針對(duì)學(xué)生的方案分析不足之處,教師逐步引導(dǎo)其正確的解決方法,從而引入相關(guān)知識(shí)點(diǎn)。
例如在講授“?!边@一知識(shí)點(diǎn)的時(shí)候,結(jié)合筆者的研究方向,先給學(xué)生介紹移動(dòng)機(jī)器人未知環(huán)境下路徑規(guī)劃的方法,機(jī)器人在向著目標(biāo)位置運(yùn)動(dòng)過(guò)程中,發(fā)現(xiàn)障礙物之后,會(huì)采取避障行為,向著繞開(kāi)障礙物的局部目標(biāo)位置運(yùn)動(dòng),避開(kāi)障礙物之后再向下一目標(biāo)運(yùn)動(dòng)。由開(kāi)始的一個(gè)全局目標(biāo)到避障時(shí)逐步增加的局部目標(biāo),再到避開(kāi)障礙物之后的一個(gè)全局目標(biāo),如何保存運(yùn)動(dòng)過(guò)程中的目標(biāo)和相應(yīng)的順序?筆者讓學(xué)生展開(kāi)討論。不少學(xué)生提出采用數(shù)組加一個(gè)表示數(shù)組長(zhǎng)度的變量來(lái)解決該問(wèn)題,自然而然的引入“?!钡母拍?。這種方法能夠積極調(diào)動(dòng)學(xué)生的積極性和參與欲望,同時(shí)也給他們指出思維方式的不足,并且很自然地將相關(guān)知識(shí)點(diǎn)的適用范圍、解決問(wèn)題的方式和優(yōu)點(diǎn)在討論中與學(xué)生一起歸納出來(lái),這樣學(xué)生自然就能牢牢掌握。逐步引導(dǎo)的方法雖然在每個(gè)知識(shí)點(diǎn)引入的時(shí)候花費(fèi)的課時(shí)比較多,但后面的講解將會(huì)很流暢,節(jié)省不少課時(shí),因此課程進(jìn)度仍然能夠與進(jìn)度計(jì)劃保持一致。
2.2 加強(qiáng)實(shí)踐教學(xué)環(huán)節(jié)
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的最終目的是為了提高應(yīng)用計(jì)算機(jī)解決問(wèn)題的能力,培養(yǎng)并提高學(xué)生的實(shí)踐能力是其教學(xué)重點(diǎn)之一。在教學(xué)實(shí)踐中,學(xué)生普遍反映課堂上能夠理解講授的知識(shí)點(diǎn),但只要一動(dòng)手實(shí)踐就糊涂。學(xué)生在實(shí)踐環(huán)節(jié)上的失敗,反過(guò)來(lái)又會(huì)影響其對(duì)理論知識(shí)的掌握,打擊學(xué)習(xí)的興趣和主動(dòng)性。因此,我們?cè)趯W(xué)生掌握基本理論的基礎(chǔ)上,要求和鼓勵(lì)學(xué)生進(jìn)行一些實(shí)踐工作,重視實(shí)踐在教學(xué)中的作用。
現(xiàn)在多數(shù)課堂或課后的習(xí)題都是抽象之后的練習(xí),即規(guī)定了學(xué)生采用什么樣的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)和解決問(wèn)題的方法,只是鍛煉學(xué)生的算法實(shí)現(xiàn)的能力,在考試當(dāng)中也是如此,無(wú)論是期末考試還是考研入學(xué)考試,都明確規(guī)定了題目要采用的方法,這樣雖然對(duì)于批改卷子和對(duì)知識(shí)點(diǎn)細(xì)節(jié)的評(píng)判較為有利,但忽略了對(duì)學(xué)生解決實(shí)際問(wèn)題能力的培養(yǎng)和考評(píng)。在該模式下培養(yǎng)的學(xué)生遇到實(shí)際問(wèn)題不知道該采用哪些知識(shí)點(diǎn)解決問(wèn)題,這樣培養(yǎng)出來(lái)的學(xué)生“只見(jiàn)樹(shù)木,不見(jiàn)森林”,無(wú)法獨(dú)立解決實(shí)際問(wèn)題。
因此,在考評(píng)機(jī)制上我們逐步加大對(duì)分析問(wèn)題和抽象能力的考核??碱}不再規(guī)定使用什么樣的存儲(chǔ)結(jié)構(gòu),解決問(wèn)題也不再指定采用什么算法,只要能夠解決問(wèn)題即可。通過(guò)這種方式,學(xué)生不僅能夠充分發(fā)揮主觀能動(dòng)性,抽象問(wèn)題的能力得到充分展現(xiàn),而且有可能給出的解決方式比標(biāo)準(zhǔn)答案更加優(yōu)化,使學(xué)生的能力得到充分鍛煉。
2.3 擴(kuò)展問(wèn)題,增加學(xué)生主動(dòng)性
針對(duì)學(xué)生主動(dòng)性不夠的問(wèn)題,我們對(duì)課堂上講述的知識(shí)點(diǎn)提出新的要求和限制條件,要求學(xué)生課下擴(kuò)展新的功能。如在“棧的應(yīng)用”章節(jié)講到迷宮求解問(wèn)題,利用教材上所述算法可以解決迷宮問(wèn)題。我們可以提出新的要求讓學(xué)生解決,如教材給出的算法只能保證求出可行解,不能保證最短路徑,可以要求學(xué)生求解最優(yōu)路徑;或者對(duì)迷宮設(shè)置多個(gè)出口,要求求出最近出口或到達(dá)所有出口的路徑等,這樣就可以與“樹(shù)”的章節(jié)結(jié)合起來(lái),極大提高學(xué)生的主動(dòng)性。
2.4 擴(kuò)展最新應(yīng)用
在講課過(guò)程中,學(xué)生對(duì)學(xué)科的最近進(jìn)展和最新應(yīng)用都非常感興趣,或者對(duì)身邊經(jīng)常接觸的案例興趣很高。比如在講迪杰斯特拉算法時(shí),可以進(jìn)一步擴(kuò)展到A*算法,并講到在經(jīng)典游戲“紅色警戒”中的應(yīng)用。從游戲中士兵或戰(zhàn)車(chē)的自動(dòng)路徑規(guī)劃引入,指明目標(biāo)位置之后,游戲中的戰(zhàn)車(chē)都能夠按照最優(yōu)路徑前進(jìn),從而引入迪杰斯特拉算法和A*算法,學(xué)生對(duì)游戲中采用的技術(shù)和算法非常感興趣,從而達(dá)到很好的教學(xué)效果。甚至能夠主動(dòng)提出問(wèn)題,結(jié)合游戲擴(kuò)展到動(dòng)態(tài)環(huán)境的路徑規(guī)劃,超出了預(yù)計(jì)的教學(xué)效果。
2.5 改進(jìn)教學(xué)方法
雖然現(xiàn)在講課都已經(jīng)采用了多媒體教學(xué),但是并沒(méi)有很好的發(fā)揮多媒體的作用,很多情況下只是把原來(lái)板書(shū)的內(nèi)容照抄到PPT上,沒(méi)有起到交互式和動(dòng)畫(huà)教學(xué)的目的。因此學(xué)生對(duì)于一些細(xì)節(jié)的理解會(huì)受到一定的影響。針對(duì)該問(wèn)題,我們重新設(shè)計(jì)了授課PPT,將細(xì)節(jié)的變化過(guò)程一一展示,如講授遞歸調(diào)用時(shí),隨著每行代碼的執(zhí)行和棧的每一次入棧、出棧等操作,棧內(nèi)數(shù)據(jù)的變化逐步展現(xiàn)在學(xué)生面前,對(duì)于學(xué)生理解具有很好的幫助作用。
3 進(jìn)一步改革的設(shè)想
教學(xué)改革的目的是使得學(xué)生更好的掌握本門(mén)課程,數(shù)據(jù)結(jié)構(gòu)是一門(mén)實(shí)踐性非常強(qiáng)的課程,僅僅依靠課堂上的時(shí)間是遠(yuǎn)遠(yuǎn)不夠的。因此除了課內(nèi)安排的實(shí)驗(yàn)和課外實(shí)驗(yàn),可以結(jié)合本課程給學(xué)生安排或選做一些綜合性的實(shí)驗(yàn),能夠用到跨章節(jié)的知識(shí)點(diǎn),甚至是跨課程的實(shí)驗(yàn)。
從下學(xué)期開(kāi)始,我們也將嘗試給學(xué)生安排針對(duì)性和綜合性較強(qiáng)的課程設(shè)計(jì),只給學(xué)生提課程設(shè)計(jì)的問(wèn)題和要求,采取什么樣的數(shù)據(jù)結(jié)構(gòu)和算法完全由學(xué)生自行設(shè)計(jì)、自主實(shí)現(xiàn),完全發(fā)揮學(xué)生的主動(dòng)性,相信學(xué)生經(jīng)過(guò)大量解決實(shí)際問(wèn)題的鍛煉,必定能夠更好的掌握數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。
4 結(jié)語(yǔ)
54e879392a26e83bbca3856d7caba31d24ba8b3461bfea699c2f442def3271d4
本文針對(duì)在數(shù)據(jù)結(jié)構(gòu)教學(xué)過(guò)程中所發(fā)現(xiàn)的問(wèn)題進(jìn)行討論和改革,提出了5個(gè)方面的改革措施并將之在教學(xué)中應(yīng)用,實(shí)踐證明該措施取得了良好的教學(xué)效果,筆者對(duì)進(jìn)一步的改革提出了一些建議,希望能夠更好地提高教學(xué)效果。
參考文獻(xiàn):
[1]葉雙,吳清江,緱錦,等.提高“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)效果的方法初探[J].計(jì)算機(jī)教育,2009(11):90-92.
[2]王曉東,吳英杰,余春燕,等.算法與數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)興趣影響因素分析[J].計(jì)算機(jī)教育,2010(6):73-76.
[3]孫岐峰.“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)反思與改革[J].計(jì)算機(jī)教育,2009(11):66-68.
[4]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M].北京:清華大學(xué)出版社,2007:50-52.
(編輯:姚彥