摘要:針對計算機(jī)科學(xué)與技術(shù)專業(yè)的學(xué)生學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),為了激發(fā)學(xué)生學(xué)習(xí)的興趣和積極性,將案例教學(xué)融入課堂,以實際案例為主線,通過提出案例、分析案例和解決案例三個步驟完成教學(xué),培養(yǎng)和提升學(xué)生解決實際案例過程中學(xué)習(xí)通過建立模型和算法的設(shè)計,將實際案例轉(zhuǎn)化為計算機(jī)可以解決的問題,有效解決實際問題。最終達(dá)到培養(yǎng)學(xué)生思考問題、分析問題和解決問題的能力。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);案例教學(xué);哈夫曼算法
中圖分類號:TP311? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)17-0157-02
1 數(shù)據(jù)結(jié)構(gòu)的教學(xué)分析
1.1 學(xué)情分析
數(shù)據(jù)結(jié)構(gòu)是計算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生的專業(yè)核心課程,學(xué)生的特點(diǎn)是基礎(chǔ)知識扎實,邏輯思維能力和解決案例問題的能力一般,將生活中的實際案例轉(zhuǎn)化為計算機(jī)可以解決的模型,通過求解模型解決實際問題的能力較弱,課堂氣氛不活躍。針對上述問題,教師不僅需要給學(xué)生講解最基本的知識點(diǎn),還需要給學(xué)生拓展相應(yīng)知識點(diǎn)的算法和用這些知識點(diǎn)和算法如何求解實際案例。讓學(xué)生深切體會到數(shù)據(jù)結(jié)構(gòu)在解決計算機(jī)領(lǐng)域的某些實際問題有著重要的作用,從而調(diào)動學(xué)生學(xué)習(xí)的積極性,讓被動的課程學(xué)習(xí)變?yōu)橹鲃訉W(xué)習(xí)。最終達(dá)到培養(yǎng)學(xué)生思考案例、分析案例和解決案例的能力,養(yǎng)成嚴(yán)格、科學(xué)、規(guī)范的思維習(xí)慣,為將來從事工作和研究打下牢固的基礎(chǔ)。
1.2教學(xué)目標(biāo)
通過該門課程的教學(xué),使學(xué)生掌握“數(shù)據(jù)結(jié)構(gòu)”中的基本概念、合理組織數(shù)據(jù)的基本方法、高效處理數(shù)據(jù)的基本算法、常用的經(jīng)典算法、通用的程序設(shè)計技術(shù),以及面對實際問題時選擇恰當(dāng)數(shù)據(jù)結(jié)構(gòu)和相應(yīng)算法的能力。
2以實際案例為主線進(jìn)行教學(xué)活動
在數(shù)據(jù)結(jié)構(gòu)的教學(xué)過程中,結(jié)合計算機(jī)學(xué)院專業(yè)的特點(diǎn),以實際案例為主線,通過提出案例、分析案例、解決案例三個步驟完成主要教學(xué)如圖1所示。提出案例的主要目的是激發(fā)學(xué)生學(xué)習(xí)的興趣,讓學(xué)生的學(xué)習(xí)由被動變?yōu)橹鲃?,讓學(xué)生對問題產(chǎn)生興趣,愿意主動積極地去解決實際案例。分析案例主要通過新課的導(dǎo)入,針對具體的實際案例,給學(xué)生分析該如何去解決這個案例,為了解決這個案例,已經(jīng)學(xué)習(xí)了哪些知識,哪些知識是沒有學(xué)習(xí)的,然后將新課進(jìn)行導(dǎo)入。解決案例,通過導(dǎo)入的新課,然后講解新的知識點(diǎn),從理論到算法,對學(xué)生進(jìn)行深入的講解,通過新學(xué)習(xí)的知識和算法,來求解提出的案例,這樣既讓學(xué)生復(fù)習(xí)新學(xué)習(xí)的知識點(diǎn)和算法又讓學(xué)生學(xué)會如何通過已經(jīng)學(xué)習(xí)的知識點(diǎn)和算法來求解實際案例。以實際案例為主線的教學(xué)優(yōu)勢是培養(yǎng)學(xué)生解決實際案例能力的短板。培養(yǎng)學(xué)生思考案例、分析案例和解決案例的能力,實踐過程中學(xué)習(xí)通過建立模型和算法的設(shè)計,將實際案例轉(zhuǎn)化為計算機(jī)可以解決的問題,進(jìn)一步通過所學(xué)習(xí)的知識點(diǎn)和算法有效的解決實際問題。
下面筆者通過最優(yōu)樹及其應(yīng)用[1]的教學(xué)活動給出提出案例、分析案例和解決案例的三個步驟。通過案例用機(jī)器分辨一些紙幣,假設(shè)各種幣值的紙幣出現(xiàn)的概率不同?,F(xiàn)在需要解決的問題是如何設(shè)計一個分辨紙幣的方法,使得所需的時間最少?下面通過和學(xué)生一起分析這個實際案例,可以發(fā)現(xiàn)二元樹可以解決這個案例,但是不同的二元樹所用的時間不同,如何找到所用時間最短的二元樹是解決這個案例的關(guān)鍵點(diǎn),則二元樹不是解決這個案例的最佳方案,為了尋找最佳的方案,引出本節(jié)課學(xué)習(xí)的內(nèi)容最優(yōu)樹的概念和哈夫曼算法。下面給學(xué)生講解最優(yōu)樹的概念以及求解最優(yōu)樹的哈夫曼算法,哈夫曼算法的流程圖如圖2所示。最后和學(xué)生一起利用哈夫曼算法解決紙幣分辨的問題。最后讓學(xué)生課后以小組的形式解決當(dāng)字母出現(xiàn)的頻率不同,構(gòu)造字母的前綴碼使得傳輸?shù)亩M(jìn)制位最少。根據(jù)本節(jié)課所學(xué)習(xí)的內(nèi)容,可以構(gòu)造帶權(quán)的最優(yōu)樹; 在最優(yōu)樹上構(gòu)造前綴碼; 將前綴碼對應(yīng)于字母。因此,這個案例解決的關(guān)鍵點(diǎn)在于構(gòu)造最優(yōu)樹,可以通過學(xué)習(xí)的哈夫曼算法解決這個案例。教師最后只需要負(fù)責(zé)點(diǎn)評,讓學(xué)生自己獨(dú)立思考案例、解決案例。最后對所學(xué)習(xí)的知識點(diǎn)進(jìn)行拓展。
3 將案例教學(xué)法融入數(shù)據(jù)結(jié)構(gòu)課堂
將數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)分為課前、課中和課后,具體過程如圖3所示。課前,教師通過教學(xué)分析、教學(xué)設(shè)計。將教學(xué)資源推送給學(xué)生,有些基礎(chǔ)知識可以通過MOOC資源或者教師錄講課的小視頻推送給學(xué)生,讓學(xué)生自己學(xué)習(xí),有些知識點(diǎn)需要學(xué)生自主預(yù)習(xí)。課中具體的教學(xué)過程設(shè)計如圖4所示,教師通過課程導(dǎo)入、新課講解、求解問題和歸納總結(jié)四個步驟完成課堂的教學(xué)工作,學(xué)生在課堂中需要積極參與進(jìn)來,需要進(jìn)行小組討論,最后歸納總結(jié),課堂反饋。課后,教師需要評估教學(xué),鼓勵學(xué)生在課后以小組的形式相互設(shè)計問題,進(jìn)行描述模型并且通過所學(xué)習(xí)的知識點(diǎn)和算法進(jìn)行實際問題的求解,教師此時只需要負(fù)責(zé)引導(dǎo)和點(diǎn)評,讓學(xué)生自己獨(dú)立地思考案例、分析案例和解決案例。培養(yǎng)和提升學(xué)生在實際過程中解決實際案例的能力。讓學(xué)生的學(xué)習(xí)由被動變?yōu)橹鲃?,調(diào)動學(xué)生的積極性。
下面筆者通過最優(yōu)樹及其應(yīng)用的教學(xué)活動給出課前、課中和課后的教學(xué)活動。課前利用雨課堂給學(xué)生布置自主預(yù)習(xí)的內(nèi)容,復(fù)習(xí)之前學(xué)習(xí)過的二元樹的概念以及相關(guān)的定理。課中,通過提出實際案例,用機(jī)器分辨紙幣的例子,激發(fā)學(xué)生的學(xué)習(xí)興趣,調(diào)動學(xué)習(xí)的積極性和主動性,從而獲得較好的教學(xué)效果。探究新知,啟發(fā)學(xué)生發(fā)現(xiàn)二元樹的概念可以解決實際案例,但是不能達(dá)到最優(yōu),達(dá)到最優(yōu)需要找到二元樹中權(quán)值最小的那一顆二元樹,這就是本節(jié)課需要學(xué)習(xí)的內(nèi)容。知識回顧,通過回顧二元樹的概念,加深之前所學(xué)習(xí)的知識,并且為新知識的學(xué)習(xí)提到鋪墊的作用。講授新知,講授最優(yōu)樹的概念和哈夫曼算法,激發(fā)學(xué)生尋找復(fù)雜度更低的算法,最后給出機(jī)器分辨紙幣的解決方案,如圖5所示,Matlab軟件的代碼[2-3],促進(jìn)學(xué)生學(xué)習(xí)的積極性和激發(fā)他們的興趣。求解實際案例,通過實際案例的求解,來鞏固本節(jié)課的教學(xué)重點(diǎn)和教學(xué)難點(diǎn)。最后進(jìn)行課堂小結(jié),回顧本節(jié)課的教學(xué)內(nèi)容,和學(xué)生一起總結(jié)教學(xué)重點(diǎn)和教學(xué)難點(diǎn)。進(jìn)行知識拓展,開拓學(xué)生的視野、激發(fā)學(xué)生學(xué)習(xí)的興趣。
4 通過案例教學(xué)培養(yǎng)學(xué)生的應(yīng)用型思維模式
案例教學(xué)一個最直接的應(yīng)用型思維模式就是課程設(shè)計。完成好課程設(shè)計,是為了更好地培養(yǎng)學(xué)生的應(yīng)用型思維模式,這樣有益于學(xué)生將來的就業(yè)和工作。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計[4,5]的目標(biāo)使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作實現(xiàn)算法;針對選定的題目學(xué)會分析數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu),結(jié)合C語言程序設(shè)計所學(xué)的知識,按要求完成設(shè)計方案。對于整體的設(shè)計需要學(xué)生完成以下幾個步驟如圖6所示,具體為:明確設(shè)計題目的任務(wù),總體功能的分析、編碼和測試、最終完成設(shè)計報告,最后教師對學(xué)生的課程設(shè)計內(nèi)容和設(shè)計報告進(jìn)行評價和驗收。
在應(yīng)用型思維為主的教學(xué)過程中安排實踐教學(xué),實踐教學(xué)的實施過程就是教師與學(xué)生互動的過程,通過實踐教學(xué),有效引導(dǎo)學(xué)生的自主學(xué)習(xí),以教師為主導(dǎo),學(xué)生積極配合的互動交流模式。
5 小結(jié)
針對教學(xué)重點(diǎn)和難點(diǎn),把應(yīng)用型思維嵌入數(shù)據(jù)結(jié)構(gòu)課堂。案例教學(xué)以教師的引導(dǎo)為基礎(chǔ),把研究性學(xué)習(xí)方法應(yīng)用到實踐過程中,以某個實際案例為主線,通過案例的提出、分析和解決三個步驟完成求解。具體通過案例引入問題,啟發(fā)學(xué)生思考,從而化解教學(xué)重點(diǎn)和難點(diǎn)。學(xué)生在實踐過程中學(xué)習(xí)通過建立模型和算法的設(shè)計,將實際案例轉(zhuǎn)化為計算機(jī)可以解決的問題,有效解決實際案例。結(jié)合學(xué)生自身掌握計算機(jī)操作水平及自身對知識的理解能力來設(shè)計相應(yīng)的實踐內(nèi)容。對涉及應(yīng)用的知識點(diǎn),具體內(nèi)容可以是問題導(dǎo)向型的,主要利用相關(guān)知識來解決某個學(xué)科問題或?qū)嶋H問題,但具體是什么問題是開放的。在應(yīng)用型思維為主的教學(xué)過程中安排實踐教學(xué),通過實踐教學(xué),有效引導(dǎo)學(xué)生的自主學(xué)習(xí),從而有效提高教學(xué)效果。
參考文獻(xiàn):
[1] 耿國華,張德同,周明全,等.數(shù)據(jù)結(jié)構(gòu):用C語言描述[M].2版.北京:高等教育出版社,2015.
[2] 張巖,吳水根.MATLAB優(yōu)化算法[M].北京:清華大學(xué)出版社,2017.
[3] 劉浩,韓晶.MATLAB R2020a完全自學(xué)一本通[M].北京:電子工業(yè)出版社,2020.
[4] 陳媛,何波,蔣鵬.數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)指導(dǎo)·實驗指導(dǎo)·課程設(shè)計[M].北京:機(jī)械工業(yè)出版社,2008.
[5] 蘇仕華,魏韋魏,王敬生.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計[M].2版.北京:機(jī)械工業(yè)出版社,2010.
收稿日期:2021-12-18
基金項目:寶雞文理學(xué)院第十六批校級教改資助項目研究成果(項目編號:21JGYB50)
作者簡介:吳小娥(1978—), 女,陜西寶雞人,工學(xué)碩士,講師,研究方向為模式識別。