劉 丹
(長春理工大學計算機科學技術(shù)學院,長春 130022)
《數(shù)據(jù)結(jié)構(gòu)與算法》是計算機科學與技術(shù)專業(yè)最重要的一門專業(yè)基礎(chǔ)課,數(shù)據(jù)的組織結(jié)構(gòu)以及對這些結(jié)構(gòu)化數(shù)據(jù)操作的實現(xiàn)是這門學科所關(guān)心的核心問題。通過對《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程的學習,學生們能夠理解各種數(shù)據(jù)對象的特點,增強邏輯思維和分析問題、解決問題的能力,進一步提高程序設(shè)計和軟件開發(fā)的能力,同時也將為計算機專業(yè)后續(xù)課程打下堅實的基礎(chǔ)。因此,數(shù)據(jù)結(jié)構(gòu)課程在本專業(yè)學生的培養(yǎng)過程中具有舉足輕重的作用[1-3]。
《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程不僅僅是計算機專業(yè)基礎(chǔ)課,也是部分非計算機專業(yè)的必修或選修課程,本門課程的開課主要目的是為培養(yǎng)學生們?nèi)绾芜\用計算機解決實際問題,提供出堅實的理論基礎(chǔ)。這門課程具有邏輯性較強、抽象性較高的特點,正是由于這些特點常常會造成學生難于理解、運用[4-5]。如何完成教學任務、達到教學目的、實現(xiàn)教學目標、提高教學質(zhì)量,一直是一個嚴峻的問題!在實際教學過程中,時常會發(fā)現(xiàn)學生們感覺到這門課程枯燥、不容易掌握;學習起來較吃力,解決實際問題能力差;在從事軟件開發(fā)時,靈活應用能力弱等問題。
在《數(shù)據(jù)結(jié)構(gòu)與算法》這門計算機專業(yè)基礎(chǔ)課程中,涉及到多種計算機程序設(shè)計中經(jīng)常用到的線性表、棧、隊列、串、數(shù)組、廣義表、樹、二叉樹、圖等數(shù)據(jù)結(jié)構(gòu),知識點多,運用靈活。在學習過程中,對于老師們的授課內(nèi)容,多數(shù)學生不能及時有效地復習鞏固,就勢必會造成前面的知識還沒有完全理解掌握、靈活運用實踐,新的知識又接踵而至,造成問題堆積。在這樣的情況下,經(jīng)常會出現(xiàn)“聽課不易,實踐更難”的情況。
《數(shù)據(jù)結(jié)構(gòu)與算法》是一門實踐性很強的計算機專業(yè)基礎(chǔ)課程,在這門課程中涉及的主要算法,都基本上要在先修課程的基礎(chǔ)上理解完成。這也就要求學生應具備一定的編程能力基礎(chǔ),要求學生能夠駕馭某種程序設(shè)計語言來實現(xiàn)課程中涉及到的算法。學生們具備一定的動手能力,對算法的理解是十分有幫助。只有通過實踐過程,學生們才能更好理解和掌握所學的理論知識。在實驗課上,經(jīng)常會出現(xiàn)這樣的情況,很多學生能夠設(shè)計出實驗題目所要求的算法,但是卻無法用程序設(shè)計語言順利表現(xiàn)出來;即使能編寫出相應程序段,在編譯調(diào)試階段,往往也會錯誤百出,造成學生們失去信心、喪失學習樂趣。
由于《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程章節(jié)內(nèi)容之間有著相互關(guān)聯(lián)遞進關(guān)系,所以在每章實驗題目內(nèi)容上同樣的有著遞進關(guān)系。前面章節(jié)的實驗內(nèi)容,如果學生們完成得不好,新的實驗任務又布置下來,這樣很容易造成舊的問題沒解決,新的問題又來了,日積月累會造成學生“無從下手,不想下手”的局面。
在平時布置實驗題目任務的時候,由于受到課程理論授課內(nèi)容的限制,所以同一章節(jié)的實驗題目內(nèi)容對于每個學生都是相同的。這就為有些學生提供“方便條件”,使他們找到了完成實驗任務的“捷徑”,自己不用動腦思考問題、解決問題,而直接修改他人編寫設(shè)計的程序,更有甚者則直接復制他人設(shè)計的程序。這樣的做法,雖然學生們能“輕松”順利地通過實驗程序驗收,得到相應的成績,但是卻無法真正使學生們提高解決實際問題的能力。
針對學生們無法及時消化教師授課內(nèi)容,無法將所學到的理論知識運用到解決實際問題當中去的情況,在階段授課之后,增加階段測試和知識回顧兩個學習環(huán)節(jié)。階段測試,主要目的是為了能夠及時了解到學生們學習的“薄弱環(huán)節(jié)”,將學生們學習過程中遇到的問題顯現(xiàn)出來,并對這些問題進行總結(jié)劃分。針對總結(jié)得到的問題,再進行知識回顧。知識回顧不僅僅是簡單的陳述,而是針對測驗階段反應的問題,有針對性地給學生們進行詳細講解。這樣不僅能夠掃清課堂授課中的“教學盲點”,還能幫助學生們及時復習鞏固所學習過的理論知識,同時為提高學生們的實踐動手能力,做好了準備工作,打下了堅實的基礎(chǔ)。
針對學生們的編程能力普遍不強的情況,在本課程的理論課堂已開始而實驗課堂還沒有開始的時候,布置適量的選修實驗題目。這些題目主要為了喚醒學生以往的編程記憶,提早進入狀態(tài),達到能夠熟練掌握調(diào)試程序技巧的目的。在教學過程中,發(fā)現(xiàn)有部分學生沒有計算機,這樣勢必會造成這些學生只能在上實驗課時才能接觸計算機,實踐機會過少,難以實現(xiàn)理論知識應用化的過程。針對這樣的情況,計算機實驗室采取開放式管理,不僅使學生獲得更多的實踐機會,提高了個人的動手及解決實際問題的能力,而且還能使得教學資源利用率大大提高。
為了避免發(fā)生程序抄襲的問題,任課教師在設(shè)計實驗題目的時候,打破以往“一課一題”的傳統(tǒng)模式,針對同一知識點,設(shè)計出多組實驗題目;并且在程序檢查的過程中,教師們改變以往的驗收方式,不再像從前評定成績的優(yōu)劣主要以程序運行結(jié)果為依據(jù),而更看重的是算法設(shè)計思路以及實現(xiàn)過程,并要求學生們在實驗報告中清楚、準確地表現(xiàn)出來。這兩種做法,有效地遏制了程序抄襲問題,使學生們逐漸養(yǎng)成了相互探討問題、共同攻破難題的良好的學習風氣。
在一定的階段學習之后,任課教師會根據(jù)學生們的平時完成實驗情況,統(tǒng)計學生們中多數(shù)人所集中體現(xiàn)出的問題,有針對性地、有目的地為大家講解及演示,消除學生們心中疑惑;并針對這些問題,再擬定一些稍難的選做實驗題目,供學生們鞏固理論知識、加強動手能力。因為實驗課的學時分配十分有限,所以任課教師不能再將后期布置的選做實驗題目,再一一檢查、講解。但這并不意味著,學生們對于這些選做題目的完成情況就無從評價及驗證,因為任課教師會在一定時間后將參考的程序設(shè)計方案提供給同學們。這樣,會更加有利于培養(yǎng)學生們養(yǎng)成獨立思考問題、獨立解決問題的能力。
通過以上一系列的教學改革,《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程的教學工作取得了較好的教學效果。學生們對數(shù)據(jù)結(jié)構(gòu)中涉及的各種數(shù)據(jù)對象能夠做到掌握、理解和運用,并且對實際問題的分析能力、解決能力以及實踐能力都有很大的提高。另外,從課堂互動、課后同學之間或同老師之間的討論中,都能感受到學生們對學習產(chǎn)生了濃厚的興趣。在實驗檢查過程中,能夠感覺到抄襲情況大大減少,基本上能夠達到杜絕。90%左右的學生能夠做到獨立完成實驗任務。在解決實際問題過程中,同學們更是能夠有自己獨立的解決思路,勇于創(chuàng)新。
[1]嚴蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu):C語言版[M].北京:清華大學出版社,2007.
[2]周蘇,柳俊,孟學多.“數(shù)據(jù)結(jié)構(gòu)與算法”的教學改革和實驗創(chuàng)新[J].計算機教育,2007(8S):78-80.
[3]彭波.數(shù)據(jù)結(jié)構(gòu)與算法[M].北京:機械工業(yè)出版社,2008.
[4]徐孝凱.數(shù)據(jù)結(jié)構(gòu)實用教程[M].北京:清華大學出版社,2007.
[5]馬彥.數(shù)據(jù)結(jié)構(gòu)實驗教學改革探索[J].洛陽師范學院學報,2011(11):65-67.