国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

“數(shù)據(jù)結構”課程的教學方法改進探討

2018-07-06 01:47:04張惠珍馬淑嬌上海理工大學管理學院上海200093
關鍵詞:鏈表數(shù)據(jù)結構指針

張惠珍,馬淑嬌(上海理工大學 管理學院,上海 200093)

“數(shù)據(jù)結構”課程是我國計算機教學中較早形成和完善的一門專業(yè)基礎課程,也是計算機課程體系中的核心課程之一[1]。在我國,“數(shù)據(jù)結構”課程不僅在計算機科學與技術類各專業(yè)開設,也在信息管理類、通信類的許多本科專業(yè)和其他相關專業(yè)開設。“數(shù)據(jù)結構”課程主要介紹用計算機解決非數(shù)值計算類問題所用的各類數(shù)據(jù)的邏輯結構、存儲方式以及在各種結構上執(zhí)行的主要操作[2],其既是程序設計的基礎,又是設計和實現(xiàn)系統(tǒng)軟件及大型應用軟件的重要基礎。

通過“數(shù)據(jù)結構”課程的學習,使學生能夠熟練地掌握數(shù)據(jù)結構的內(nèi)在邏輯關系及其在計算機中的存儲結構,以及有關基本操作的算法實現(xiàn),并初步掌握算法的時間分析和空間分析的技術[2],具備在軟件開發(fā)的過程中能夠為求解的具體問題選擇合理的數(shù)據(jù)結構,能夠應用高級語言編寫和實現(xiàn)結構清晰、正確易讀的有效算法的能力。

本文針對“數(shù)據(jù)結構”課程的教學中存在的問題進行了改進和創(chuàng)新,目的在于充分發(fā)揮學生的主觀能動性,讓學生有興趣地學,并最終提高教學效果。

一、“數(shù)據(jù)結構”課程教學中存在的問題

作者所授的“數(shù)據(jù)結構”課程是信息管理類專業(yè)的公共基礎必修課。根據(jù)開課前的調(diào)查,絕大多數(shù)學生想通過對“數(shù)據(jù)結構”課程的學習提高自己的程序設計能力,為日后設計和實現(xiàn)系統(tǒng)軟件的開發(fā)奠定基礎,但在實際教學中,學生往往會遇到諸多困難,如:“概念抽象”“算法太難”,甚至經(jīng)常有學生反映“上課講的算法內(nèi)容都能聽懂,但是一旦自己設計算法就不知從何下手”,等等[3]。在授課過程中,老師們也發(fā)現(xiàn)一些問題,如“學生分不清算法與程序之間的區(qū)別與聯(lián)系”,“學生不會思考,不會采用合理的數(shù)據(jù)結構解決問題”,“學生邏輯思維能力較差,讀不懂別人寫的算法”。通過深入分析“數(shù)據(jù)結構”課程教學中存在的種種問題,發(fā)現(xiàn)影響課程學習效果的原因大致有以下幾個方面。

(一)數(shù)學基礎薄弱,學生邏輯思維能力差

必要的數(shù)學知識是學好“數(shù)據(jù)結構”課程的前提[4]。“離散數(shù)學”這門課主要研究離散結構和離散數(shù)量關系,是“數(shù)據(jù)結構”的先行課之一。“離散數(shù)學”是計算機科學中基礎理論的核心課程,內(nèi)容上充分體現(xiàn)了計算機科學離散性的特點,該課程所提供的訓練對學生抽象思維能力和邏輯思維能力的培養(yǎng)起著十分重要的作用。

目前,部分開設“數(shù)據(jù)結構”課程的非計算機類專業(yè),并不開設“離散數(shù)學”,如:作者所在上海理工大學信息管理類專業(yè),學生在學習“數(shù)據(jù)結構”課程之前,并沒學習“離散數(shù)學”這門課。由于學生沒有掌握“數(shù)據(jù)結構”必備的數(shù)學基礎知識,對“數(shù)據(jù)結構”這門課的學習具有較大困難。

(二)實際教學中存在銜接問題

