邱奕敏(武漢科技大學信息科學與工程學院,武漢 430081)
電子信息工程專業數據結構實驗教學改革研究
邱奕敏
(武漢科技大學信息科學與工程學院,武漢430081)
數據結構是電子信息技術領域的一門基礎課程,實踐在數據結構的教學中起著重要的作用,可以幫助學生理解抽象的概念,增加趣味性,甚至可以用來解決日常生活中遇到的常見問題,同時練習和鞏固了常用的編程語言。
數據結構;電子信息;實驗教學
隨著計算機和電子信息科學的快速發展,電子信息科學與工程專業被用以培養大量的電子信息人才。《高等學校電子信息科學與工程類本科指導性專業規范(試行)》是由教育部編制的電子信息工程專業管理規定,文中指出:“電子信息工程專業教育內容和知識體系由通識教育、專業教育和綜合教育三大部分組成。”“計算機基礎是理工科類各專業通識教育知識單元,包含計算機文化、算法語言和程序設計等內容[1]。”這說明在教學實踐方法,電子信息專業也需要掌握計算機專業的基礎學科內容。數據結構是計算機專業的核心課程之一,也是電信專業學術需要掌握的一門重要基礎課。但是由于兩種專業的培養目標和課程體系不同,因此電信專業數據結構課程在理論及實踐教學的側重點也不同。
1968年美國唐納德?克努特教授開創了數據結構的最初體系,他闡述了數據的邏輯和存儲結構及其操作。數據結構作為一門核心課程,介于數學、計算機硬件和軟件之間,其內容是一般程序設計的基礎,也是對編譯程序、操作系統、數據庫系統等系統程序設計和實現的重要基礎。
數據結構從廣義上描述,包括邏輯結構和物理結構。狹義上則專指邏輯結構,即元素間的邏輯關系,包括集合型、線性結構、樹型和圖型。數據結構課程是圍繞上述幾種數據類型進行的,除了這些基本的操作,還構建了插入,刪除,查找,取元素,取長度等。此外,加入了較為復雜的算法,即查找和排序。
對于大多數的數據結構,都需要了解插入數據項、查找數據項、刪除數據項和訪問數據項,用來進行后續的顯示或其他操作。因此,電子信息專業數據結構教學具有以下特點:
1.1概念多,對比性強,易記憶
每種數據結構都包含了類型定義和結構特點,也都有建立、插入、刪除、查找等基本操作。因此,在新章節的學習中可以結合前面章節的內容,學生就很容易掌握數據結構的特點和整體概念。
1.2算法多樣,特點不同
雖然各種數據結構都有相同的操作,但其存儲結構不同,所以方法也不同。例如,在線性表中刪除結點,該結點是前、后關系,所以刪除時只需要考慮結點的前驅與后繼;但是,在二叉樹中刪除結點,則需要考慮刪除的結點所在位置,對于葉子結點或是左右子樹,應考慮刪除后的不同信息修改問題。
1.3形式抽象,難以實際應用
現實生活中抽象出來的數據元素作為數據結構的研究對象,只是對單純的數據進行操作,沒有考慮數據本身的實際意義,加上表現形式不同,更加抽象難以理解。
數據結構是電子信息工程學科的重要基礎課程,研究的主要內容是各種基本而又典型的數據結構、算法思想及其實際應用,以培養學生對數據結構特性的分析與研究能力,使學生理解各種數據結構的特點、存儲、運算方法以及基本應用;培養學生選用合適的數據結構,運用C語言編寫應用程序和初步評價算法程序的能力。學生們需要利用實驗課來實踐所學理論進而深入理解理論知識并探索和運用知識,用科學的思維和嚴謹的科學態度[2-4]來進行今后的學習,因此數據結構實驗課程的合理安排非常重要。
數據結構在電子信息工程的課程中有著承上啟下的重要作用。其先修課程有計算機基礎和數字電路與數字邏輯,數據結構課程是數據庫、計算機組成原理等核心課程的基礎,還是計算機網絡等課程應該掌握的前提學科。理解數據結構在學科系統中的位置,合理安排理論和實踐教學,能幫助學生加深對基礎課程的理解,培養學生具有良好的工程思維,還能使學生為未來核心課程的學習奠定良好的基礎。
綜上所述,數據結構課程具有概念較多、內容抽象、理論和邏輯性強、程序復雜等突出特點。教學實踐中發現,學生中普遍存在概念不清、無法準確理解的問題,上實驗課時常常不能通過正確編寫程序來理解課程內容。因此,有必要根據數據結構實驗教學特點進行實驗教學改革。
實驗教學是理論教學的延續和擴展,是培養學生興趣、解決實際問題的重要手段。課程中需要學生具有一定的編程能力用以加深對算法的理解,因此學生對于C語言的掌握也至關重要。本文在筆者多年實驗教學經驗基礎上,以激發學生對數據結構課程的學習興趣和加深理解為主線,提出了電子信息專業數據結構實驗教學的措施。
(1)數據結構中樹、圖、查找、排序等章節的概念較多,很多都需要通過理解記憶,才能更好地理解算法的含義和數據結構,因此可以利用一些簡單的小例子來幫助學生記憶。例如,學習完鏈表后,可以將一個班上所有同學的信息用鏈表的形式用數據結構的概念來定
義,將男生和女生信息分成兩個鏈表來保存,在鏈表尾部插入新來的同學的信息等。通過這些類似的小例子,都可以幫助電信專業的學生們理解數據結構,了解算法設計對程序的影響。
(2)由于大多數電信專業學生程序語言和編程能力較弱,對問題沒有清晰的算法思想,也無法將其轉為完整的代碼正確的表達出來。同時課本上的例證用的都是偽C代碼,學生很難理解這種偽代碼的描述語句,編寫出C程序的難度就更大了。因此教師在實踐教學中應該注重對于程序語言的培養,對于課本上的類C語言描述需要更透徹的講解,對于一些默認采用的代碼也需要多提示。
例如在鏈表學習中,課本對于單鏈表結點類型的定義為:
typedefstructLNode
{
ElemTypedata;
structLNode*next;
}LinkList,*LNode;
其中LNode是節點指針,用于單鏈表的鏈接操作(指向下一個節點)。LinkList是定義的結構體的名稱,用于表示整個鏈表(其中包含兩個方面,數據域和指針域,當鏈表中只有一個節點時,指的就是整個節點)。這里的*LNode和LinkList都是指向鏈表,但一個是用名字表示,另一個是指針表示。而這里的ElemType可以表示任意類型,通常編寫程序時,會在結構體的前面加上類似typedefElemTypeint;的語句,用以說明此程序中的ElemType被定義成int類型。
這樣類似的編程中需要注意的小細節,都需要在實驗教學中告訴學生們,方便學生們對編程語言的閱讀、分析和理解。同時,平時應該多鼓勵學生編寫程序,閱讀程序,解決實際小問題,提高學生的積極性。
(3)根據學生掌握知識的程度不同,教師在實驗教學中應該采用由簡到難的方法來幫助學生克服學習中的困難。例如,學習樹這個數據結構時,由于用到了遞歸的概念,因此先從遞歸的含義著手,結合前面學到的線性表的概念,從利用樹的孩子表示法開始,過度到孩子兄弟表示法,學習樹轉換成二叉樹的過程和不同的程序編寫方法,然后通過閱讀例子,最后編寫程序,在閱讀中理解,在實踐中進步。
(4)同時學生也需要通過自身努力來提高興趣和學習效果。因此,學生要進行課前預習和課后復習,熟悉各種數據結構的表示方法,將數據結構的概念應用到實際生活中來解決問題,多看、多編寫程序。
數據結構是電子信息技術領域的一門基礎課程,實踐在數據結構的教學中起著重要的作用,可以幫助學生理解抽象的概念,增加趣味性,甚至可以用來解決日常生活中遇到的常見問題,同時練習和鞏固了常用的編程語言。由于數據結構被應用到神經網絡和數據庫等多個領域,學好數據結構有利于后續其他專業知識的學習。因此,數據結構在電信專業的本科實踐教學中具有舉足輕重的研究意義。
[1]教育部高等學校電子信息科學與工程類專業教學指導分委員會.高等學校電子信息科學與工程類本科指導性專業規范(試行) [S].北京:高等教育出版社,2010:1-66.
[2]汪沁.基于“數據結構”實驗的探討和研究[J].中國教育信息化,2007(04):17-19.
[3]徐大華0程序設計語言教學方法探討[J].高等理科教育,2007(01):36-38.
[4]袁曉峰.“算法與數據結構”實驗教學的改革與實踐[J].中國電力教育,2011(29):136-137.
武漢科技大學2014年度青年科技骨干培育計劃項目,項目編號:2014xz011
邱奕敏(1981-),女,湖北武漢人,博士,研究方向為知識工程,圖像處理。