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