計算機程序設計類課程是“數(shù)據(jù)結構”的先行課程,學生對“程序設計基礎”課程學習的好壞直接影響“數(shù)據(jù)結構”課程學習的效果[4-5]。然而,據(jù)作者所知:在實際教學中,由于“程序設計基礎”和“數(shù)據(jù)結構”兩門課程由不同的教學單位和任課教師擔任,“程序設計基礎”和“數(shù)據(jù)結構”被設定為兩門完全獨立的課程,導致兩門課程在教學內(nèi)容上出現(xiàn)知識銜接的斷層。尤其若先行課“程序設計基礎”的教學內(nèi)容完全脫離了“數(shù)據(jù)結構”課程,使“數(shù)據(jù)結構”課程中最頻繁使用的知識(如:指針、結構體和函數(shù))在“程序設計基礎”課程中涉及甚少,學生不能為“數(shù)據(jù)結構”課程的學習打下扎實的程序設計基礎[5]。

以作者所在的上海理工大學為例,作者給該校管理學院信息管理類專業(yè)的大二本科生講授“數(shù)據(jù)結構”課程,所采用的教材是嚴蔚敏和吳偉民老師主編,由清華大學出版社出版的“數(shù)據(jù)結構”(C語言版),而該校“程序設計基礎”類課程由光電信息與計算機工程學院開設。信息管理類專業(yè)的學生在大學一年級第二學期可自由選擇“VB程序設計語言”和“C程序設計語言”其中一門課程進行學習。由于大部分學生學習目的不明確,不了解“C程序設計語言”對后續(xù)課程學習的重要性,往往選擇相對簡單、易學的“VB程序設計語言”。這導致“程序設計基礎”課程所教授的編程語言與“數(shù)據(jù)結構”教材和實驗所使用的實現(xiàn)語言不一致,以至于“程序設計基礎”課程與“數(shù)據(jù)結構”的教學脫節(jié)。即使有一小部分學生選擇了“C程序設計語言”,但由于兩門課程由不同學院的不同教師講授,兩門課程在課程設置和教學內(nèi)容上不能很好銜接,如:C程序設計語言的教學時間大部分花費在基本概念及簡單程序的編寫上,學生沒有充裕的時間對數(shù)組、結構體和指針等復雜數(shù)據(jù)類型學習和上機實踐,并未對這些內(nèi)容加以深刻理解;然而這些內(nèi)容在后續(xù)“數(shù)據(jù)結構”課程中頻繁使用,是數(shù)據(jù)結構的重要基礎。這些情況均導致在“數(shù)據(jù)結構”課程的教學中,盡管授課教師費盡唇舌,學生仍然似懂非懂,不能很好地掌握知識重點和難點,對數(shù)據(jù)結構的理解和掌握僅僅停留在概念層、理論層和抽象層,難以實現(xiàn)對數(shù)據(jù)結構算法從理論到偽代碼、再由偽代碼到真正代碼的轉換[5],導致學生喪失了對該課程的學習興趣和信心。

(三)上機實踐課時少,學生動手能力差

“數(shù)據(jù)結構”是一門理論與實踐并重的課程,上機實踐是“數(shù)據(jù)結構”課程教學過程中必不可少的環(huán)節(jié)?!皵?shù)據(jù)結構”課程的教學要求之一是訓練學生進行復雜程序設計的技能和培養(yǎng)學生良好程序設計的習慣。因此,上機實踐對“數(shù)據(jù)結構”課程的教學質(zhì)量具有舉足輕重的影響。

2013年是深入貫徹落實黨的十八大精神的開局之年,也是實施“十二五”規(guī)劃承上啟下的關鍵一年。在中央治水興水方針政策的強力推動下,水利事業(yè)邁入了科學發(fā)展、跨越發(fā)展的新階段。推進水利事業(yè)又好又快發(fā)展,對加快水利頂層設計、保證前期工作質(zhì)量、加強勘測設計行業(yè)管理提出了新的要求。水規(guī)總院積極踐行可持續(xù)發(fā)展治水思路,各項工作扎實推進,為加快水利發(fā)展提供了堅實的技術支撐和保障。

