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