康順
(湖北理工學(xué)院 電氣與電子信息工程學(xué)院,湖北 黃石 435003)
1968 年Knuth開創(chuàng)了數(shù)據(jù)結(jié)構(gòu)的最初體系,所著的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》第一卷《基本算法》是第一本較系統(tǒng)地闡述數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)及其操作的著作。20 世紀(jì)70 年代初,數(shù)據(jù)結(jié)構(gòu)作為一門獨(dú)立的課程開始進(jìn)入大學(xué)課堂。隨著大數(shù)據(jù)、云計(jì)算和人工智能等新興產(chǎn)業(yè)的發(fā)展,與注重學(xué)術(shù)型、研究型人才培養(yǎng)的“雙一流”高校相比,普通二本院校更加注重應(yīng)用型與行業(yè)特色人才的培養(yǎng),這不僅要求大學(xué)生掌握相關(guān)科學(xué)文化知識(shí),而且要具有較強(qiáng)的實(shí)踐創(chuàng)新能力。數(shù)據(jù)結(jié)構(gòu)與算法在新興產(chǎn)業(yè)的搜索、查找及匹配計(jì)算中發(fā)揮著基礎(chǔ)性作用。具備利用數(shù)據(jù)存儲(chǔ)、組織方式解決實(shí)際問題的能力是各企事業(yè)單位的崗位需求,也是大學(xué)數(shù)據(jù)結(jié)構(gòu)課程教學(xué)的人才培養(yǎng)目標(biāo)之一。對(duì)此,如何合理進(jìn)行數(shù)據(jù)結(jié)構(gòu)知識(shí)內(nèi)容講授,使學(xué)生真正理解、消化所學(xué)知識(shí)點(diǎn),達(dá)到學(xué)以致用,具備實(shí)踐創(chuàng)新能力是數(shù)據(jù)結(jié)構(gòu)課程教學(xué)面臨的一大難題,也是課程教學(xué)改革的終極目標(biāo)。
在數(shù)據(jù)結(jié)構(gòu)課程教學(xué)過程中,由于數(shù)據(jù)結(jié)構(gòu)算法理論過于抽象,邏輯性強(qiáng),概念理解難度大,內(nèi)容多,學(xué)生往往難以把握整體的知識(shí)體系與結(jié)構(gòu),難以對(duì)數(shù)據(jù)結(jié)構(gòu)的本質(zhì)有清晰的認(rèn)識(shí)和準(zhǔn)確理解,感覺課堂上思路跟不上,知識(shí)點(diǎn)難以消化,上機(jī)具體實(shí)踐無從下手,針對(duì)一個(gè)實(shí)際問題,難以抽象出其所涉及的數(shù)據(jù)結(jié)構(gòu)模型,設(shè)計(jì)合理的存儲(chǔ)結(jié)構(gòu)。為此,研究從教學(xué)理念、教學(xué)過程中課外自主閱讀、前導(dǎo)課程知識(shí)回顧、案例驅(qū)動(dòng)教學(xué)、實(shí)踐能力培養(yǎng)和成績評(píng)定方面對(duì)數(shù)據(jù)結(jié)構(gòu)課程教學(xué)進(jìn)行初步探索。
教學(xué)理念是教育者頭腦中存在的有關(guān)教師、學(xué)生、知識(shí)、能力、素質(zhì)及質(zhì)量等方面的諸種信念和理論的綜合體,由于研究視角差異,不同學(xué)者對(duì)教學(xué)理念理解不同。究其本質(zhì),研究認(rèn)為教學(xué)理念主要包括三方面:教學(xué)互動(dòng)性、學(xué)生主體性和知識(shí)重構(gòu)性。
教學(xué)是一種有組織、有目的和有計(jì)劃的師生互動(dòng)活動(dòng)。傳統(tǒng)教學(xué)觀念把教學(xué)當(dāng)作知識(shí)的傳授,這種“灌輸式”教學(xué)理念單調(diào)、乏味。因此,在數(shù)據(jù)結(jié)構(gòu)授課中,應(yīng)使學(xué)生由被動(dòng)轉(zhuǎn)為主動(dòng),由靜態(tài)轉(zhuǎn)為動(dòng)態(tài),由單向轉(zhuǎn)為雙向,加強(qiáng)師生在知識(shí)、情感、思想和精神層面的碰撞,轉(zhuǎn)變教學(xué)活動(dòng)角色,教學(xué)過程中學(xué)生既是學(xué)習(xí)者,又是反饋者;教師既是傳道者,也是受動(dòng)者,通過一種提出問題、引導(dǎo)和解決問題的方式,使學(xué)生在掌握知識(shí)的同時(shí)能夠發(fā)現(xiàn)問題,知道如何去解決問題,培養(yǎng)學(xué)有所用的成就感,提高學(xué)生對(duì)知識(shí)的渴求。
德國教育家第斯多惠說:“一個(gè)壞的教師奉送真理,一個(gè)好的教師則教人發(fā)現(xiàn)真理?!苯虒W(xué)過程在強(qiáng)調(diào)教法的同時(shí),也要加強(qiáng)學(xué)生學(xué)法的指導(dǎo),以學(xué)論教,培養(yǎng)學(xué)生的自學(xué)能力和優(yōu)良學(xué)習(xí)品質(zhì),讓學(xué)生“樂學(xué)”“會(huì)學(xué)”。為什么要學(xué)數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)有什么用是數(shù)據(jù)結(jié)構(gòu)開篇必講內(nèi)容,如果學(xué)生不清楚數(shù)據(jù)結(jié)構(gòu)的價(jià)值與意義,很容易打消學(xué)習(xí)積極性。最佳的方法是將所學(xué)知識(shí)點(diǎn)與學(xué)生生活實(shí)踐結(jié)合,調(diào)動(dòng)學(xué)生主體能動(dòng)性,培養(yǎng)主動(dòng)尋求解決問題的能力。對(duì)課堂表現(xiàn)活躍的學(xué)生予以適當(dāng)激勵(lì),如在一些網(wǎng)絡(luò)公開課中,西方教師以分發(fā)糖果的方式激勵(lì)課堂主動(dòng)提問、回答問題,既達(dá)到了活躍課堂氛圍,又使學(xué)生達(dá)到自我認(rèn)同感與成就感,肯定自己能力的同時(shí),產(chǎn)生一種自我激勵(lì)意識(shí),促進(jìn)了OBE 工程教育中“以學(xué)生為中心”的教育理念的實(shí)施。
傳統(tǒng)教學(xué)強(qiáng)調(diào)的是學(xué)生從不知到知、從知道少到知道多的一種外鑠過程,注重的是學(xué)生外在活動(dòng)變化,忽略了學(xué)生知識(shí)的內(nèi)化過程,對(duì)數(shù)據(jù)結(jié)構(gòu)課程也不外如是。要使學(xué)生能夠具備舉一反三的能力,就要求學(xué)生不僅要理解并掌握數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn),還要建立起各知識(shí)點(diǎn)之間的聯(lián)系,將書本上的知識(shí)內(nèi)化形成自己的知識(shí)體系結(jié)構(gòu)。這就要求任課教師引導(dǎo)學(xué)生按照自己的理解與認(rèn)知,建立自己的知識(shí)體系,能夠合理地將各知識(shí)點(diǎn)穿插起來,梳理形成知識(shí)鏈,達(dá)到舉一反三、融會(huì)貫通。
除了課程教材,課外參考書也是輔助學(xué)習(xí)與教學(xué)的必要資料,如《大話數(shù)據(jù)結(jié)構(gòu)》一書,該書引用了各種各樣的生活知識(shí)來類比,并充分運(yùn)用圖形語言來體現(xiàn)抽象內(nèi)容,既可以增加知識(shí)講授趣味性,又促進(jìn)了學(xué)生對(duì)知識(shí)的理解;《算法圖解》一書示例豐富,圖文并茂,以讓人容易理解的方式闡釋了算法;《C 語言陷阱與缺陷》可進(jìn)一步鞏固學(xué)生的C 語言功底。因此,課外參考書籍是對(duì)數(shù)據(jù)結(jié)構(gòu)課程學(xué)習(xí)、教學(xué)的一個(gè)良好補(bǔ)充。
C 語言作為數(shù)據(jù)結(jié)構(gòu)的前導(dǎo)課之一,其知識(shí)掌握程度直接影響著對(duì)數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)效果。授課過程發(fā)現(xiàn),大部分學(xué)生C 語言基礎(chǔ)不扎實(shí),特別是函數(shù)、指針和結(jié)構(gòu)體,這也是C 語言學(xué)習(xí)的難點(diǎn)內(nèi)容。缺乏良好的基礎(chǔ)鋪墊,對(duì)教師講授和學(xué)生掌握數(shù)據(jù)結(jié)構(gòu)而言都是一項(xiàng)艱巨的任務(wù)。因此,在數(shù)據(jù)結(jié)構(gòu)教學(xué)大綱和課程設(shè)計(jì)中,為C 語言函數(shù)、指針和結(jié)構(gòu)體知識(shí)回顧安排一定的授課學(xué)時(shí),針對(duì)這部分難點(diǎn)內(nèi)容查缺補(bǔ)漏,也為數(shù)據(jù)結(jié)構(gòu)的后繼課程計(jì)算機(jī)圖形學(xué)、數(shù)據(jù)庫和軟件工程等夯實(shí)基礎(chǔ),對(duì)學(xué)生知識(shí)學(xué)習(xí)起到承前啟后作用。
數(shù)據(jù)結(jié)構(gòu)教學(xué)內(nèi)容已不再局限于某一專業(yè)領(lǐng)域,而是涉及數(shù)據(jù)結(jié)構(gòu)在不同應(yīng)用中的基礎(chǔ)性和通用性的概念、技術(shù)與應(yīng)用。因此,什么是數(shù)據(jù)結(jié)構(gòu),怎樣理解數(shù)據(jù)結(jié)構(gòu),這是數(shù)據(jù)結(jié)構(gòu)這門課程必須首先要講清楚的一個(gè)概念,單純的文字描述不足以讓學(xué)生清楚理解。研究從學(xué)生英語學(xué)習(xí)的角度類比,將英語單詞比作數(shù)據(jù),將語法比作結(jié)構(gòu),通過英語語句翻譯的案例引導(dǎo),讓學(xué)生掌握數(shù)據(jù)結(jié)構(gòu)這個(gè)概念,如下所示。
The future is scary but you can't just run to the past because it's familiar.
未來讓人心生畏懼,但是我們不能因?yàn)榱?xí)慣了過去,就逃回過去。
Success is the ability to go from one failure to another with no loss of enthusiasm.
成功是,你即使跨過一個(gè)又一個(gè)失敗,但也沒有失去熱情。
雖然上述英語句子中都是常用單詞,但是學(xué)生翻譯往往與句子原意有所偏差,教學(xué)中可以此來說明掌握結(jié)構(gòu)的重要性。由此類比,引出數(shù)據(jù)結(jié)構(gòu)的概念,如圖1 所示。
圖1 數(shù)據(jù)結(jié)構(gòu)概念類比
數(shù)據(jù)結(jié)構(gòu)中比較難掌握,又相對(duì)重要的是樹和圖結(jié)構(gòu)。運(yùn)用案例教學(xué)不僅可使學(xué)生掌握理論知識(shí),而且能夠結(jié)合實(shí)際問題做出分析、運(yùn)用所學(xué)知識(shí)解決此類問題,達(dá)到學(xué)有所用的目的。如樹結(jié)構(gòu)教學(xué)過程中,通過與定長編碼的比較,學(xué)生應(yīng)掌握為什么使用赫夫曼樹編碼,其優(yōu)點(diǎn)在哪里。案例教學(xué)可將一段文本轉(zhuǎn)換為赫夫曼編碼,如圖2 所示?;蛞訮rim 最小生成樹看武漢中心地位為例,選擇全國的36 個(gè)大城市,從最小生成樹結(jié)果圖分析武漢在華中地區(qū)的地理地位(參考https://malagis.com/viewing-wuhan-s-central-position-with-prim-minimum-spanning-tree.html)。在最短路徑搜索講解中,利用棧結(jié)構(gòu),結(jié)合樹型結(jié)構(gòu)中的廣度、深度優(yōu)先搜索,如廣度優(yōu)先搜索Viterbi 算法和深度優(yōu)先搜索Dijkstra 算法,比較分析路徑搜索算法,如圖3 所示。通過分析算法存在的不足,引出貪婪算法、啟發(fā)式搜索算法和A*搜索算法,層層遞進(jìn),不斷改進(jìn)和完善算法,提高學(xué)習(xí)興趣。
圖2 赫夫曼編碼
圖3 路徑搜索
指針、結(jié)構(gòu)體基礎(chǔ)不扎實(shí),部分學(xué)生編程實(shí)踐能力差,算法轉(zhuǎn)化程序時(shí),受到程序設(shè)計(jì)語言語法的約束,往往調(diào)試程序時(shí)間長,一旦出錯(cuò)就無從著手。由此,可采取先模仿別人的程序,程序調(diào)試、成功運(yùn)行,提高學(xué)習(xí)成就感,避免一開始就是復(fù)雜程序,打消學(xué)習(xí)積極性,逐步測試、完善程序,使學(xué)生動(dòng)手能力不斷得到提高。指導(dǎo)過程中可用在線編譯器(https://www.onlinegdb.com/、https://www.jdoodle.com/c-online-compiler/)與學(xué)生共同編寫程序,營造良好學(xué)習(xí)氛圍。
對(duì)比分析教學(xué)改革前后授課班級(jí)2017 遙感科學(xué)與技術(shù)(北斗項(xiàng)目)1 班與2018 遙感科學(xué)與技術(shù)(北斗項(xiàng)目)1 班的綜合得分情況,如圖4 所示,評(píng)定成績包括:平時(shí)成績(20%)、實(shí)驗(yàn)成績(20%)、期中成績(20%)和期末成績(40%)。可看出教學(xué)改革后2018 遙感科學(xué)與技術(shù)(北斗項(xiàng)目)1 班的學(xué)生成績總體有所提高,成績分布更趨于正態(tài)分布,而且學(xué)生平時(shí)比較熱愛學(xué)習(xí),課堂學(xué)習(xí)氛圍更為活躍。
圖4 成績分布對(duì)比
數(shù)據(jù)結(jié)構(gòu)是一門抽象程度高、邏輯性強(qiáng)并注重實(shí)踐的計(jì)算機(jī)類課程,對(duì)培養(yǎng)學(xué)生的邏輯性、動(dòng)手能力具有重要作用。針對(duì)授課中存在的問題,研究論述了在教學(xué)理念和教學(xué)方法上的改革,指出了教學(xué)互動(dòng)性、學(xué)生主體性和知識(shí)重構(gòu)性是教學(xué)理念的三個(gè)重要方面。教學(xué)方法上,研究了課外書籍自主閱讀、前導(dǎo)課程知識(shí)回顧、案例驅(qū)動(dòng)教學(xué)、編程能力培養(yǎng)和成績評(píng)定五方面的改進(jìn)措施。經(jīng)改革前后教學(xué)班級(jí)的對(duì)比分析,雖然取得了初步成效,但仍存不足,活學(xué)活用有待進(jìn)一步加強(qiáng)。后期教學(xué)工作中需不斷積累課程教學(xué)經(jīng)驗(yàn),深化教學(xué)方法改革,運(yùn)用新技術(shù)與新方法探索更加有利于數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)模式。