范軍
【摘要】《數(shù)據(jù)結(jié)構(gòu)與算法》是一門(mén)重要的信息基礎(chǔ)課程,本文在分析數(shù)據(jù)結(jié)構(gòu)教學(xué)現(xiàn)狀中存在問(wèn)題的同時(shí),提出了多項(xiàng)措施來(lái)提高教學(xué)效果。如以Flash動(dòng)畫(huà)等更加靈活和多樣化的教學(xué)手段,增強(qiáng)課堂教學(xué)效果;在教學(xué)內(nèi)容上通過(guò)理論與應(yīng)用案例相結(jié)合的方式來(lái)提高學(xué)生興趣;在算法設(shè)計(jì)上,總結(jié)一些帶有規(guī)律性的技巧來(lái)降低程序設(shè)計(jì)的難度。最終通過(guò)上機(jī)實(shí)踐教學(xué),來(lái)提高學(xué)生綜合編程和算法設(shè)計(jì)的能力。
【關(guān)鍵詞】非計(jì)算機(jī)專業(yè);教學(xué)信息化;教學(xué)方式改革
【中圖分類號(hào)】TP3-4 【文獻(xiàn)標(biāo)識(shí)碼】B 【文章編號(hào)】2095-3089(2017)15-0046-02
隨著計(jì)算機(jī)智能化應(yīng)用的不斷普及,對(duì)于其程序的智能化,時(shí)間和空間效率都提出了更高的要求。這就要求程序員除了掌握相關(guān)的編程語(yǔ)言的同時(shí)還要具備良好的數(shù)據(jù)結(jié)構(gòu)知識(shí),只有這樣他們才能從構(gòu)成程序的最基礎(chǔ)部分:數(shù)據(jù)構(gòu)成和存在形態(tài)來(lái)對(duì)程序進(jìn)行優(yōu)化。數(shù)據(jù)結(jié)構(gòu)課程是電子信息類學(xué)科的一門(mén)基礎(chǔ)課程,它為以后的編譯系統(tǒng)、數(shù)據(jù)庫(kù)和智能信息系統(tǒng)的設(shè)計(jì)打下了良好的基礎(chǔ)。目前,數(shù)據(jù)結(jié)構(gòu)課程不僅是計(jì)算機(jī)學(xué)科的核心課程,而且也成為其他理工專業(yè)的重要選修課。
數(shù)據(jù)結(jié)構(gòu)課程主要講解各種常用的數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和實(shí)現(xiàn)算法。該課程的特點(diǎn)就是邏輯性強(qiáng),概念多、算法復(fù)雜。為了使程序具有語(yǔ)句簡(jiǎn)潔,通用性強(qiáng)以及能適應(yīng)多種復(fù)雜應(yīng)用場(chǎng)合的要求,在數(shù)據(jù)結(jié)構(gòu)中大多采用了高效的程序設(shè)計(jì)方法和工具:如子函數(shù)的遞歸調(diào)用,宏定義、動(dòng)態(tài)分配存儲(chǔ)空間以及采用指針、結(jié)構(gòu)體等復(fù)合數(shù)據(jù)類型。這些特點(diǎn)也給學(xué)生的理論學(xué)習(xí)和程序設(shè)計(jì)造成了一定的困難。如果沒(méi)有好的教學(xué)方法很容易使學(xué)生產(chǎn)生畏難的情緒,這也更顯得對(duì)其進(jìn)行教學(xué)研究改革具有較強(qiáng)的現(xiàn)實(shí)意義。
雖然近年來(lái)數(shù)據(jù)結(jié)構(gòu)課程的重要性日益顯現(xiàn),但當(dāng)前非計(jì)算機(jī)專業(yè)對(duì)于該課程的重視仍然不夠。再加上教師的水平和學(xué)生的素質(zhì)等影響因素導(dǎo)致了教學(xué)手段單一,教學(xué)效果上也差強(qiáng)人意,這主要表現(xiàn)在以下幾個(gè)方面:
一、學(xué)生的編程基礎(chǔ)差、特別是算法思想欠缺
雖然學(xué)生在上本課程之前大多具有一定的編程語(yǔ)言:C語(yǔ)言的編程基礎(chǔ)。但在教學(xué)中筆者也發(fā)現(xiàn),由于教學(xué)課時(shí)所限,上機(jī)練習(xí)較少,使得許多基本概念掌握的不甚牢固。這些基礎(chǔ)的不牢會(huì)嚴(yán)重影響學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)課程的學(xué)習(xí)效果。
二、教學(xué)方式不夠靈活,理論和實(shí)驗(yàn)環(huán)節(jié)脫節(jié)
在本課程的以往的教學(xué)過(guò)程中,雖然許多教師在教學(xué)過(guò)程中已采用了多媒體教學(xué),但是大部分教師使用的仍然是由教材上內(nèi)容濃縮而來(lái)的簡(jiǎn)略的和靜態(tài)的文字圖表,缺乏直觀效果。這些靜態(tài)圖表難以充分展示算法的動(dòng)態(tài)變化過(guò)程,學(xué)生也難以掌握數(shù)據(jù)之間的復(fù)雜關(guān)系。當(dāng)前數(shù)據(jù)結(jié)構(gòu)課程教學(xué)的另一個(gè)問(wèn)題就是理論知識(shí)介紹與實(shí)際應(yīng)用聯(lián)系很少,學(xué)生學(xué)習(xí)的興趣不高,而只是為了考試而學(xué)習(xí)。
為了克服以上所列的當(dāng)前教學(xué)上的不足,筆者主要從以下幾個(gè)方面對(duì)數(shù)據(jù)結(jié)構(gòu)課程的理論課和實(shí)驗(yàn)課進(jìn)行改革
三、強(qiáng)化重點(diǎn)知識(shí)并采用更加生動(dòng)的課堂教學(xué)方式
在數(shù)據(jù)結(jié)構(gòu)課程中,對(duì)于重點(diǎn)所用的知識(shí)不僅在課堂上也要在上機(jī)實(shí)驗(yàn)中反復(fù)練習(xí)和強(qiáng)化,同時(shí)對(duì)教學(xué)內(nèi)容進(jìn)行了合理的篩選和編排,去掉一些非核心的內(nèi)容,加強(qiáng)數(shù)據(jù)結(jié)構(gòu)和算法的內(nèi)容,例如,在教學(xué)中去掉了廣義表、串變量和文件等內(nèi)容的教學(xué),而是留給學(xué)生課后自學(xué)。
在一些重要的內(nèi)容上,在課堂授課方式采用更加直觀和生動(dòng)的教學(xué)方式。對(duì)于難懂的算法或過(guò)程,采用圖表、文字加Flash動(dòng)畫(huà)的方式對(duì)這些算法的執(zhí)行過(guò)程進(jìn)行逐步分解和展示。如在數(shù)據(jù)結(jié)構(gòu)課程中有關(guān)遞歸函數(shù)執(zhí)行過(guò)程中其堆棧、指針和數(shù)據(jù)結(jié)構(gòu)的變化情況就是一個(gè)動(dòng)態(tài)變化的過(guò)程。而在教材上往往采用一個(gè)(或幾個(gè))靜態(tài)圖表來(lái)表示,學(xué)生很難理解。筆者對(duì)課件進(jìn)行了升級(jí)優(yōu)化,用Flash動(dòng)畫(huà)形式以教師手控的方式以動(dòng)畫(huà)形式逐幀地展示數(shù)據(jù)結(jié)構(gòu)在操作(遍歷或替換等)時(shí)其指針、堆棧和數(shù)據(jù)的整個(gè)變化過(guò)程。圖1為圖的深度遍歷的flash動(dòng)畫(huà)截圖。圖中不同顏色背景的變化動(dòng)態(tài)地展示了對(duì)一個(gè)以鄰接矩陣形式存儲(chǔ)的8個(gè)頂點(diǎn)的圖進(jìn)行深度優(yōu)先遍歷程序的執(zhí)行過(guò)程。
四、對(duì)知識(shí)進(jìn)行歸納分析,總結(jié)規(guī)律,使之編程有規(guī)律可循
在數(shù)據(jù)結(jié)構(gòu)知識(shí)的算法設(shè)計(jì)中由于大量的采用了遞歸調(diào)用等編程模式,這些編程方式的不同,再加上特性各異的數(shù)據(jù)結(jié)構(gòu),使得學(xué)生在理解數(shù)據(jù)結(jié)構(gòu),看懂算法,并將算法轉(zhuǎn)化為可執(zhí)行的程序代碼方面存在很大的困難。因此,我們要幫助學(xué)生走過(guò)這一段難走的“過(guò)渡路”,幫他們總結(jié)編程規(guī)律,從課本上已有的經(jīng)典程序進(jìn)行適當(dāng)?shù)淖冃蝸?lái)實(shí)現(xiàn)編程的要求。筆者通過(guò)實(shí)驗(yàn)習(xí)題課講授實(shí)際的編程例子并給出有規(guī)律的編程框架使學(xué)生盡快掌握一大類數(shù)據(jù)結(jié)構(gòu)的編程問(wèn)題。
五、采用理論知識(shí)+應(yīng)用案例介紹+實(shí)際應(yīng)用編程實(shí)驗(yàn)的方式來(lái)鞏固所學(xué)到的知識(shí)
除了在課堂講授的同時(shí),筆者還精心設(shè)計(jì)上機(jī)實(shí)驗(yàn)題目,使之不僅涵蓋了教材相應(yīng)章節(jié)的知識(shí)點(diǎn)同時(shí)又具有趣味性和相應(yīng)的應(yīng)用價(jià)值,使學(xué)生通過(guò)對(duì)這些實(shí)驗(yàn)項(xiàng)目的編程和調(diào)試,既鞏固了課堂中所學(xué)的知識(shí)又掌握和了解這些知識(shí)的應(yīng)用。如在“圖”這一章節(jié)的實(shí)驗(yàn)的題目我們?cè)O(shè)計(jì)為:根據(jù)給定的人數(shù),給定的運(yùn)動(dòng)會(huì)項(xiàng)目,每人參與的項(xiàng)目設(shè)計(jì)一個(gè)小型運(yùn)動(dòng)會(huì)的時(shí)間表。該實(shí)驗(yàn)題目是通過(guò)將運(yùn)動(dòng)員在運(yùn)動(dòng)會(huì)所承擔(dān)的項(xiàng)目類比于圖的節(jié)點(diǎn),而后根據(jù)它們可能發(fā)生的沖突情況構(gòu)建出“項(xiàng)目沖突圖”(有運(yùn)動(dòng)員同時(shí)參加的項(xiàng)目之間加一連線),再對(duì)這一沖突圖進(jìn)行相鄰節(jié)點(diǎn)不同色的著色,最終將對(duì)同一顏色的節(jié)點(diǎn)(不沖突的運(yùn)動(dòng)會(huì)項(xiàng)目)分為一組,這些就可得到幾組時(shí)間上不發(fā)生沖突的運(yùn)動(dòng)會(huì)項(xiàng)目。
通過(guò)這一實(shí)際案例的設(shè)計(jì),學(xué)生可鞏固所學(xué)到的圖的存儲(chǔ),聯(lián)通圖的建立,圖的遍歷,以及圖的著色理論及應(yīng)用。這樣學(xué)生也不再像原來(lái)對(duì)“圖”這一數(shù)據(jù)結(jié)構(gòu)理解的那樣空洞、抽象,學(xué)無(wú)所用。通過(guò)與實(shí)際應(yīng)用的密切聯(lián)系,學(xué)生對(duì)所學(xué)知識(shí)的理解和應(yīng)用能力及學(xué)習(xí)興趣都會(huì)有很大提高。
《數(shù)據(jù)結(jié)構(gòu)》是一門(mén)具有非常好的實(shí)用價(jià)值的信息基礎(chǔ)課。它的較強(qiáng)的理論性和實(shí)踐性使得它更需要合理、有效、系統(tǒng)地組織教學(xué)內(nèi)容,并用實(shí)驗(yàn)教學(xué)過(guò)程來(lái)加強(qiáng)理論教學(xué)的效果。只有我們采用好的教學(xué)方式,充分調(diào)動(dòng)學(xué)生的學(xué)習(xí)的積極性,一定會(huì)取得好的教學(xué)效果。endprint