趙 靜
(蘭州職業(yè)技術(shù)學(xué)院信息工程系,蘭州 730070)
算法演示在“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中的應(yīng)用探討
趙 靜
(蘭州職業(yè)技術(shù)學(xué)院信息工程系,蘭州 730070)
算法是“數(shù)據(jù)結(jié)構(gòu)”課程的重要內(nèi)容。就當(dāng)前“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)現(xiàn)狀,討論了算法演示在“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中應(yīng)用的可行性并提出了具體應(yīng)用方法。
數(shù)據(jù)結(jié)構(gòu);算法演示;輔助教學(xué)
“數(shù)據(jù)結(jié)構(gòu)”課程作為計(jì)算機(jī)及相關(guān)專業(yè)的專業(yè)基礎(chǔ)課,其教學(xué)歷來(lái)都受到各個(gè)高校的重視。該課程的培養(yǎng)目的就是培養(yǎng)學(xué)生編寫清晰、準(zhǔn)確的算法和程序的能力。然而由于“數(shù)據(jù)結(jié)構(gòu)”課程的內(nèi)容抽象難以理解,特別是算法部分的講解難度比較大,而且學(xué)生的學(xué)習(xí)和理解也比較困難,因此我們可以借助算法演示軟件這一輔助教學(xué)工具來(lái)降低算法講解教學(xué)中的難度。
算法演示以直觀的動(dòng)畫演示界面將數(shù)據(jù)結(jié)構(gòu)模型和算法的緊密聯(lián)系展現(xiàn)出來(lái),是一種有效的、可用于課堂和課后的輔助教學(xué)手段,以此調(diào)動(dòng)學(xué)生的積極性,激發(fā)學(xué)生的學(xué)習(xí)興趣,從而提高教師授課的效果,降低學(xué)生學(xué)習(xí)的難度。
目前在大多數(shù)高校該課程中算法內(nèi)容的教學(xué)方式主要是以教師和學(xué)生手動(dòng)抄寫算法語(yǔ)句為主,沒(méi)有將算法在實(shí)驗(yàn)中驗(yàn)證,而且通常教師在講解時(shí)往往忽視了算法與數(shù)據(jù)結(jié)構(gòu)模型的結(jié)合,這就使得算法與數(shù)據(jù)結(jié)構(gòu)模型被孤立起來(lái)了。這樣的教學(xué)方式更增加了學(xué)生學(xué)習(xí)的難度。同這種傳統(tǒng)的教學(xué)方法相比,算法演示主要是利用可視化技術(shù)和多媒體工具,以生動(dòng)直觀的畫面顯示方式輔助“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué),并具有如下的一些優(yōu)越性:
算法演示實(shí)驗(yàn)是理論在實(shí)踐中的運(yùn)用,能輔助教師講解理論內(nèi)容,幫助學(xué)生學(xué)習(xí)和理解。使用算法演示的目的之一就是提高“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)效率。只要教師和學(xué)生都充分合理地使用算法演示軟件,教學(xué)效率必然會(huì)有很大提高。
“數(shù)據(jù)結(jié)構(gòu)”課程是一門專業(yè)基礎(chǔ)課,其先行課程都是一些泛泛的、無(wú)需實(shí)驗(yàn)的理論課程,在這種情況下,學(xué)生的動(dòng)手實(shí)踐能力還處于初級(jí)階段。算法演示能以其動(dòng)畫性、新穎性吸引學(xué)生的注意力,激起學(xué)生動(dòng)手實(shí)踐的求知欲,再加上教師的適當(dāng)指導(dǎo)和鼓勵(lì),一定程度上能幫助學(xué)生培養(yǎng)和提高動(dòng)手實(shí)踐的能力。
大學(xué)生畢業(yè)后,無(wú)論是前往工作單位工作,還是繼續(xù)深造讀研究生,學(xué)習(xí)能力和科研能力都是必需的素質(zhì)。算法演示強(qiáng)調(diào)學(xué)生的參與,調(diào)動(dòng)學(xué)生的自學(xué)積極性,鍛煉學(xué)生的思維,幫助培養(yǎng)學(xué)習(xí)和科研能力,以適應(yīng)以后的工作和學(xué)習(xí)生活。
“數(shù)據(jù)結(jié)構(gòu)”課程中涉及的算法比較多,將所有的算法都進(jìn)行演示是不現(xiàn)實(shí)的,因此為了幫助學(xué)生理解和學(xué)習(xí),需要演示的算法必須精心選擇。一般遵循經(jīng)典的、典型的、能夠說(shuō)明理論問(wèn)題并且易于實(shí)現(xiàn)的原則去選擇要演示的算法。按照這一原則,我們精心挑選了一些算法,線性結(jié)構(gòu)部分的算法有線性鏈表的建立、插入、刪除算法,順序棧的元素壓入和彈出、漢諾塔遞歸算法,鏈?zhǔn)疥?duì)列的建立、插入、刪除算法,三元組的轉(zhuǎn)置等;樹(shù)結(jié)構(gòu)部分的算法有樹(shù)結(jié)點(diǎn)的插入、刪除操作,二叉樹(shù)的前序、中序、后序遍歷,線索二叉樹(shù)的構(gòu)建,Huffman樹(shù)的構(gòu)建,森林與二叉樹(shù)的相互轉(zhuǎn)換等;圖結(jié)構(gòu)部分的算法包括圖的深度、廣度優(yōu)先搜索,Prim算法和 Kruskal算法,拓?fù)渑判?Dijkstra算法等;還有一些綜合應(yīng)用的算法,如線性表查找,二叉排序樹(shù)的生成、樹(shù)結(jié)點(diǎn)的插入和刪除,平衡二叉樹(shù)的節(jié)點(diǎn)插入,B+樹(shù)、B-樹(shù)的節(jié)點(diǎn)插入和刪除,折半查找算法,分塊查找算法,冒泡排序,直接插入排序,歸并排序,希爾排序,快速排序,簡(jiǎn)單選擇排序,堆排序和堆的生成等。對(duì)于這些選出來(lái)的算法,可以按照“數(shù)據(jù)結(jié)構(gòu)”課程的章節(jié)內(nèi)容順序進(jìn)行組織,也可以按照獨(dú)立的知識(shí)單元進(jìn)行組織,方便在教學(xué)時(shí)使用。
對(duì)于一個(gè)具體的算法,演示的內(nèi)容包括用某種高級(jí)語(yǔ)言編寫的算法程序,該算法所使用的數(shù)據(jù)結(jié)構(gòu)模型,算法執(zhí)行過(guò)程中數(shù)據(jù)結(jié)構(gòu)的動(dòng)態(tài)變化和跟蹤等。從軟件的角度看,算法演示界面可以分為三個(gè)部分:算法動(dòng)態(tài)跟蹤區(qū)、圖形化動(dòng)態(tài)演示區(qū)以及全局控制。
算法動(dòng)態(tài)跟蹤區(qū)要將用某種高級(jí)語(yǔ)言編寫的算法程序顯示在演示界面上,根據(jù)采用的教材不同,算法可以用類 C、類 PASCAL或類 JAVA等語(yǔ)言編寫,圖形化動(dòng)態(tài)演示將算法操縱的數(shù)據(jù)結(jié)構(gòu)模型用圖形的形式表達(dá)出來(lái),控制部分是交互的接口,可自定義演示輸入,修改演示播放方式和效果等。
理論上數(shù)據(jù)結(jié)構(gòu)模型的每一步變化都對(duì)應(yīng)著算法的若干語(yǔ)句,其中并將其變化用圖形動(dòng)態(tài)變化的方法形象直觀地展現(xiàn)出來(lái);算法動(dòng)態(tài)跟蹤要將圖形化動(dòng)態(tài)演示與對(duì)應(yīng)的算法執(zhí)行的語(yǔ)句同步顯示;這三個(gè)部分的相互關(guān)系如圖1所示。
需要說(shuō)明的是,演示軟件的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)技術(shù)屬于軟件技術(shù)領(lǐng)域的內(nèi)容,不在本文的討論范圍內(nèi)。
算法演示是能夠?qū)ⅰ皵?shù)據(jù)結(jié)構(gòu)”課程的抽象理論轉(zhuǎn)化為具體視覺(jué)感官的有力手段,通過(guò)將算法語(yǔ)句與具體的數(shù)據(jù)結(jié)構(gòu)模型對(duì)應(yīng)顯示來(lái)達(dá)到理論與實(shí)踐結(jié)合輔助“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)的目的。而“教學(xué)”包含了教師教和學(xué)生學(xué)兩個(gè)方面,算法演示既適合于教師授課時(shí)使用,又適合于學(xué)生學(xué)習(xí)時(shí)使用。下面就從教師和學(xué)生兩個(gè)方面談?wù)勊惴ㄑ菔镜倪\(yùn)用。
教師要正確合理地使用算法演示。首先,同物理化學(xué)等課程入門時(shí)做實(shí)驗(yàn)一樣,教師可將算法演示作為實(shí)驗(yàn)內(nèi)容親自示范操作并講解。這種入門性的實(shí)驗(yàn)內(nèi)容能夠激發(fā)學(xué)生的求知欲和學(xué)習(xí)積極性。其次,教師應(yīng)將理論講解與實(shí)驗(yàn)演示充分結(jié)合。理論是課程教學(xué)大綱要求的內(nèi)容,算法演示只是一種輔助教學(xué)的手段,不能用算法演示代替理論講解,而應(yīng)該在講解完理論之后進(jìn)行算法演示,在演示的同時(shí)還要貫穿理論內(nèi)容,體現(xiàn)出演示為理論講解服務(wù)的宗旨。再次,教師應(yīng)當(dāng)在演示過(guò)程中充分地調(diào)動(dòng)學(xué)生的積極性,恰當(dāng)?shù)亟M織學(xué)生討論,鼓勵(lì)學(xué)生提出問(wèn)題,指導(dǎo)學(xué)生解決問(wèn)題,通過(guò)這樣的方式逐漸提高學(xué)生分析問(wèn)題和解決問(wèn)題的能力。在這一過(guò)程中還要注意師生交流。最后,教師應(yīng)該留給學(xué)生適當(dāng)?shù)淖灾骺臻g讓學(xué)生在課后自己發(fā)揮,可以布置一些算法作業(yè)讓學(xué)生去實(shí)現(xiàn),或讓學(xué)生自行操作實(shí)驗(yàn),也可以讓學(xué)生嘗試實(shí)現(xiàn)算法演示的軟件部分,這樣有助于提高學(xué)生的動(dòng)手能力。
學(xué)生一直以來(lái)是教學(xué)活動(dòng)中的被動(dòng)方,在實(shí)際的教學(xué)中往往是教師教而學(xué)生不學(xué)。當(dāng)前的教學(xué)改革必須從根本上改變學(xué)生被動(dòng)接受知識(shí)的局面。算法演示具有調(diào)動(dòng)學(xué)生積極性的功能,學(xué)生應(yīng)該主動(dòng)地利用算法演示來(lái)提高學(xué)習(xí)效率。第一,學(xué)生應(yīng)利用課余時(shí)間自己動(dòng)手算法演示實(shí)驗(yàn),這樣不但能幫助學(xué)習(xí)和理解理論知識(shí),還有利于培養(yǎng)學(xué)生思維能力,提高學(xué)生自學(xué)能力。第二,學(xué)生應(yīng)在理解理論知識(shí)的基礎(chǔ)上多加思考,挖掘和學(xué)習(xí)深層知識(shí),同時(shí)試著去尋找和發(fā)現(xiàn)算法演示存在的缺點(diǎn)和不足,通過(guò)自己的思考去發(fā)現(xiàn)問(wèn)題,變被動(dòng)學(xué)習(xí)為主動(dòng)發(fā)問(wèn)。第三,如果發(fā)現(xiàn)了理論知識(shí)或算法演示實(shí)驗(yàn)的缺陷和不足,學(xué)生應(yīng)積極與教師交流,尋求解決問(wèn)題的方法。對(duì)于算法演示實(shí)驗(yàn)的問(wèn)題,學(xué)生應(yīng)盡自己可能地去完善和改進(jìn)算法演示,例如可以增加更多演示的算法,或用更為生動(dòng)形象的方法演示等等。第四,學(xué)生應(yīng)積極主動(dòng)自己動(dòng)手做實(shí)驗(yàn),無(wú)論是重復(fù)現(xiàn)有的實(shí)驗(yàn)還是探尋新的實(shí)驗(yàn)內(nèi)容,動(dòng)手實(shí)踐對(duì)學(xué)生是大有裨益的,能加深學(xué)生的理論學(xué)習(xí)和理解,擴(kuò)大知識(shí)面,培養(yǎng)文獻(xiàn)檢索和動(dòng)手能力。此外還應(yīng)該從算法演示實(shí)驗(yàn)出發(fā),學(xué)著將實(shí)驗(yàn)融入到其他課程的教學(xué)當(dāng)中。第五,學(xué)生應(yīng)常常同教師交流和溝通,敢于表達(dá)自己的看法和意見(jiàn),共同促進(jìn)課程教學(xué)效率的提高。
例如,當(dāng)教師講解棧結(jié)構(gòu)和遞歸時(shí),演示算法是漢諾塔問(wèn)題。演示界面上顯示有漢諾塔問(wèn)題的遞歸算法。無(wú)須手動(dòng)抄寫算法,教師可仔細(xì)分析已經(jīng)顯示的算法,闡明遞歸理論,說(shuō)明遞歸算法的基本項(xiàng)與誘導(dǎo)項(xiàng),闡述遞歸算法與棧調(diào)用的聯(lián)系等,這是理論講解的部分。接下來(lái),教師要交待漢諾塔問(wèn)題和解決漢諾塔問(wèn)題的遞歸算法的思想,要注意驗(yàn)證遞歸理論。然后是算法演示,教師必須親自操作,仔細(xì)講解遞歸算法的自身調(diào)用、棧結(jié)構(gòu)的特點(diǎn)與壓棧和出棧的理論。在此過(guò)程中需要反復(fù)進(jìn)行演示,可以更改演示的初始輸入。然后可由學(xué)生自行操作以調(diào)動(dòng)學(xué)生的積極性和思維能力,并安排討論內(nèi)容,鼓勵(lì)學(xué)生思考發(fā)現(xiàn)問(wèn)題。課后教師可布置學(xué)生編寫其他的遞歸算法來(lái)加深學(xué)生知識(shí)的理解和掌握并訓(xùn)練學(xué)生編寫算法程序的能力。學(xué)生要積極主動(dòng)學(xué)習(xí),積極同教師交流,不斷地提高自己的專業(yè)能力。
為了適應(yīng)當(dāng)前教學(xué)改革的需要,“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)應(yīng)該從傳統(tǒng)的單一理論講解向多方式多手段講解轉(zhuǎn)變。通過(guò)本文的討論和分析,我們認(rèn)為應(yīng)將算法演示盡量融入課程教學(xué)中,以改善目前課程教學(xué)狀況。此外由于“數(shù)據(jù)結(jié)構(gòu)”課程的重要性,該課程的教學(xué)必須不斷探索創(chuàng)新,我們也將堅(jiān)持不懈地進(jìn)行該課程的教學(xué)和改革創(chuàng)新。
[1]朱燕紅.可視化軟件在數(shù)據(jù)結(jié)構(gòu)教學(xué)中的應(yīng)用[J].遠(yuǎn)程教育雜志,2006,(5).
[2]李冬梅,劉平.淺談《數(shù)據(jù)結(jié)構(gòu)》教學(xué)實(shí)踐與體會(huì) [J].福建電腦,2007,(8).
[3]銀麗萍,黃同成.《數(shù)據(jù)結(jié)構(gòu)》算法的可視化教學(xué)研究與實(shí)踐[J].邵陽(yáng)學(xué)院學(xué)報(bào):社會(huì)科學(xué)版,2008,(Z1).
[4]周澤輝.淺談高職學(xué)院數(shù)據(jù)結(jié)構(gòu)課程的“算法驅(qū)動(dòng)”教學(xué)[J].科教文匯,2009,(8).
TP311.12
A
1674-6341(2010)01-0109-02
2009-12-01
趙靜 (1981-),女,甘肅蘭州人,助教,從事計(jì)算機(jī)應(yīng)用及計(jì)算機(jī)軟件研究。
責(zé)任編輯:柴造坡