目前,大多數(shù)高?!皵?shù)據(jù)結構”課程的上機實踐學時嚴重短缺。以作者所在的上海理工大學信息管理專業(yè)的“數(shù)據(jù)結構”課程為例,講授學時和上機實踐學時分別為48和16,學生實踐機會偏少。這導致“數(shù)據(jù)結構”課程的教學是以利用偽代碼描述數(shù)據(jù)結構和算法為主,以編程實踐為輔,重理論、輕實踐,實踐教學不能支撐起理論教學[6],最終致使學生綜合運用數(shù)據(jù)結構的知識解決實際問題的能力明顯不足,編程能力沒有得到提高,甚至有的學生在學完“數(shù)據(jù)結構”這門課之后,仍然不能自行查找語法錯誤,看不懂錯誤提示,不會糾錯,更談不上獨立將大型復雜算法編寫為程序。

二、提高“數(shù)據(jù)結構”課程教學效果的對策

導致上海理工大學信息管理類專業(yè)“數(shù)據(jù)結構”課程教學中存在上述問題的主要原因是學校多年實施平臺課程設置中的漏洞與不合理之處。作者建議學校能夠逐步對平臺課程設置中存在的種種問題加以改進。

此外,作為“數(shù)據(jù)結構”課程的授課教師,在無法改變整個專業(yè)的課程設置的前提下,首先加強先行課程“離散數(shù)學”和“C程序設計語言”的教學;其次,不斷思索如何提高“數(shù)據(jù)結構”課程的教學效果,并在教學方法和手段以及實踐教學方面作了一定的改進和創(chuàng)新。

(一)加強先行課程“C程序設計語言”的復習

如前所述,牢固的C語言程序設計基礎是學習“數(shù)據(jù)結構”課程的前提條件。在開展數(shù)據(jù)結構教學時,首先對學生學習C語言程序設計的情況進行初步了解,然后根據(jù)學生的掌握程度,重點對C語言中的數(shù)組、結構體、函數(shù)和指針復習3~4個學時,其中包括1~2個學時的上機實踐。在教學過程中,結合學生的學習情況和具體算法,抓住兩門課程的銜接點,再適當補充必要的C語言知識。

(二)增強課堂教學的趣味性

“數(shù)據(jù)結構”課程的內(nèi)容比較抽象,算法理解比較困難。采用靈活多樣的課堂教學方式,激發(fā)學生的學習興趣,使學生把學習數(shù)據(jù)結構的課程變成一件積極、快樂的事,自然會取得良好的教學效果[7-9]。

在學期初期,教師應通過實際應用激發(fā)學生學習“數(shù)據(jù)結構”課程的興趣。例如,針對假期一家人自駕游,如何選擇線路才能最節(jié)省旅途的過路費用和油耗費用;針對圖書館的圖書信息管理系統(tǒng),如何實現(xiàn)圖書信息的快速查找;為了節(jié)省計算機的存儲空間,如何實現(xiàn)對稀疏矩陣的壓縮存儲等等,這些問題的實用性和趣味性比較強,能激發(fā)學生探索解決這類問題的愿望和學習“數(shù)據(jù)結構”課程的興趣?!爸卟蝗绾弥?好之者不如樂之者”,興趣激發(fā)起來了,就形成了一個良好的開端。

在每節(jié)課的新知識點引入時,也盡可能使用生活中的例子,或一個小故事、小游戲、一個影片情節(jié)等方式,將枯燥難懂的知識點融入到鮮活的情景中,激發(fā)學生的學習興趣。例如:講解順序表時,引入小學報名家長徹夜排隊的實例,形象地表示了數(shù)據(jù)元素間的物理結構維持邏輯結構;講解鏈表時,引入諜戰(zhàn)片或警匪片中上下級之間的單線聯(lián)系方式,形象地反映了鏈表的特性;講解隊列時,引入飛機場或火車站的出租車排隊載客的實例,出租車按照到達的先后順序排成一條隊,后到的出租車排在隊尾,最后每輛出租車從隊頭載客出隊,這就是先進先出的隊列結構;講解棧時,可以用食堂盛菜的盤子作為例子引入,盛菜的盤子是從下往上疊放在一起的,而用的時候是從上往下拿,棧就好像是一個裝盤子的容器,具有先進后出的特征;講解樹的時候可以引入一個家族的家譜;講解圖的時候可以引入高速公路網(wǎng)、鐵路網(wǎng)。這樣通過對日常生活中實例的講解,使一個抽象的、理論性很強的問題轉變?yōu)橐粋€直觀的、簡單的實際問題,不僅構建了和諧的課堂氛圍,也激發(fā)了學生的學習興趣。

