劉海霞,冉宇瑤,王菊雅
(浙江理工大學(xué)科技與藝術(shù)學(xué)院,上虞 312369)
《數(shù)據(jù)結(jié)構(gòu)與算法》是應(yīng)用型本科院校(獨(dú)立學(xué)院)計(jì)算機(jī)科學(xué)與技術(shù)及其相關(guān)專(zhuān)業(yè)的專(zhuān)業(yè)基礎(chǔ)課程,是許多后續(xù)課程如數(shù)據(jù)庫(kù)原理、算法分析、操作系統(tǒng)等的基礎(chǔ)[1]。該課程主要培養(yǎng)學(xué)生抽象思維能力、邏輯思維能力等,鍛煉學(xué)生分析問(wèn)題、解決問(wèn)題的能力,抽象程度較高,這使得《數(shù)據(jù)結(jié)構(gòu)與算法》成為一門(mén)公認(rèn)的比較難學(xué)的課程。如何培養(yǎng)學(xué)生利用抽象的理論為,解決世界軟件設(shè)計(jì)中的問(wèn)題,是高校教師應(yīng)該特別關(guān)注并亟待解決的問(wèn)題。對(duì)于獨(dú)立學(xué)院,這些注重應(yīng)用型的本科院校,學(xué)生本身的特點(diǎn)是理論基礎(chǔ)較差、學(xué)習(xí)積極性不高,很難達(dá)到好的教學(xué)效果。因此,提高學(xué)生數(shù)據(jù)結(jié)構(gòu)與算法的理解與分析能力,采用動(dòng)畫(huà)教學(xué)模式對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》實(shí)施教學(xué)改革,吸引學(xué)生學(xué)習(xí)的興趣,提高教學(xué)效率是刻不容緩的問(wèn)題。
(1)先修課程掌握不夠扎實(shí)
課程的學(xué)習(xí)需要學(xué)生先修高等數(shù)學(xué)、C語(yǔ)言或C++語(yǔ)言、離散數(shù)學(xué)等學(xué)科,存在部分學(xué)生前面的語(yǔ)言及本課程理論學(xué)習(xí)掌握不夠扎實(shí),在課堂上能聽(tīng)懂,一旦動(dòng)手上機(jī),就顯得力不從心。
(2)課程理論性強(qiáng)
《數(shù)據(jù)結(jié)構(gòu)與算法》中涉及到很多的概念、抽象模型及算法,對(duì)模型和算法的理解,需要學(xué)生掌握扎實(shí)的數(shù)學(xué)基礎(chǔ)和和邏輯推理能力[2]。而獨(dú)立院校的學(xué)生數(shù)學(xué)基礎(chǔ)相對(duì)較弱,邏輯分析不強(qiáng),學(xué)習(xí)興趣也不高,因此在學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)與算法》課程時(shí),顯得更加困難。
(3)學(xué)生實(shí)踐能力弱
在理論教學(xué)過(guò)程中,很多學(xué)生反映,課堂上教師講的知識(shí)點(diǎn)都能聽(tīng)懂,對(duì)課后布置的涉及少量的邏輯結(jié)構(gòu)的書(shū)面作業(yè)也能夠認(rèn)真地完成。但是,課后自己獨(dú)立編寫(xiě)程序卻無(wú)從下手。而《數(shù)據(jù)結(jié)構(gòu)與算法》書(shū)上的代碼都是偽代碼,任何一個(gè)算法的實(shí)現(xiàn)都需要編寫(xiě)主函數(shù)、定義各類(lèi)變量等,因此實(shí)現(xiàn)起來(lái)更加困難。
對(duì)于目前存在的問(wèn)題,主要從兩個(gè)大的方面對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》進(jìn)行改革:理論方面采用動(dòng)畫(huà)和案例展現(xiàn)每個(gè)知識(shí)點(diǎn)的運(yùn)行過(guò)程;實(shí)踐方面采用驗(yàn)證性實(shí)踐、設(shè)計(jì)性實(shí)踐、綜合性實(shí)踐等由淺入深的方式進(jìn)行。首先激發(fā)學(xué)生學(xué)習(xí)的興趣,掌握扎實(shí)的理論基礎(chǔ),然后逐步介入編程,提高動(dòng)手能力。
(1)“啟發(fā)式”教學(xué)模式
啟發(fā)式教學(xué),就是根據(jù)教學(xué)目的、內(nèi)容、學(xué)生的知識(shí)水平和知識(shí)規(guī)律,運(yùn)用各種教學(xué)手段,采用啟發(fā)誘導(dǎo)辦法傳授知識(shí)、培養(yǎng)能力,使學(xué)生積極主動(dòng)地學(xué)習(xí),以促進(jìn)身心發(fā)展?!稊?shù)據(jù)結(jié)構(gòu)與算法》課程理論性強(qiáng)、概念多、算法解決方式靈活[3],因此,在課堂教學(xué)方面首先采用“啟發(fā)式”的教學(xué)模式,課堂上討論的方式,形成“問(wèn)題-討論-分析-總結(jié)”的模式。
例如:在講棧和隊(duì)列這一章時(shí),先介紹了棧和隊(duì)列的特性,然后進(jìn)行舉例。隊(duì)列采用順序表存儲(chǔ)機(jī)構(gòu),在模擬運(yùn)算時(shí),出現(xiàn)了“假溢出”現(xiàn)象。如何解決呢?請(qǐng)學(xué)生結(jié)合生活中排隊(duì)現(xiàn)象,提出問(wèn)題解決方案。如元素遷移、計(jì)數(shù)、采用循環(huán)隊(duì)列等,再逐步分析各方案的優(yōu)缺點(diǎn),由學(xué)生自己選擇采用哪種方案更佳,逐步深入。另外,若采用循環(huán)隊(duì)列解決,又會(huì)出現(xiàn)判斷隊(duì)列滿(mǎn)或空相同的情況,如何進(jìn)行解決?一次逐步引出問(wèn)題,并解決問(wèn)題;提出解決方案,分析解決方案的優(yōu)劣,最終達(dá)到認(rèn)識(shí)問(wèn)題并解決問(wèn)題的目的。通過(guò)這種方式的教學(xué),學(xué)生從發(fā)現(xiàn)問(wèn)題到解決問(wèn)題整個(gè)過(guò)程都積極參與,學(xué)習(xí)采用借鑒的手段,認(rèn)識(shí)到解決問(wèn)題的多種方案,學(xué)習(xí)分析評(píng)價(jià)的方法,選擇更適合需求的解決辦法。
(2)“案例+動(dòng)畫(huà)式”教學(xué)模式
在教學(xué)中選擇基礎(chǔ)的知識(shí)點(diǎn)作為案例,通過(guò)“案例”內(nèi)容的研究學(xué)習(xí),激發(fā)學(xué)生深入探究的興趣。例如講解棧和隊(duì)列一章時(shí),將我們?nèi)粘I钪谐E龅降寞B盤(pán)子、食堂排隊(duì)買(mǎi)飯等現(xiàn)象聯(lián)系起來(lái)進(jìn)行比喻說(shuō)明。采用這樣的方式,學(xué)生不僅聽(tīng)起來(lái)有興趣,并且易于理解。根據(jù)各個(gè)章節(jié)內(nèi)容的知識(shí)點(diǎn),利用Flash動(dòng)畫(huà)進(jìn)行展示抽象的內(nèi)容實(shí)現(xiàn)過(guò)程,使學(xué)生通俗易懂的理解掌握各個(gè)概念,更深理解課堂內(nèi)容。眼睛看到的比耳朵聽(tīng)到的更加真實(shí)、更加直觀,同時(shí)會(huì)吸引學(xué)生學(xué)習(xí)的興趣,提高了教學(xué)效率。
通過(guò)對(duì)獨(dú)立學(xué)院學(xué)生的調(diào)查與分析,根據(jù)機(jī)電系各個(gè)專(zhuān)業(yè)的培養(yǎng)計(jì)劃,修訂實(shí)踐教學(xué)項(xiàng)目,設(shè)計(jì)實(shí)踐教學(xué)案例。堅(jiān)持由簡(jiǎn)到難,由淺入深的原則,開(kāi)展實(shí)踐教學(xué)。主要分為驗(yàn)證性實(shí)踐、設(shè)計(jì)性實(shí)踐和綜合性實(shí)踐,其中通信專(zhuān)業(yè)、電子專(zhuān)業(yè)、自動(dòng)化專(zhuān)業(yè)只需要做到驗(yàn)證性實(shí)踐和設(shè)計(jì)性實(shí)踐,對(duì)學(xué)習(xí)能力比較強(qiáng)的學(xué)生,可以去選做綜合性實(shí)踐;計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè),要求做到綜合性實(shí)踐,并掌握解決實(shí)際問(wèn)題的能力,實(shí)踐教學(xué)層次如表1所示:
表1 實(shí)踐性教學(xué)
根據(jù)本學(xué)院課程內(nèi)容先進(jìn)行整體設(shè)計(jì),如表2所示。然后根據(jù)不同教學(xué)方式,再分布進(jìn)行方案的整理。
(1)動(dòng)畫(huà)教學(xué)
《數(shù)據(jù)結(jié)構(gòu)與算法》是一門(mén)內(nèi)容多、概念多、邏輯性強(qiáng)、高度抽象、實(shí)踐性強(qiáng)的課程,很多學(xué)生在接觸這門(mén)課的時(shí)候,普遍存在上課能聽(tīng)懂、下課不會(huì)做這種眼高手低的現(xiàn)象。為了解決將抽象思維進(jìn)行簡(jiǎn)單、具體化,使學(xué)生更好理解,本次改革采用動(dòng)畫(huà)的教學(xué)方式,將數(shù)據(jù)結(jié)構(gòu)課程分成4個(gè)大模塊:線性結(jié)構(gòu)(線性表、棧和隊(duì)列、串、數(shù)組和廣義表)、樹(shù)狀結(jié)構(gòu)(樹(shù)、二叉樹(shù)和哈夫曼樹(shù))、圖形結(jié)構(gòu)(有向圖、無(wú)向圖)、混合結(jié)構(gòu)(查找和排序)。對(duì)不同的學(xué)習(xí)模塊和知識(shí)點(diǎn),用仿真動(dòng)畫(huà)的方式將問(wèn)題及解決方案展示出來(lái)。如線性表的生成、插入、刪除等;入棧、出棧、入隊(duì)列、出隊(duì)列等;三元組的轉(zhuǎn)換,二叉樹(shù)的生成、遍歷,樹(shù)與二叉樹(shù)的轉(zhuǎn)換、哈夫曼樹(shù)的構(gòu)建等;圖的遍歷、拓?fù)渑判?、最小生成?shù)、求關(guān)鍵路徑和最短路徑的過(guò)程以及各類(lèi)查找和排序,等等,圖1顯示各個(gè)動(dòng)畫(huà)實(shí)例列表,圖2是圖的深度遍歷動(dòng)畫(huà),從V4節(jié)點(diǎn)開(kāi)始遍歷。
表2 整體課程內(nèi)容設(shè)計(jì)圖
圖1 動(dòng)畫(huà)實(shí)例列表
圖2 圖的深度優(yōu)先遍歷
(2)分組討論的啟發(fā)式教學(xué)法
本次教學(xué)改革注重學(xué)生的主觀能動(dòng)性,教師重點(diǎn)做引導(dǎo)進(jìn)行開(kāi)展。根據(jù)學(xué)生的水平進(jìn)行分組,直接參與課題討論和問(wèn)題解決,引導(dǎo)學(xué)生樹(shù)立客觀的學(xué)習(xí)態(tài)度和掌握科學(xué)的實(shí)際方法,培養(yǎng)他們的計(jì)算思維和創(chuàng)新能力。例如,在講解矩陣轉(zhuǎn)置時(shí),可以采用對(duì)比的方式:先介紹內(nèi)容,引導(dǎo)學(xué)生利用已經(jīng)學(xué)過(guò)的線性代數(shù)知識(shí)點(diǎn)進(jìn)行轉(zhuǎn)置,然后采用剛剛學(xué)三元組表示進(jìn)行轉(zhuǎn)置。兩種解法做對(duì)比,啟發(fā)學(xué)生進(jìn)行思考,從空間復(fù)雜度、時(shí)間復(fù)雜度、操作效率等多方面討論二者的優(yōu)劣。在討論的過(guò)程中,任課教師進(jìn)行適當(dāng)?shù)奶嵝押鸵龑?dǎo),幫助學(xué)生在理解的基礎(chǔ)上掌握所學(xué)知識(shí)。
(3)案例教學(xué)
本次教學(xué)改革首先采用啟發(fā)和動(dòng)畫(huà)教學(xué),每一章比較抽象的知識(shí)點(diǎn)都制作成Flash動(dòng)畫(huà),根據(jù)動(dòng)畫(huà)模擬進(jìn)行理解。章節(jié)學(xué)習(xí)結(jié)束,每一章內(nèi)容布置一到兩個(gè)大的綜合案例,先組織學(xué)生進(jìn)行討論,提出解決問(wèn)題的關(guān)鍵,選擇合適存儲(chǔ)方式和算法,然后進(jìn)行上機(jī)檢驗(yàn)。通過(guò)一個(gè)學(xué)期的學(xué)習(xí),采用案例教學(xué)法能充分調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,開(kāi)拓他們的思維方式,使學(xué)生能夠主動(dòng)分析問(wèn)題、設(shè)計(jì)程序,最終解決問(wèn)題。
《數(shù)據(jù)結(jié)構(gòu)與算法》的動(dòng)畫(huà)制作,由相關(guān)參與教學(xué)改革的教師花費(fèi)了3個(gè)月的時(shí)間進(jìn)行完成。通過(guò)一個(gè)學(xué)期的應(yīng)用實(shí)踐,學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)與算法的理解相對(duì)深入很多,大部分學(xué)生感覺(jué)數(shù)據(jù)結(jié)構(gòu)也不是太難。案例的設(shè)計(jì)是根據(jù)不同專(zhuān)業(yè)學(xué)生情況進(jìn)行開(kāi)展的,整體來(lái)說(shuō),計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)的學(xué)生動(dòng)手能力相對(duì)比較強(qiáng),通信專(zhuān)業(yè)的學(xué)生在動(dòng)手方面比較欠缺,在實(shí)現(xiàn)課本上偽代碼時(shí),還是有一定的困難。后期需要修訂的方面主要體現(xiàn)在:(1)動(dòng)畫(huà)實(shí)例的優(yōu)化,使動(dòng)畫(huà)更加生動(dòng);案例的更新,使其更貼近生活;(2)知識(shí)點(diǎn)題庫(kù)的整理,供學(xué)生課下練習(xí);(3)手機(jī)微信端App的開(kāi)發(fā),方便學(xué)生想學(xué)就學(xué),想練就練。