吳志芳 袁 嵩
摘要:本文針對(duì)“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)中存在的問題,從如何理清學(xué)生的知識(shí)結(jié)構(gòu)、提高學(xué)生的課堂效率、激發(fā)學(xué)生的學(xué)習(xí)興趣、培養(yǎng)學(xué)生的分析能力、強(qiáng)化學(xué)生的實(shí)踐能力等方面,提出了教學(xué)上的一些改進(jìn)措施。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);算法;學(xué)習(xí)興趣;邏輯思維能力
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
1引言
“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)專業(yè)的一門核心課程,在計(jì)算機(jī)教學(xué)中起著承上啟下的作用,一方面它以程序設(shè)計(jì)為基礎(chǔ),對(duì)學(xué)生進(jìn)行較復(fù)雜程序設(shè)計(jì)的訓(xùn)練,另一方面它又是后續(xù)專業(yè)課程如操作系統(tǒng)、數(shù)據(jù)庫(kù)等的基礎(chǔ),由此可見學(xué)好它的重要性?!皵?shù)據(jù)結(jié)構(gòu)”課程系統(tǒng)介紹了幾種常用的數(shù)據(jù)結(jié)構(gòu),討論其在計(jì)算機(jī)中如何存儲(chǔ),進(jìn)而對(duì)數(shù)據(jù)操作的各種算法進(jìn)行實(shí)現(xiàn)。通過這門課程的學(xué)習(xí),學(xué)生的軟件設(shè)計(jì)和編程水平將得到提高,使學(xué)生學(xué)會(huì)分析實(shí)際問題涉及的數(shù)據(jù)特性,以便為這些數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu),并采用適當(dāng)?shù)乃惴ㄌ幚頂?shù)據(jù),解決實(shí)際問題。
2教學(xué)現(xiàn)狀
“數(shù)據(jù)結(jié)構(gòu)”課程不僅內(nèi)容繁多,而且其理論性和抽象性還很強(qiáng),因此給教學(xué)帶來很大的難度。學(xué)生通常上課時(shí)能聽懂,能夠掌握一些基本知識(shí),會(huì)做題,但課程學(xué)完后,對(duì)自己到底學(xué)到了些什么、學(xué)了有什么用、怎么用感到很茫然。歸納一下,教學(xué)中主要存在以下問題:
學(xué)生難以建立對(duì)課程內(nèi)容的整體概念,無法將各知識(shí)點(diǎn)聯(lián)系起來;
理論課時(shí)減少,傳統(tǒng)教學(xué)方式已經(jīng)不適合當(dāng)前形勢(shì);
與實(shí)際應(yīng)用問題脫節(jié),學(xué)生感到枯燥,不知學(xué)了有什么用;
學(xué)生被動(dòng)理解算法,缺乏思維能力和分析問題能力的訓(xùn)練;
遇到實(shí)際應(yīng)用問題時(shí),學(xué)生往往束手無策,缺乏靈活運(yùn)用的意識(shí)。
3教學(xué)改進(jìn)措施
為了提高教學(xué)質(zhì)量,筆者針對(duì)以上的教學(xué)現(xiàn)狀,以學(xué)生為主體,教師為主導(dǎo),從以下幾個(gè)方面進(jìn)行教學(xué)改進(jìn)。
3.1理清學(xué)生的知識(shí)結(jié)構(gòu)
“數(shù)據(jù)結(jié)構(gòu)”課程內(nèi)容豐富,要求教學(xué)思路清晰、邏輯性強(qiáng),幫助學(xué)生構(gòu)建對(duì)數(shù)據(jù)結(jié)構(gòu)整體的理解,避免學(xué)生迷失在細(xì)枝末節(jié)中。如課程介紹時(shí)首先要讓學(xué)生理解數(shù)據(jù)結(jié)構(gòu)是討論非數(shù)值計(jì)算范疇問題的課程。數(shù)據(jù)結(jié)構(gòu)從邏輯關(guān)系上分為四類:線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖狀結(jié)構(gòu)和集合結(jié)構(gòu)。整個(gè)教學(xué)就以此為主線展開,隨后各章將就這四類結(jié)構(gòu)進(jìn)行詳細(xì)討論,如:第2章線性結(jié)構(gòu),第3章棧和隊(duì)列,可看成是限定性的線性結(jié)構(gòu)等;又如:第7章查找和第8章排序?qū)嶋H討論的就是集合結(jié)構(gòu),查找就是判定某個(gè)數(shù)據(jù)元素是否屬于查找表這個(gè)集合,而排序就是尋求集合中記錄從無序調(diào)整為有序的方法。
在每一章的課堂教學(xué)中,根據(jù)教學(xué)大綱的要求,需對(duì)教學(xué)內(nèi)容去粗取精,提煉出各章的框架體系,并按照數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)、運(yùn)算和運(yùn)算的實(shí)現(xiàn)這四步逐層展開討論。要重點(diǎn)突出,簡(jiǎn)潔明了而不求面面俱到。根據(jù)學(xué)生的實(shí)際情況,對(duì)那些學(xué)生感到困難的內(nèi)容,進(jìn)行有的放矢的講解。
3.2提高學(xué)生的課堂效率
傳統(tǒng)的板書教學(xué)固然重要,但若能與多媒體輔助教學(xué)手段相結(jié)合,將會(huì)取得事半功倍的效果。多媒體課件形象生動(dòng)、圖文并茂,非常適合“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)。教學(xué)中通過幻燈片展現(xiàn)知識(shí)點(diǎn),具有信息量大、內(nèi)容豐富生動(dòng)的特點(diǎn),并可節(jié)省大量的板書時(shí)間,提高教學(xué)效率。教學(xué)中通過Flash 動(dòng)畫演示算法的動(dòng)態(tài)執(zhí)行過程,可以極大地調(diào)動(dòng)學(xué)生聽課的積極性,有助于學(xué)生很好地理解和掌握所學(xué)內(nèi)容。比如在講解排序的時(shí)候,單純講解算法學(xué)生理解起來有些困難。如果在講授的同時(shí)配以Flash動(dòng)畫來模擬排序的全過程,就會(huì)使得算法描述形象生動(dòng),促進(jìn)了學(xué)生對(duì)算法的理解。
3.3激發(fā)學(xué)生的學(xué)習(xí)興趣
學(xué)生在課堂上如果只是一味被動(dòng)地接受知識(shí),很容易感到枯燥無味,教學(xué)效果也不好。其實(shí)學(xué)習(xí)知識(shí),學(xué)生最關(guān)心的是學(xué)了有什么用,因此為了激發(fā)學(xué)生的興趣,在教學(xué)過程中要始終強(qiáng)調(diào)數(shù)據(jù)結(jié)構(gòu)的應(yīng)用性。即:在學(xué)習(xí)新知識(shí)時(shí),先不急于講授,而是通過一個(gè)實(shí)際問題的引入,讓學(xué)生思考該怎樣解決,激起學(xué)生探究的欲望。然后將問題抽象成相應(yīng)的模型,并用數(shù)據(jù)結(jié)構(gòu)對(duì)它進(jìn)行描述,從而自然過渡到運(yùn)用新知識(shí)對(duì)問題的求解。這樣使學(xué)生認(rèn)識(shí)到數(shù)據(jù)結(jié)構(gòu)確實(shí)很有用,提高學(xué)習(xí)的主動(dòng)性。例如在講圖的最小生成樹時(shí),提出一個(gè)應(yīng)用背景:在n個(gè)城市之間架設(shè)通訊網(wǎng),由于地理?xiàng)l件不同,在不同城市間架設(shè)的費(fèi)用不等,怎樣選擇線路能使費(fèi)用達(dá)到最低。解決這樣的問題具有一定的挑戰(zhàn)性,同時(shí)也會(huì)激發(fā)起學(xué)生的求知欲。俗話說,“良好的開端是成功的一半”,此時(shí)趁熱打鐵引入數(shù)據(jù)結(jié)構(gòu)描述:這個(gè)問題就等價(jià)于構(gòu)造連通網(wǎng)的一個(gè)最小生成樹。即:n個(gè)城市表示為連通網(wǎng)中的頂點(diǎn),各個(gè)城市之間可能架設(shè)的通訊線路用邊表示,且架設(shè)每一條線路的經(jīng)費(fèi)用每一條邊上的權(quán)值表示。所以求得的一個(gè)最小的生成樹就對(duì)應(yīng)了使總的工程費(fèi)用最低的線路的選擇。在解決這個(gè)問題的過程中,自然地調(diào)動(dòng)學(xué)生參與的積極性,通過問題的不斷擴(kuò)展以及不同算法的討論開闊學(xué)生的思維,從而激發(fā)學(xué)生學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的濃厚興趣。
3.4培養(yǎng)學(xué)生的分析能力
算法的描述和理解是“數(shù)據(jù)結(jié)構(gòu)”課程的重點(diǎn)和難點(diǎn),教學(xué)過程中不僅要講解算法的思路,還要教授算法設(shè)計(jì)的思維方式,以提高學(xué)生的邏輯思維能力。通常的做法是:從問題出發(fā),先啟發(fā)學(xué)生從不同的角度尋求解決問題的最佳算法,然后與學(xué)生一起一步一步寫出程序,最后回過去重讀一遍程序,對(duì)不夠理想的地方加以改進(jìn)。經(jīng)過這樣由淺入深的訓(xùn)練后,不但消除了學(xué)生的編程恐懼感,增強(qiáng)了信心,還教會(huì)了學(xué)生考慮問題的方法、培養(yǎng)了學(xué)生的分析能力。比如在講解對(duì)鏈表的操作時(shí),教師可以先與學(xué)生一起分析在鏈表中插入一個(gè)元素的方法,此時(shí)教師應(yīng)一邊講一邊在黑板上畫出插入的演變過程;然后與學(xué)生一起寫出程序;最后讓學(xué)生加以模仿并編寫出在鏈表中刪除一個(gè)元素的算法。同時(shí)要讓學(xué)生知道,當(dāng)看不懂或?qū)懖怀鏊惴〞r(shí),可借用畫圖的方法幫助理解。又如在講授循環(huán)鏈表和雙鏈表時(shí),可分析建立單鏈表的算法,然后在此基礎(chǔ)上,通過對(duì)其中幾個(gè)語(yǔ)句的改動(dòng),實(shí)現(xiàn)了單循環(huán)鏈表、雙鏈表、雙循環(huán)鏈表的建立操作。采用這種方式的教學(xué),不僅培養(yǎng)了學(xué)生的思維能力,學(xué)生的編程能力也逐步提高。
3.5強(qiáng)化學(xué)生的實(shí)踐能力
“數(shù)據(jù)結(jié)構(gòu)”是實(shí)踐性很強(qiáng)的一門課程,實(shí)踐的好壞直接影響教學(xué)質(zhì)量。因此,在授課的同時(shí),需要安排一定學(xué)時(shí)的上機(jī)來加強(qiáng)實(shí)踐。在上機(jī)題目的選擇上,要體現(xiàn)分析設(shè)計(jì)能力的培養(yǎng)。由于數(shù)據(jù)結(jié)構(gòu)課程中各章數(shù)據(jù)結(jié)構(gòu)之間相對(duì)獨(dú)立,因此在每章的實(shí)踐中,可以針對(duì)單一的數(shù)據(jù)結(jié)構(gòu),選擇有代表性的上機(jī)題目進(jìn)行訓(xùn)練;對(duì)于基礎(chǔ)不好的學(xué)生,還應(yīng)引導(dǎo)他們將教材上用類C語(yǔ)言描述的算法用C語(yǔ)言實(shí)現(xiàn)。如:在學(xué)習(xí)第6章樹和二叉樹時(shí),上機(jī)可選擇實(shí)現(xiàn)二叉樹的基本操作,如:構(gòu)造二叉樹、遍歷二叉樹等。當(dāng)課程學(xué)完后,還需要安排一周半的課程設(shè)計(jì),設(shè)計(jì)一些難易適中的綜合性題目,訓(xùn)練學(xué)生綜合運(yùn)用知識(shí)的能力。如:可讓學(xué)生完成計(jì)算機(jī)和人對(duì)弈的問題,該問題是對(duì)樹知識(shí)的綜合運(yùn)用??傊?通過一定學(xué)時(shí)的上機(jī)調(diào)試和教師的指點(diǎn),將使學(xué)生掌握“數(shù)據(jù)結(jié)構(gòu)”的應(yīng)用和軟件開發(fā)方法,提高學(xué)生的實(shí)踐能力。
4結(jié)束語(yǔ)
經(jīng)過多年的“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué),筆者深深認(rèn)識(shí)到以學(xué)生為中心,注重學(xué)生能力的培養(yǎng)的重要性。作為教師應(yīng)與時(shí)俱進(jìn),一方面不斷提高自身專業(yè)水平,另一方面不斷探索和改進(jìn)教學(xué)方法,才能不斷提高課程教學(xué)質(zhì)量,造就出合格的技術(shù)人才。
參考文獻(xiàn):
[1] 嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)[M]. 北京:清華大學(xué)出版社,1996.
[2] 劉亞波,劉大有. 以實(shí)驗(yàn)教學(xué)深化“數(shù)據(jù)結(jié)構(gòu)”理論教學(xué)[J]. 吉林大學(xué)學(xué)報(bào):信息科學(xué)版,2005(23).
[3] 鄧桂英.《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)方法的淺談[J]. 科技信息,2007(35).