在上機實驗教學中,最初安排簡單的、容易利用所學知識實現(xiàn)的例子,如學完線性表后,安排學生完成將兩個有序表合并為一個有序表;學完棧后,安排學生完成一個括號匹配問題。這些例子不僅具有一定的趣味性,而且簡單、易于實現(xiàn)。學生上機實驗見到成果后,內(nèi)心的成就感得到滿足,自信心得到加強,就會更加有興趣學習和鉆研這門課程。

(三)圖文并茂講解算法

“數(shù)據(jù)結構”課程中數(shù)據(jù)的結構和算法的描述多為抽象的理論。在學生抽象思維能力和邏輯思維能力欠缺的情況下,如果直接進行理論講解,學生會覺得枯燥乏味,失去學習的興趣。因此,在教學中,需要引入直觀、形象的圖像或動畫,讓抽象的算法以圖形動態(tài)演變的方式呈現(xiàn)給學生,再結合上算法偽代碼的講解,不僅可以調(diào)動學生的學習積極性,而且可以提高學生邏輯思維和抽象思維的能力。例如:在鏈表中,用到了大量的指針操作,很多學生反映對鏈表中的結點進行插入、刪除和查找等操作時,指針的變化使他們經(jīng)常暈頭轉向,模糊不清,尤其在學習雙向循環(huán)鏈表時,情況更為嚴重。如果采用圖文并茂的講解方法,立刻就會產(chǎn)生不一樣的效果。

圖1給出了在雙向鏈表中指針P所指向的結點前插入一個新結點時指針的變化狀況。在課堂講解中,首先結合圖1把雙向鏈表的插入原理講透徹,即把新插入結點與鏈表中原有結點之間的關系講明白,并將每一句代碼的含義和作用解釋清楚,從而方便了學生的理解。

圖1 在雙向鏈表中指針P所指向的結點前插入一個新結點Fig.1 Inserting a new node before the node that P points to into a doubly linked-list

(四)加強實踐教學

數(shù)據(jù)結構實驗可以分為驗證型實驗和設計型實驗[6]。驗證型實驗的目的是使學生掌握基礎的常用的數(shù)據(jù)結構及基本操作,強化學生對基本數(shù)據(jù)結構及其相關算法的理解,同時在使用的過程中進一步鞏固和強化C程序設計語言的應用。學生應掌握的“數(shù)據(jù)結構”課程各章節(jié)的典型算法如表1所示,對于這些算法要求在16個學時的上機實驗課中,每個學生在教師指導下獨立將算法的偽代碼轉化為C語言描述的真正代碼,完成調(diào)試、編譯操作。

表1 “數(shù)據(jù)結構”課程各章節(jié)的典型算法Tab.1 Classical algorithms in every chapters of “data structure”

設計型實驗的目的是訓練學生解決實際問題的能力,學生根據(jù)實際問題,選擇合理的數(shù)據(jù)結構并設計求解該問題的快速有效算法。授課教師可以根據(jù)自身的授課經(jīng)驗自擬問題或選擇一些經(jīng)典的趣味型問題作為設計型實驗題目,如:一元多項式的加法運算;用雙向循環(huán)鏈表解決約瑟夫問題;迷宮問題;利用哈夫曼樹對文本文件進行壓縮和解壓縮,等等。與驗證型實驗所不同的是,設計型實驗是培養(yǎng)學生靈活運用所學知識解決實際問題的能力和團隊合作的能力。因此,對于設計型實驗,并不要求學生在16學時的上機實驗課內(nèi)完成,而是作為作業(yè)布置給學生,要求學生在學期內(nèi)課外完成。如:作者對授課班級的學生根據(jù)興趣分成任務小組,3~5人為一個小組,要求每個小組的同學選擇完成3~4個設計型題目,學生在認真分析實驗題目的基礎上,根據(jù)實際情況合理分工,選擇合適的數(shù)據(jù)結構組織處理實驗題目中的數(shù)據(jù),設計出有效的求解算法,并將其轉換為真正的程序代碼,在計算機上編譯、調(diào)試完成。通過設計型題目的完成,不僅加強了學生之間相互交流、相互協(xié)作的能力,而且達到了小組同學共同學習,共同提高的目的。

