摘要:通過分析數(shù)據(jù)結(jié)構(gòu)課程的特點(diǎn),提出在保證課堂教學(xué)質(zhì)量的前提下,充分利用課內(nèi)實(shí)驗(yàn)和課外實(shí)踐環(huán)節(jié)來鞏固課堂知識,實(shí)現(xiàn)知識向能力的轉(zhuǎn)化,最終實(shí)現(xiàn)改善教學(xué)效果的新思路。
關(guān)鍵詞:課程主線;情景式教學(xué);科學(xué)素養(yǎng);數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)學(xué)科的核心課程,是計(jì)算機(jī)專業(yè)后續(xù)課程的基礎(chǔ),主要用于處理非數(shù)值計(jì)算問題。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)就是要讓學(xué)生掌握數(shù)據(jù)在計(jì)算機(jī)中的表示、組織和相應(yīng)結(jié)構(gòu)上的算法設(shè)計(jì),以便學(xué)生在軟件開發(fā)的過程中能選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu),高效的設(shè)計(jì)算法,并初步掌握算法的時間和空間分析技術(shù)。
然而,由于課程內(nèi)容繁多、理論抽象、邏輯性強(qiáng)、難以理解,幾乎所有的算法都沒有源程序?qū)崿F(xiàn),這給學(xué)生理解帶來了很大的難度。因此,學(xué)生上課聽不懂、上機(jī)實(shí)踐動手能力差、課程難教難學(xué)的現(xiàn)象普遍存在。
結(jié)合多年教學(xué),筆者總結(jié)出以下幾點(diǎn)經(jīng)驗(yàn),希望這些經(jīng)驗(yàn)?zāi)苡兄趯W(xué)生學(xué)好數(shù)據(jù)結(jié)構(gòu)、提高分析和解決問題的能力。
1 采取多種手段改善課堂教學(xué)效果
1.1 緊扣課程主線,把握知識要點(diǎn)
數(shù)據(jù)結(jié)構(gòu)課程內(nèi)容比較繁雜,但總體來說主要介紹線性結(jié)構(gòu)和非線性結(jié)構(gòu)這兩大基本結(jié)構(gòu)類型,線性結(jié)構(gòu)部分包括線性表,棧和隊(duì)列,串,數(shù)組和廣義表,非線性結(jié)構(gòu)包括樹和圖。
在線性結(jié)構(gòu)中,線性表是最基本、最簡單的一種結(jié)構(gòu),屬于課程最基礎(chǔ)的內(nèi)容,如果學(xué)生掌握了它的存儲結(jié)構(gòu)及其基本操作,其他線性結(jié)構(gòu)的教學(xué)就不難了,因此,在教學(xué)過程中加強(qiáng)對線性表部分的講解十分重要,應(yīng)將其作為課程教學(xué)的主線。其他的線性結(jié)構(gòu)都是在線性表這個基本結(jié)構(gòu)的基礎(chǔ)上作某些限制后的特殊線性結(jié)構(gòu),如棧和隊(duì)列是對插入、刪除操作做限定的線性表,串是對線性表的數(shù)據(jù)對象做限定的線性表,廣義表是元素的值可分解為原子或列表的線性表。
非線性結(jié)構(gòu)的典型代表是樹和圖,主要涉及存儲結(jié)構(gòu)、基本操作及其在實(shí)際中的應(yīng)用,在這些存儲結(jié)構(gòu)下,樹和圖的各種操作幾乎都是以遍歷為基礎(chǔ)的,因此,對于非線性結(jié)構(gòu),以結(jié)構(gòu)的遍歷為主線進(jìn)行展開是合適的。例如,二叉樹是樹這一部分的重點(diǎn),因?yàn)闃浜蜕值母鞣N操作可以轉(zhuǎn)換為二叉樹來實(shí)現(xiàn),而二叉樹的各種操作都是以遍歷為前提的,因此,掌握了二叉樹的遍歷,也就掌握了樹及森林的遍歷,從而達(dá)到快速掌握其他相關(guān)操作的目的。對于圖,雖然算法較多,相對難于理解,但通過分析這些算法,我們發(fā)現(xiàn)其本質(zhì)都是在圖的遍歷基礎(chǔ)上加以一定的約束來實(shí)現(xiàn)的,因此,掌握了圖的遍歷,對圖的其他各算法的理解就簡單了。
查找和排序是對上述兩大基本結(jié)構(gòu)的應(yīng)用,主要側(cè)重于算法思想的介紹,在后續(xù)課程(如算法設(shè)計(jì)與分析)中會有更深入的介紹,因此,可以不作為本課程的重點(diǎn)。
1.2 采用情景式教學(xué)方法,使抽象的內(nèi)容生動化,具體化
情境式教學(xué)方法是一種充分利用形象創(chuàng)設(shè)典型場景、激起學(xué)生學(xué)習(xí)情緒,把認(rèn)知活動和情感活動結(jié)合起來的教學(xué)模式。在教學(xué)中,學(xué)生經(jīng)常反映聽不懂,算法理解有困難,獨(dú)立解決問題時無從下手,其主要原因在于很多課程知識比較抽象,常規(guī)教學(xué)方法不利于學(xué)生理解和應(yīng)用。為了使抽象內(nèi)容變得生動具體,學(xué)生易于理解和掌握,在教學(xué)中,我們應(yīng)盡量采用情境式教學(xué)方法。引入的問題可以從學(xué)生生活中熟悉的情景、實(shí)物、實(shí)事入手,這樣學(xué)生容易接受,并能自然而然地進(jìn)入學(xué)習(xí)求知狀態(tài)。用降低思維門檻、激發(fā)學(xué)生興趣、增強(qiáng)學(xué)習(xí)趣味性的方式引導(dǎo)學(xué)生思考,激發(fā)學(xué)生的探索欲望,并為問題的解決提供動力。
在講解某種數(shù)據(jù)結(jié)構(gòu)前,教師可以設(shè)置問題情景,提出一個與其相關(guān)的案例問題,使學(xué)生帶著疑問和思考進(jìn)行學(xué)習(xí)。例如在講解堆棧時,我們可以拿現(xiàn)實(shí)生活中的洗碗來類比,碗摞在一起就是一種線性關(guān)系,洗的過程就是入棧出棧操作,隨著碗的疊放和取出,最上面碗的位置在動態(tài)變化,因此,需設(shè)置一個top指針。同時,你不能一直取下去,因此,還要設(shè)置一個bottom指針,這一比喻使學(xué)生對堆棧的存儲結(jié)構(gòu)和邏輯結(jié)構(gòu)有了較具體的認(rèn)識。又如,我們可以利用“在座位上插入一個新同學(xué)”的問題來讓學(xué)生理解“線性表的插入”、利用“排隊(duì)買票”來理解“隊(duì)列”等。借助此類形象的實(shí)例,我們可以集中體現(xiàn)教學(xué)內(nèi)容,學(xué)生從中也可以推導(dǎo)出結(jié)論且更易于理解和記憶。
1.3 充分利用現(xiàn)代教學(xué)手段,改善教學(xué)效果
數(shù)據(jù)結(jié)構(gòu)課程內(nèi)容多,大部分都很抽象,用傳統(tǒng)的方法來講解該課程非??菰铮瑸榱烁纳七@種狀況,我們可以借助現(xiàn)代教學(xué)手段,除了把教學(xué)內(nèi)容做成多媒體課件外,還可以把適合動畫演示的內(nèi)容,通過多媒體技術(shù)直觀地展示出來。
HANOI問題是程序設(shè)計(jì)中的經(jīng)典遞歸問題,掌握算法的執(zhí)行過程,對深入理解和靈活運(yùn)用遞歸有重要意義。該算法用高級語言描述只有幾行語句,但由于遞歸算法中有兩次遞歸調(diào)用,程序執(zhí)行過程復(fù)雜,學(xué)生很難理解。在實(shí)際教學(xué)中,為了把這個過程講明白,教師可以利用Flash設(shè)計(jì)一個動畫,形象地描述運(yùn)作過程和堆棧的變化狀態(tài),從而幫助學(xué)生理解遞歸調(diào)用及遞歸過程,加深其對知識的理解。類似的問題還有很多,如串的模式匹配、二叉樹的遍歷、圖的遍歷等都可以借助動畫演示來加深理解,改善教學(xué)效果。
另外,隨著校園網(wǎng)絡(luò)的發(fā)展,利用網(wǎng)絡(luò)課堂輔助教學(xué)對改善教學(xué)效果十分有益。借助網(wǎng)絡(luò)課堂的發(fā)布功能,我們可以把電子教案、多媒體課件、參考資料、課后習(xí)題等各種課程資源提供給學(xué)生,學(xué)生可以在課后慢慢消化課堂上沒有消化的知識;網(wǎng)絡(luò)課堂的論壇和答疑系統(tǒng)為學(xué)生和老師提供了一個交流平臺,學(xué)生可以隨時向同學(xué)或老師提問,任課老師也可以與學(xué)生充分交流,及時掌握學(xué)生的學(xué)習(xí)動態(tài),調(diào)整教學(xué)方法。
2 通過實(shí)驗(yàn)鞏固課內(nèi)知識
2.1 實(shí)驗(yàn)環(huán)節(jié)的重要性
首先,數(shù)據(jù)結(jié)構(gòu)課程有別于其他專業(yè)課程,它主要討論數(shù)據(jù)在計(jì)算機(jī)內(nèi)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)及相關(guān)操作的算法,并在理論上有所抽象和提煉,因此課程高度抽象。而抽象的知識往往是難于為人理解的,學(xué)生經(jīng)過課堂教學(xué),只是對這些知識有了一種感性認(rèn)識,離深刻理解還有較大差距,在實(shí)驗(yàn)中,學(xué)生通過把這些抽象知識直接轉(zhuǎn)化為熟知的程序代碼,經(jīng)過調(diào)試和運(yùn)行,得到能真正看得見的運(yùn)行結(jié)果,這無疑加深了學(xué)生對知識的理解,實(shí)現(xiàn)了知識從感性認(rèn)識到理性認(rèn)識的轉(zhuǎn)化。
其次,在課堂教學(xué)中,盡管我們一再強(qiáng)調(diào)以學(xué)生為主體,但起主導(dǎo)作用的仍是老師,教學(xué)仍采用老師講學(xué)生聽的基本模式,學(xué)生總是被動地接受知識,缺乏自己動手的過程,而實(shí)驗(yàn)環(huán)節(jié)正好彌補(bǔ)了這個缺陷,因此,課程實(shí)驗(yàn)對幫助學(xué)生鞏固和加深對課程內(nèi)容的理解至關(guān)重要。
2.2 實(shí)驗(yàn)內(nèi)容的科學(xué)性
科學(xué)合理的實(shí)驗(yàn)內(nèi)容設(shè)計(jì)對實(shí)驗(yàn)效果和促進(jìn)學(xué)生對知識的掌握和理解起至關(guān)重要的作用。在平常的教學(xué)實(shí)踐中,實(shí)驗(yàn)內(nèi)容的設(shè)計(jì)往往是對課堂教學(xué)內(nèi)容的簡單驗(yàn)證,學(xué)生只會依葫蘆畫瓢,知其然而不知其所以然,不能充分理解和掌握所學(xué)內(nèi)容,實(shí)驗(yàn)達(dá)不到其應(yīng)有的作用。另外,實(shí)驗(yàn)內(nèi)容互不相關(guān)、相百脫節(jié),缺乏系統(tǒng)性和延續(xù)性,當(dāng)遇到類似的、需要知識綜合的問題時,學(xué)生缺乏從全局的角度分析和解決問題的能力,這不利于學(xué)生知識應(yīng)用能力的培養(yǎng)。
為了改變這種狀況,我們在實(shí)驗(yàn)項(xiàng)目的設(shè)置上作了相應(yīng)調(diào)整。首先,在實(shí)驗(yàn)類型上我們把實(shí)驗(yàn)項(xiàng)目分為3大類,即驗(yàn)證型、綜合型、設(shè)計(jì)型。驗(yàn)證型實(shí)驗(yàn)以驗(yàn)證教材介紹的算法為主,實(shí)驗(yàn)指導(dǎo)書提供了這些算法的詳細(xì)案例代碼,學(xué)生可以先從讀懂代碼來體會數(shù)據(jù)結(jié)構(gòu)的精髓,加深對基礎(chǔ)知識的理解。綜合型實(shí)驗(yàn)注重相關(guān)知識的融合,通過設(shè)計(jì)合理的實(shí)驗(yàn)內(nèi)容強(qiáng)化知識間的聯(lián)系,鍛煉學(xué)生的綜合實(shí)踐能力。設(shè)計(jì)型實(shí)驗(yàn)的目標(biāo)是讓學(xué)生利用所學(xué)課程知識去解決具體問題,訓(xùn)練學(xué)生靈活運(yùn)用所學(xué)知識進(jìn)行復(fù)雜程序設(shè)計(jì)的技能,提高學(xué)生面對實(shí)際問題選擇合適數(shù)據(jù)結(jié)構(gòu)和算法進(jìn)行程序設(shè)計(jì)的能力。其次,在實(shí)驗(yàn)內(nèi)容的設(shè)計(jì)上,為了確保實(shí)驗(yàn)效果,促進(jìn)學(xué)生對理論知識的理解和應(yīng)用,在內(nèi)容的選擇上必須兼顧廣度、深度和梯度。廣度即實(shí)驗(yàn)內(nèi)容應(yīng)該涵蓋課程的所有知識點(diǎn);深度即對實(shí)驗(yàn)題目進(jìn)行精心設(shè)計(jì),而不是簡單的照搬教材上的實(shí)例,最好選擇一些帶有趣味性的現(xiàn)實(shí)問題;梯度即實(shí)驗(yàn)題目有難有易,既有對基礎(chǔ)知識進(jìn)行鞏固的較簡單問題,也有相對較難的讓學(xué)生有所提高的隱蔽性問題,避免學(xué)生出現(xiàn)“眼高于低”的情況,切實(shí)改善實(shí)驗(yàn)效果。
2.3 實(shí)驗(yàn)過程的規(guī)范性
盡管科學(xué)合理的實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)是實(shí)驗(yàn)教學(xué)的基礎(chǔ),但作為教學(xué)主體,學(xué)生的主觀能動性在整個教學(xué)過程中是至關(guān)重要的,因?yàn)橹挥袑W(xué)生的積極參與才能讓我們的教學(xué)工作落到實(shí)處。為了達(dá)到這個目標(biāo),我們必須及時掌握學(xué)生的學(xué)習(xí)動態(tài)、了解學(xué)生對知識的掌握程度,而這些信息只能借助規(guī)范的實(shí)驗(yàn)過程來獲取。
為了規(guī)范實(shí)驗(yàn)過程,我們在實(shí)驗(yàn)教學(xué)過程中要堅(jiān)持做到有計(jì)劃、有指導(dǎo)、有報(bào)告、有總結(jié),隨時掌握學(xué)生動態(tài),根據(jù)實(shí)際情況調(diào)整實(shí)施過程,兼顧整體進(jìn)度和個體差異,盡量做到因材施教。首先,我們把實(shí)驗(yàn)劃分為課內(nèi)實(shí)驗(yàn)和課程設(shè)計(jì)兩大部分,課內(nèi)實(shí)驗(yàn)主要涉及驗(yàn)證型和綜合型實(shí)驗(yàn),設(shè)計(jì)型實(shí)驗(yàn)體現(xiàn)為課程設(shè)計(jì),課內(nèi)實(shí)驗(yàn)部分在任課教師的指導(dǎo)下由學(xué)生在實(shí)驗(yàn)課內(nèi)完成,課程設(shè)計(jì)在課程組教師的集體指導(dǎo)下由學(xué)生在課后完成。
為了規(guī)范管理,實(shí)驗(yàn)開設(shè)前由任課教師制定詳細(xì)的實(shí)驗(yàn)計(jì)劃,對每個實(shí)驗(yàn)項(xiàng)目確定基本目標(biāo)和要獲得的具體結(jié)果,指導(dǎo)后期的實(shí)驗(yàn)過程;為了保證實(shí)驗(yàn)質(zhì)量,嚴(yán)格控制課內(nèi)實(shí)驗(yàn)師生比,保證每一位學(xué)生都能得到及時的指導(dǎo);要求學(xué)生每次實(shí)驗(yàn)必須隨堂提交實(shí)驗(yàn)報(bào)告,任課教師通過批改實(shí)驗(yàn)報(bào)告了解學(xué)生對相關(guān)知識的掌握程度,及時調(diào)整教學(xué)策略:新課教學(xué)完成后,我們給學(xué)生兩周時間完成課程設(shè)計(jì),根據(jù)學(xué)生動手能力不同對學(xué)生進(jìn)行分組,為每組分配不同的題目,要求學(xué)生獨(dú)立完成前期的問題分析、算法設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)以及后期的編碼和文檔編寫,而且要做到分上明確,這樣既可以讓他們學(xué)會交流與協(xié)作,又可以提高動手能力差的學(xué)生的學(xué)習(xí)興趣,為學(xué)生將來走上工作崗位打下堅(jiān)實(shí)的基礎(chǔ)。
3 課外學(xué)習(xí)強(qiáng)化所學(xué)知識
傳統(tǒng)教學(xué)以章節(jié)為主講授課程知識,講授過程缺乏連貫性和系統(tǒng)性,教師往往是向?qū)W生抽象地介紹一些常用的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)在哪些方面或哪些領(lǐng)域如何應(yīng)用卻沒有涉及,這導(dǎo)致了理論與實(shí)踐嚴(yán)重脫節(jié),因此,學(xué)生對“數(shù)據(jù)結(jié)構(gòu)”潛在的應(yīng)用價值缺乏深刻的認(rèn)識。為了改變這種狀況,我們通過設(shè)置一些課外學(xué)習(xí)環(huán)節(jié)來引導(dǎo)學(xué)生把課內(nèi)知識轉(zhuǎn)化為應(yīng)用能力。
3.1 借助ACM程序設(shè)計(jì)大賽平臺培養(yǎng)學(xué)生創(chuàng)新能力
ACM國際大學(xué)生程序設(shè)計(jì)競賽作為一項(xiàng)世界性的競賽活動,在信息技術(shù)界具有超凡的影響力,許多賽題是實(shí)際工程應(yīng)用中所遇到的問題,解決這些問題需要應(yīng)用數(shù)據(jù)結(jié)構(gòu)的基本知識,這有利于學(xué)生提高分析問題和解決問題的能力,全面提升編程能力。通用在線測評系統(tǒng)既可以作為學(xué)生程序設(shè)計(jì)競賽的平臺,也可以用于數(shù)據(jù)結(jié)構(gòu)的實(shí)驗(yàn)教學(xué)。借助平臺的開放性,將精心設(shè)計(jì)的基礎(chǔ)實(shí)驗(yàn)和算法設(shè)計(jì)實(shí)驗(yàn)題改編為適合于在線測評系統(tǒng)的題目,學(xué)生可以以個人或團(tuán)隊(duì)的形式在任何可以訪問該平臺的地方隨時完成問題的分析與求解,這樣,學(xué)生提交的不再是簡單的實(shí)驗(yàn)報(bào)告,而是具體任務(wù)的程序?qū)崿F(xiàn)。通過分析代碼,教師還可以發(fā)現(xiàn)問題,及時掌握學(xué)生對課堂知識的理解和掌握程度。同時,學(xué)生也能相互查看各自的實(shí)驗(yàn)完成情況,在無形中形成了一種相互競爭的狀態(tài),它可以激發(fā)學(xué)生繼續(xù)努力,逐漸形成積極向上的自主學(xué)習(xí)氛圍。
3.2 鼓勵學(xué)生積極參與各種科研項(xiàng)目培養(yǎng)學(xué)生的科學(xué)素養(yǎng)
高校是創(chuàng)新型人才培養(yǎng)的搖籃,學(xué)生能參與各種科研項(xiàng)目,數(shù)據(jù)結(jié)構(gòu)課程介紹的結(jié)構(gòu)和算法還有改進(jìn)和優(yōu)化的余地。學(xué)生思維活躍,但由于缺乏正確的引導(dǎo),很多有價值的想法都被埋沒了,在教師的正確指導(dǎo)下,如果學(xué)生能夠針對某個問題展開系統(tǒng)的研究,他們就可以實(shí)現(xiàn)對已掌握知識的鞏固,又可以實(shí)現(xiàn)對知識運(yùn)用能力的考查,同時,這種正確的指導(dǎo)還可以幫助學(xué)生拓展知識面、獲取新知識、提高認(rèn)知水平。
學(xué)校每年都資助大量學(xué)生科研項(xiàng)目,用于培養(yǎng)學(xué)生的科學(xué)探索精神和發(fā)散性思維,培養(yǎng)學(xué)生發(fā)現(xiàn)問題、分析問題和解決問題的能力。任課老師可以有計(jì)劃、有目的的組織學(xué)生申報(bào)與課程知識相關(guān)的科研項(xiàng)目,這樣既可以提高學(xué)生的學(xué)習(xí)興趣,引導(dǎo)學(xué)生關(guān)注最新的科研成果,又可以讓學(xué)生將所學(xué)的知識深入貫徹到具體研究領(lǐng)域,從而達(dá)到理論聯(lián)系實(shí)際,學(xué)以致用,深刻領(lǐng)悟數(shù)據(jù)結(jié)構(gòu)精髓的目的。
4 結(jié)語
作為計(jì)算機(jī)專業(yè)的核心課程,在數(shù)據(jù)結(jié)構(gòu)的教學(xué)過程中,我們一定要把握課程的特殊性,在保證理論教學(xué)質(zhì)量的前提下,充分重視實(shí)踐教學(xué)環(huán)節(jié),通過扎實(shí)的課內(nèi)實(shí)驗(yàn)和豐富的課外實(shí)踐實(shí)現(xiàn)學(xué)生知識向能力的轉(zhuǎn)化,從而達(dá)到改善教學(xué)效果的基本目標(biāo)。
(編輯:郭小