張巨萍
摘 要:《數(shù)據(jù)結(jié)構(gòu)》課程是計算機類專業(yè)的專業(yè)基礎(chǔ)課,在其課程體系中占有重要地位。財經(jīng)類院校的該專業(yè)學生由于數(shù)學基礎(chǔ)和計算機硬件知識的薄弱、個人學習的畏難心理以及課程本身相對抽象等因素影響,造成對《數(shù)據(jù)結(jié)構(gòu)》課程中存儲結(jié)構(gòu)部分的學習困難,嚴重影響了后續(xù)課程的學習。本文從改進存儲結(jié)構(gòu)的教學方式入手,采用在大的邏輯結(jié)構(gòu)分類內(nèi),以存儲結(jié)構(gòu)為主線,邏輯結(jié)構(gòu)為輔線的教學模式,強化學生對存儲結(jié)構(gòu)代碼設(shè)計的理解和使用。經(jīng)長期教學實踐表明,取得了較好的教學效果。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);邏輯結(jié)構(gòu);存儲結(jié)構(gòu)
【中圖分類號】G 【文獻標識碼】B 【文章編號】1008-1216(2016)03C-0084-02
一、問題的提出
《數(shù)據(jù)結(jié)構(gòu)》課程是計算機類專業(yè)的專業(yè)基礎(chǔ)課之一,在計算機類專業(yè)的課程體系中起著承上啟下的作用。該課程強調(diào)鍛煉學生的動手能力,提高其程序設(shè)計水平,是后續(xù)的編程類課程的基礎(chǔ)。對于學生實踐能力和理論水平的后續(xù)提高具有極其重要的作用。
存儲結(jié)構(gòu)是《數(shù)據(jù)結(jié)構(gòu)》課程里實現(xiàn)算法功能的重要基礎(chǔ)。因為好的存儲結(jié)構(gòu)能夠提高數(shù)據(jù)的存取效率,進而提高算法的執(zhí)行效率。在傳統(tǒng)的教學模式中,將數(shù)據(jù)結(jié)構(gòu)從邏輯上分為四種,分別是:集合結(jié)構(gòu)、線性結(jié)構(gòu)、樹形結(jié)構(gòu)以及圖(網(wǎng))狀結(jié)構(gòu)。但主要講解的存儲結(jié)構(gòu)有兩種:順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)。目前的教學模式中,大都是以數(shù)據(jù)的邏輯結(jié)構(gòu)為主線,依次介紹線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖狀結(jié)構(gòu)以及基礎(chǔ)的搜索和排序算法。在介紹每種數(shù)據(jù)結(jié)構(gòu)的過程中,討論其在不同的存儲結(jié)構(gòu)上的定義以及相關(guān)的實現(xiàn)算法。這種教學模式存在的主要問題就是容易造成學生在兩種存儲結(jié)構(gòu)實現(xiàn)上的混淆。例如,在線性結(jié)構(gòu)的教學中,首先進行線性表的順序存儲結(jié)構(gòu)實現(xiàn)——順序表的講解;接著再進行線性表的鏈式存儲結(jié)構(gòu)——鏈表的講解。對于鏈表這部分內(nèi)容,學生在課程設(shè)計中,常常會出現(xiàn)使用順序存儲結(jié)構(gòu)進行定義,而用鏈式存儲結(jié)構(gòu)的算法實現(xiàn)的現(xiàn)象。即:程序中在定義存儲結(jié)構(gòu)時,使用順序存儲結(jié)構(gòu)定義部分的代碼,但在算法實現(xiàn)過程中,使用的是鏈式存儲結(jié)構(gòu)實現(xiàn)的算法。常常是線性結(jié)構(gòu)尚未完全講授完,學生已經(jīng)陷入了混淆狀態(tài)。而在后續(xù)內(nèi)容的學習中,只要出現(xiàn)兩種不同結(jié)構(gòu)的定義,學生就會出現(xiàn)混淆的情況。
二、問題產(chǎn)生的原因分析
在財經(jīng)類院校的計算機類專業(yè)課程設(shè)置中,《數(shù)據(jù)結(jié)構(gòu)》是提高學生編程能力的重要課程之一。經(jīng)過對學生學習過程中遇到問題的詳細分析,我們發(fā)現(xiàn)與其他院校的計算機類專業(yè)相比,財經(jīng)類院校計算機類專業(yè)的學生在學習中存在問題主要有以下幾方面的原因:
(一)學生個人的原因
在財經(jīng)類院校中,《數(shù)據(jù)結(jié)構(gòu)》課程是計算機類專業(yè)的學生所接觸到的第一門理論課,與語言課相比,較為抽象,另外還需要綜合利用先修課的內(nèi)容,因此,有比較嚴重的畏難心理。例如,有的學生由于先修語言課的學習有困難,程序設(shè)計的思維還沒有完全建立起來,這時,嘗試去編制更大規(guī)模的程序從學生心理上就是一個很難完成的任務(wù)。
(二)課程本身的問題
首先,由于《數(shù)據(jù)結(jié)構(gòu)》課程是介于數(shù)學、計算機軟件以及計算機硬件之間的交叉課程,本身就是綜合了上述幾門課程知識的綜合性課程,如果其中有一門課程的知識掌握不到位,就會影響這門課的學習效果。其次,在程序設(shè)計語言課程中,由于指針這種數(shù)據(jù)類型比較抽象,不容易理解和想象,使用上也不如數(shù)組直觀,尤其是學生對于存儲地址的理解,不能與其生活中的地址進行對比理解。另外,指針是鏈式存儲結(jié)構(gòu)的核心類型,學生對單個的指針變量尚且不能較好地理解和使用,進入《數(shù)據(jù)結(jié)構(gòu)》學習后,指針都被嵌套在結(jié)構(gòu)體或類中,更增加了學生的理解難度。由于課程的教學目的不同,先修語言課主要注重基本的變成思維和語法功能的掌握,而在《數(shù)據(jù)結(jié)構(gòu)》中則更加注重算法設(shè)計能力的培養(yǎng)和如何進行數(shù)據(jù)的優(yōu)化存儲和高效存取。
(三)院校自身特點導致的問題
在財經(jīng)類院校中,學生的數(shù)學基礎(chǔ)相對薄弱。計算機類專業(yè)課程對學生的數(shù)學基礎(chǔ)有一定的要求,而財經(jīng)類院校由于文科類專業(yè)占較大比重,導致數(shù)學類課程的教學要求普遍較低,造成學生數(shù)學基礎(chǔ)相對薄弱,從而對數(shù)據(jù)結(jié)構(gòu)和算法的理解程度不夠,導致學習效果不佳;另外,硬件方面課程開設(shè)相對較少。與其他理工科院校相比,財經(jīng)類院校在硬件方面的師資和設(shè)備都相對薄弱,導致學生在學習與硬件相關(guān)的課程時,理解深度不夠;這也間接造成了《數(shù)據(jù)結(jié)構(gòu)》課程教學中,學生對于存儲結(jié)構(gòu)的理解困難。
三、教學方法改進和教學實驗
(一)教學方法改進
對于由前述原因造成的學生學習上的困難,可以根據(jù)困難產(chǎn)生原因來一一進行解決。首先,針對由于學生先修課基礎(chǔ)不足的問題,可以對學生所需先修課的內(nèi)容進行抽取整理,在課程開始時提供給學生作為課程的輔助材料,在學習過程中遇到困難可以隨時查閱,以免問題越積越多。其次,對于學生的思想困擾,需要在課程開始時,先進行全面的課程概述,讓學生充分了解課程的目的和意義,重點與難點。在對課程有了清晰的認識后,學生就會樹立“課程并不難,努力就能學會”的信念。同時,對于硬件基礎(chǔ)薄弱問題,也可以通過課堂講解的方式,將部分課程所涉及內(nèi)容用較少時間突出講解,也鼓勵學生使用手頭現(xiàn)有條件,觀察硬件設(shè)備,以得到直觀的印象。解決了學生的思想困擾與先修課理解不足所造成的問題,接下來,就可以尋求更容易為學生所接受的教學模式,以徹底解決學生存儲結(jié)構(gòu)的混淆問題。
在教學過程中,筆者發(fā)現(xiàn)學生對于邏輯結(jié)構(gòu)的認識比較清晰,容易接受。因此,在大的邏輯結(jié)構(gòu)分類內(nèi),嘗試以存儲結(jié)構(gòu)為主線,邏輯結(jié)構(gòu)為輔線進行講解。還是以線性結(jié)構(gòu)教學為例,由于學生對線性表、棧以及隊列的各自邏輯特性把握比較清晰,但在程序?qū)崿F(xiàn)時,容易混淆順序存儲與鏈式存儲。因此,我們首先講解線性表、棧以及隊列的基本操作在順序存儲結(jié)構(gòu)上的實現(xiàn)。通過對順序存儲結(jié)構(gòu)的反復類似的操作,學生對于順序存儲結(jié)構(gòu)的定義和使用有了比較深刻的理解和認識。接下來進行線性表、棧以及隊列的鏈式存儲結(jié)構(gòu)的教學,同時加強學生對于語言中指針等數(shù)據(jù)類型的理解。通過對線性結(jié)構(gòu)的這三種不同結(jié)構(gòu)在鏈式存儲結(jié)構(gòu)上的反復實現(xiàn),學生能夠形成清晰的鏈式存儲結(jié)構(gòu)概念,了解存儲器構(gòu)成,從而能夠游刃有余地進行數(shù)據(jù)的存儲和使用。
(二)教學實驗
對內(nèi)蒙古財經(jīng)大學計算機信息管理學院2013級計科專業(yè)和電商專業(yè)的平行班分別進行兩種教學法的授課,在線性結(jié)構(gòu)的教學結(jié)束后,通過上機試驗和課程考試的結(jié)果,分別統(tǒng)計了對應(yīng)平行班在兩種教學法下,混淆了兩種存儲結(jié)構(gòu)的同學人數(shù),經(jīng)過比較研究,考察是否新的教學方法更適合于我校學生的學習程度。
實驗結(jié)果如下表所示,計科專業(yè)的35名同學,有2人在實行新教法后出現(xiàn)了混淆現(xiàn)象,所占比例為5.7%;而平行班的37名同學,有8人出現(xiàn)了混淆現(xiàn)象,所占比例為21.6%。且實行新教法后,學生學習興趣明顯提高,對課程后續(xù)內(nèi)容懼怕心理減輕。
四、結(jié)論
《數(shù)據(jù)結(jié)構(gòu)》是計算機類專業(yè)的核心基礎(chǔ)課,存儲結(jié)構(gòu)則是該課程的重要核心內(nèi)容。學生對于存儲結(jié)構(gòu)的掌握直接影響著他們對數(shù)據(jù)結(jié)構(gòu)課程的學習效果,進而影響后續(xù)課程的掌握和學習。但是在存儲結(jié)構(gòu)的學習中,由于種種原因,出現(xiàn)了對于兩種常用存儲結(jié)構(gòu)在使用上的混淆?;诖藛栴},在存儲結(jié)構(gòu)的教學過程中,引入在大的邏輯結(jié)構(gòu)范疇內(nèi),以存儲結(jié)構(gòu)為主線,以邏輯結(jié)構(gòu)為輔線的教學方法,使學生不再發(fā)生兩種存儲結(jié)構(gòu)在算法實現(xiàn)中的混淆問題,增強了學生的信心,提高了學習效率,激發(fā)了學生的學習興趣,也拓展了他們的視野,在教學實踐中的實驗結(jié)果證明,該方法取得了良好的教學效果。
基金項目:內(nèi)蒙古財經(jīng)大學2014年教育教學課題(JXC1416)。
參考文獻:
[1] 張銘, 趙海燕, 王騰蛟. 北京大學 “數(shù)據(jù)結(jié)構(gòu)與算法” 教學設(shè)計[J]. 計算機教育, 2008, (20).
[2] 闞娜. 鏈式存儲結(jié)構(gòu)在 數(shù)據(jù)結(jié)構(gòu)中的教法[J]. 大觀周刊, 2011, (10).
[3] 邱勁, 王平, 徐展. 數(shù)據(jù)結(jié)構(gòu) 課程教學改革與實踐探索[J]. 西南師范大學學報: 自然科學版, 2013 ,(1).
[4] 郭群. 數(shù)據(jù)結(jié)構(gòu)課程實踐教學模式改革研究[J]. 福建電腦, 2015, (6).
[5] 楊秋格, 吳鵬, 鹿玉紅. 數(shù)據(jù)結(jié)構(gòu) 教學中存在的問題及解決措施[J]. 課程教育研究, 2015 ,(10).