通過驗證型題目和設計型題目的訓練,不僅使學生對所學的數(shù)據(jù)結構及其典型算法在課中得以消化,而且激發(fā)了學生挖掘自己的潛能,使學生的創(chuàng)新能力得到一定拓展,對所學知識在課后得到了進一步提高。

(五)開展啟發(fā)式教學

當代著名科學方法論學者波爾普曾說“正是問題激發(fā)我們?nèi)W習,去發(fā)展知識,去實踐,去觀察”。作為一個好的教師,不僅要在課堂上給學生講清楚每一個知識點,更應著力于引導他們?nèi)ト绾伟l(fā)現(xiàn)問題、提出問題、分析問題和解決問題?!皢栴}”是創(chuàng)新的起點,是引發(fā)學生學習興趣、調(diào)動學生學習主動性的理想載體?;谶@樣的授課思想,并通過幾年的探索和總結,從2014年起,在作者所授的數(shù)據(jù)結構課程中采用了帶有對問題探討因素的啟發(fā)式教學法,收到了良好的教學效果。

“數(shù)據(jù)結構”課程的教學中,可以設計許多啟發(fā)式問題。例如:在介紹了單鏈表的插入算法之后,可以引導學生分析在第一個結點之前插入新的結點與在其他結點之前插入結點的操作是否相同?通過實際對單鏈表中第一個節(jié)點之前進行插入操作與在其他結點之前進行插入操作的比較分析,學生不難得出這樣的結論:在第一個結點之前進行插入的操作實際是在頭指針之后進行插入,插入時不僅需要修改新結點指針域的值,而且需要改變頭指針的值;在其他結點之前進行插入的操作實際是在某一個結點之后進行的插入,插入時需要修改直接前驅(qū)結點和新結點的指針域。那么,為了使在第一個結點之前插入結點的操作與在其他結點之前進行插入的操作一致,即都是在某一個結點之后進行的操作,需要修改的都是結點的指針域,而不需要修改頭指針的值,該如何處理呢?學生馬上會想到:在第一個結點之前添加上一個結點,讓頭指針指向新添加的結點就實現(xiàn)了這一功能。由于這個新添加的結點是為了插入和刪除等操作上的方便,該結點的數(shù)據(jù)域可以不存儲任何信息。通過這樣不斷創(chuàng)設問題情景的方式,引出了帶頭結點的單鏈表,而且說明了頭結點與鏈表中第一個結點之間的區(qū)別。

對問題探討因素的啟發(fā)式教學法,將教材上的平面知識、技能點轉化為問題的形式展現(xiàn)給學生。學生有了疑問,才會思考,思考了才會有收獲。從教學內(nèi)容中挖掘問題,在課堂上給學生創(chuàng)設問題情景,激發(fā)學生思考,是“數(shù)據(jù)結構”課程采用啟發(fā)式教學的關鍵?;谶@樣的考慮,作者在備課的過程中,反復探究“數(shù)據(jù)結構”課程中各個知識點的奧妙,精心設計課堂情景,準備好與學生探討的啟發(fā)式問題。課堂上,由于啟發(fā)式問題的引入,不僅活躍了課堂氣氛,使學生的思維能力得到訓練,而且使知識重點更加容易講透,知識難點更易突破,較好地完成了教學任務。

三、結束語

