摘 要:數據結構是計算機專業(yè)重要的基礎課程,也是從事軟件開發(fā)工作的內功,但是該課程學習內容概念眾多,各種結構抽象難懂,算法實現復雜。在教學過程中,要注意聯(lián)系實際趣味引導,采用多種形式將抽象的內容具體化,注重實踐性教學,合理安排教學進度和難度以達到好的效果。
關鍵詞:數據結構;抽象與具體;實踐;
0 引言
《數據結構》是計算機軟件相關專業(yè)的基礎課程,從計算機專業(yè)設立開始至今,很多的專業(yè)課程隨著技術的發(fā)展逐步淘汰,《數據結構》是一直開設的少數課程之一,其重要性不言而喻,但是該課程學習內容非常抽象,以致于學習困難也是大家的共識。如何結合該課程的特點,分析教與學中遇到的困難,找到合適的能夠真正用于教學實踐的教學方式與教學手段是值得探討的問題。
1 課程教學需要解決的問題
數據結構是計算機存儲、組織數據的方式。該課程研究數據的邏輯結構和物理結構以及相應的運算,好的數據結構可以帶來更高的運行或存儲效率。具體來說,學好數據結構可以把現實中的實際問題抽象為計算機能夠理解的數據模型,然后選擇適當的算法來高效地解決問題。
抽象是數據結構這門課程最主要的特點,也是導致學生認為課程難學的原因之一。數據結構這門課介紹了線性表、棧與隊列、二叉樹、圖、散列等多種邏輯結構,每種邏輯結構又有順序和鏈式存儲結構,不同的存儲結構對于同一種操作有不同的算法,不同的算法就有不同的效率。教學內容復雜概念眾多,很多學生雖然能夠掌握一些基本知識,但往往不明白學習該課程有什么用途,覺得遠不如學習Java、C等語言實際。
數據結構這門課也是實踐性很強的課程。在學習這門課之前,學生都已經學過C、C++或者Java編程語言,數據結構的算法需要采用編程語言來實現。在實際教學中,編程語言一般開課課時80學時左右,大部分的學生只掌握了基本的選擇、循環(huán)和數組,對于在數據結構算法中大量使用的結構體、指針、函數遞歸、文件等內容沒有學或者僅僅是有一些了解,在調試數據結構算法時,程序無法通過或者無法理解,學生產生很強的挫敗感,大大降低了學習的興趣。同時,教師可能會因為課時有限等原因,重理論思想而忽視代碼講解,導致學生算法實現困難。
2 教學措施
根據對課程學習中存在問題的分析,教學內容抽象、教學實踐沒有落實是最主要的原因。數據結構的教學主要從以下幾個方面采取必要的措施:
首先,趣味引導是提高學生學習興趣,將現實世界與抽象內容聯(lián)系起來的紐帶。尼采曾說過:“人們無法理解他沒有經歷過的事情”。從學生熟悉的知識出發(fā),一個場景、一段視頻、一個趣題或是一個故事作為每個教學主題的開始[1],讓學生了解學習的內容與客觀世界的關系,了解實際問題如何抽象成數據模型,提升對進一步學習算法的興趣。
其次,抽象內容直觀具體化是讓學生充分理解學習內容的關鍵。在認識過程中,有了感性具體,才可能有思維的抽象,感性具體是思維抽象的前提。但是數據結構里面的概念、算法都是抽象的結果。讓抽象內容變得直觀具體可以采用下面幾種方式。
(1)“靜圖”變“動圖”。在教學形式上,畫圖是最常用的方法之一,每一種結構、每一個算法都采用直觀的圖形來體現,大部分的教材都采用了這種方法。借助多媒體手段,可以將單一的“靜圖”變成“動圖”,更能夠直觀的體現數據之間的關系以及算法執(zhí)行中的變化過程,同時也提高了趣味性。
(2)教具的使用。教具是用來講解說明某事物的模型、實物,直觀教具可以使知識具體化、形象化,為學生感知、理解和記憶知識創(chuàng)造了條件。直觀能促使學生的具體感知與抽象思維相結合,減少學生掌握抽象概念的困難,幫助其形成明確的概念,發(fā)展其觀察能力和思維能力。傳統(tǒng)的數據結構教學中,很少使用教具,同時市面上也沒有專門的課程教具,需要教師自己來設計教具??梢圆捎檬占{盒表示變量、貼上寫好變量名,用很多的小方塊或是寫好數字的卡片來表示數據,隨著每一步算法的實施,變量的值發(fā)生改變,這樣可以演示整個執(zhí)行的過程,學生會得到直觀的感受。
(3)情景立體教學。現在的教學資源非常豐富,很多內容可以融入到教學中。比如,排序是數據結構非常重要的內容之一,各類排序算法很多,我找了到一組排序舞蹈視頻,組織學生觀看后討論,充分理解排序算法的思想,組織學生進行表演,了解數據的變化過程。這樣課程也變得有趣多了,也提高的學生的學習主動性。
最后,需要強化實踐性教學。數據結構的教師往往有一個誤區(qū),認為只要講好算法的基本原理就好了,至于編程如何去實現,應該是C、C++或Java老師的事情。同時,因為算法的實現比較復雜,學生往往心有余而力不足,就會很快放棄。教師主要從以下兩個方面入手,讓實踐性教學落到實處。
(1)精心選擇,算法內容實現分層。根據算法的難度和教學大綱可以把算法分為基礎訓練、簡單應用、綜合應用三個層次,教學過程中循序漸進,提出基本要求和更高要求。應用題目貼近生活,鼓勵學生拓展思維,采用多種方法解決問題。
(2)算法精講。教師首先思想上要認識到算法實現也是數據結構課程非常重要的一方面,不能僅僅只講原理,實現過程也要精講,復雜的算法更要精講。教材上如果只提供零散的代碼片段或偽碼,教師可以提供完整的代碼參考。
3 結束語
學習數據結構實際上是邏輯思維能力的鍛煉,更重要的是學習如何把現實問題轉化為計算機語言的表示,所有的算法必須基于數據結構生存。我們需要合理利用各種資源,與時俱進不斷改進教學方法與教學手段,培養(yǎng)學生分析解決問題和創(chuàng)新的能力。
參考文獻:
[1]程杰. 大話數據結構. 清華大學出版社. 2011
作者簡介:
陳暢,女,湖南長沙人,副教授,研究方向:軟件開發(fā)