經(jīng)過兩年“數(shù)據(jù)結構”課程的教學改革,上述努力起到了激發(fā)學生的學習興趣,明確學生學習的目的,不僅學生的到課率得到了明顯提高,由原先的80%提高到了現(xiàn)在的93%,理論教學和實驗教學都取得了預期的效果,而且學生的學習成績顯著提高。例如:2014—2015學年第一學期學生卷面成績的優(yōu)秀率為1.10%,良好率為14.29%,中等率為16.64%,及格率為17.64%,不及格率為50.33%;2015—2016學年第一學期學生卷面成績的優(yōu)秀率為14.46%,良好率為21.14%,中等率為18.97%,及格率為16.95%,不及格率為28.48%。這些變化證明了“數(shù)據(jù)結構”課程的教學改革方法有助于提高學生的學習興趣,取得良好的教學效果。

在后續(xù)的教學工作中將引入先進的教育理念和教學手段(如:慕課教學模式),提高學生的創(chuàng)新能力,培養(yǎng)學生研究性學習的能力。

參考文獻:

[1] 王裕明,李旭芳,李躍文,等.數(shù)據(jù)結構與程序設計[M].北京:清華大學出版社,2010.

[2] 嚴蔚敏,吳偉民.數(shù)據(jù)結構(C語言版)[M].北京:清華大學出版社,2010.

[3] 彭立宏,肖曉強,周麗濤.“計算機程序設計”課程教學研究與實踐[J].計算機工程與科學,2014,36(S1):39-42.

[4] 周海巖,陳宏明,殷路.《數(shù)據(jù)結構》課程教學的思考[J].教育理論與實踐,2010,30(6):62-63.

[5] 郭艷燕,童向榮,孫雪姣,等.程序設計基礎與數(shù)據(jù)結構兩門課程的教學銜接[J].計算機教育,2014(10):47-50.

[6] 張小剛.數(shù)據(jù)結構課程實踐教學改進探討[J].湖南科技學院學報,2016,37(4):134-135,144.

[7] 霍玲玲,王智,孫江.數(shù)據(jù)結構教學方法的研究[J].計算機教育,2015(2):73-76.

[8] 鹿旸.數(shù)據(jù)結構與算法課程教學方法的思考[J].計算機教育,2010(5):88-90.

[9] 劉曉靜,王曉英,薛媛媛,等.讓趣味教學進駐數(shù)據(jù)結構與算法課堂[J].青海大學學報(自然科學版),2011,29(5):95-97.

[10] 周曉誼,王隆娟,任佳.Seminar教學模式在數(shù)據(jù)結構課程中的實踐[J].海南大學學報(自然科學版),2016,34(1):82-89.

[11] 劉華敏.“翻轉課堂”教學模式的探討——以《數(shù)據(jù)結構》課程教學為例[J].廣東技術師范學院學報,2016,37(5):70-72.

猜你喜歡
鏈表數(shù)據(jù)結構指針
基于二進制鏈表的粗糙集屬性約簡
偷指針的人
娃娃畫報(2019年5期)2019-06-17 16:58:10
跟麥咭學編程
基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗證機制
為什么表的指針都按照順時針方向轉動
“翻轉課堂”教學模式的探討——以《數(shù)據(jù)結構》課程教學為例
高職高專數(shù)據(jù)結構教學改革探討
中國市場(2016年45期)2016-05-17 05:15:48
基于改進Hough變換和BP網(wǎng)絡的指針儀表識別
電測與儀表(2015年5期)2015-04-09 11:30:42
鏈表方式集中器抄表的設計
電測與儀表(2014年1期)2014-04-04 12:00:22
ARM Cortex—MO/MO+單片機的指針變量替換方法
陆丰市| 德庆县| 岳普湖县| 山东省| 西平县| 黄浦区| 中西区| 常山县| 瓮安县| 页游| 冀州市| 张北县| 芜湖县| 东方市| 江城| 科尔| 游戏| 阿尔山市| 通化县| 虹口区| 岫岩| 平凉市| 绍兴市| 巴彦淖尔市| 长兴县| 东丽区| 安宁市| 神农架林区| 罗源县| 楚雄市| 陈巴尔虎旗| 雷山县| 阳泉市| 神农架林区| 玛纳斯县| 临海市| 北海市| 昭通市| 临夏市| 凭祥市| 公安县|