邱祥慶 (福建江夏學院電子信息科學學院,福建 福州350108)
1)數據結構的預備知識掌握不牢 《數據結構》課程一般在大學二年級開設,要求學生先修一門程序設計語言,但由于學生在大學一年級的時候剛剛開始接觸程序設計語言,沒有建立起基本的程序設計思想,不能利用計算機解決問題,更談不上把所學的知識融會貫通。很多同學甚至對程序設計產生了恐懼心理,只要看到程序,不管程序的難易就先入為主地覺得自己不會,因此在學習數據結構時,往往只理解了某數據結構的概念,一旦碰到用具體程序來描述某數據結構或算法時就顯得力不從心。
2)教材理論性、抽象性太強 雖然目前市面上有很多優秀的《數據結構》教材,如清華大學嚴蔚敏教授組織編寫的《數據結構》等國家“十一五”規劃教材,然而這些教材的理論性都比較強,教材中嚴格采用算法設計的語言來描述算法。這對于國內“一本”大學的計算機專業的學生來說理解起來也許難度不大,但對于那些應用型本科高校的非純計算機專業學生來說很難將課本的中的含有一定設計技巧的算法轉換為程序上機調試通過,在一定程度上挫傷了學生編寫程序的積極性,阻礙了學生實踐能力的提高。
3)教學方式和方法單一 目前大部分從事《數據結構》教學的教師來自于計算機學科,這些教師具有豐富的計算機學科的專業知識,通過板書和講解可以達到讓學生掌握相關知識點的目的,但在教學過程中缺乏讓數據結構同信息管理與信息系統專業 (簡稱信管專業)的有機地融合,使學生誤認為學習數據結構僅僅是為了掌握相關的計算機技術,而與本專業的知識結構體系沒有直接聯系。同時,由于《數據結構》課程在傳統教學中需要大量的板書演示,因此學生忙于作筆記,雙方嚴重缺乏互動,課堂氣氛沉悶,學生提不起學習的興趣,雖然現在也大多采用多媒體課件的方式進行教學,但這又容易導致學生既要關注屏幕內容又要忙著作筆記無暇思考問題,課后難以消化,“聽課”變成“看課”。這樣一來學生就很難把握該課程的知識脈絡,自然也不知道數據結構與本專業的聯系體現在哪些方面,對于學習這些知識在以后工作中有什么用處感覺很迷茫。
4)教學實踐環節設計不合理 傳統《數據結構》的實踐教學主要是讓學生在學習完每一章節后完成若干上機實驗作業,想由此達到提高學生實踐能力,深化理論教學的目的。然而,大部分實驗與現實聯系不夠緊密,僅僅是為了考查知識點而設計實驗,學生無法驗證所完成實驗的正確性和實用性,很多同學只知道將代碼敲進去,然后調試通過出來結果就行了,并沒有思考這個實驗在現實中有什么實際應用;而且這種實驗只有少數基礎較好的學生從中受益,大部分學生卻收效甚微,與實踐教學改革的既定目標相差甚遠。
除了以上4個普遍存在的問題外,信管專業在《數據結構》課程的教學中還存在其特有的問題:課程培養目標與專業培養目標脫節。信管專業并不是一門純計算機的專業,該專業學生相比計算機系學生在計算機語言及其他計算機基礎知識上掌握也存在差距,這使得信管專業數據結構教學更容易產生問題。信管專業主要側重于研究信息的構成與分布特征,信息系統開發與設計的理論、原則和方法,解決信息的獲取、加工、檢索、控制和利用等一系列重要問題,為科學研究和管理決策提供高質量的信息服務。這其中信息組織、信息存儲與檢索是本專業的核心知識模塊。然而目前的現狀是大部分學校在編寫信管專業《數據結構》教學大綱時只注重數據結構中計算機學科角度的知識點的設計而忽略了其在信管專業中的作用的體現。這就導致學生在學習了數據結構課程后并不了解該課程的學習對于信管專業的專業培養有何幫助,甚至覺得學習這門課程沒有任何作用。
1)課程目標建設 對于《數據結構》這門課程的建設目標,研究型本科側重于數據對象的特性、算法分析等數據結構理論問題的研究,注重理論的系統性、完整性和探索新結構新方法的創新性;而應用型本科則側重數據的邏輯結構、存儲結構和在特定結構基礎上的算法實現,注重結構的特性、算法的效率性和在實際問題中選擇結構與算法的應用性[1]。
此外,針對信管專業的特點,在制定課程目標編寫教學大綱時,不僅需要從計算機學科的角度來把握數據結構的基本原理和基本方法,更重要的是如何與專業知識和專業培養目標相結合,要體現出數據結構本身與信息組織、信息存儲與檢索之間的聯系,即數據結構與信息組織的研究對象是一致的;數據結構研究內容是為信息組織服務;數據結構課程中的物理結構就是研究信息的存儲方式;數據結構課程中算法為信息檢索服務[2]。
2)教學資源建設 學生在學習一門課程的過程中除了老師的課堂傳授外,還需要大量其他的教學資源,如教材、參考書、教學網站等。因此為學生提供豐富的教學資源也是提高學生學習興趣以及強化知識吸收的一個重要手段。
目前市面上《數據結構》課程的教材琳瑯滿目,針對應用型本科特點,應當選擇一套體系科學、適合二本、三本學校學生、教學內容與應用實例能有機融合的數據結構教材。經過多方對比,筆者選擇了王紅梅教授編著的《數據結構 (C++)版》系列教材,該套教材具有如下特點[3]:① 定位準確,合理規劃教學內容,能夠抓牢核心概念,提煉基礎性內容,側重工程實踐,減少形式化描述;②知識拓撲結構合理,主線清晰;③書中精心安排了人物小傳和思想火花,激發學生興趣;④分析難點,針對處理,全書有250多張插圖,降低了理解問題的復雜性;⑤立體化教材保證教學有效實施,該套教材既包括學生用書、學習輔導和實驗指導,還包括教師用書、教學課件、教學網站,這樣可以為師生提供一種綜合性和全方位的教學資源,最大限度地滿足教學需要。
除了采用上述立體化教材化外,將《數據結構》中一些經典的算法設計成Flash動畫的形式也是教學資源建設中很重要的一塊,學生通過互動式的動畫演示可以很直觀的理解一些算法和數據結構的特性。
3)教學方法及教學內容的組織 《數據結構》課程知識豐富,內容抽象,在教學中要避免對課程知識的割裂,要教給學生完整連貫的知識。因此應當綜合運用多種教學手段在教學中以“點線面體”的形式進行立體組織授課。整個教學體系要開成若干主線,注重培養學生掌握各個知識點之間的聯系,形成數據結構的理論教學面。該課程的理論教學應該抓住3條主線:①明線,即教材中的章、節、目,這些是教材的骨架。②暗線,即教材的章、節、目之間的內在聯系,是教材的經絡,反映課程內容的隱含關系。如在講授每一個數據結構時以抽象數據類型為主線,按照“定義→設計→實現”這3個層次展開討論;對于復雜的算法,從問題入手,采用“提出問題→分析問題→解決問題”的過程,采用“圖示理解問題及求解思想→代碼描述算法→C++描述算法”的三級模式,建立抽象化思想并掌握相關技術。③虛線,即數據結構課程涉及的相關學科知識,是教材的血脈,體現了課程內容的深度和廣度,這一點也是很重要的。要講好該課程僅靠一本教材是不夠的,要參考多本教材,要了解該課程的知識在后續過程中的應用,特別是在信管專業中的應用。

圖1 基本概念的網狀理解
特別地,在對于基本概念的講解上可以采用網狀理解教學法(見圖1)。首先通過貼近生活的教學設計加深學生對概念的理解,同時對于復雜的概念進行分解,提取關鍵詞,學會把問題拆開來思考,培養學生的開放性思維;再者通過適當的形象圖示來直觀地展現數據結構中的一些算法原理。最后還要注意總結,形成模式,對于某些概念還要適當進行引申,強調用應用的觀點理解基本概念。
此外,在教學中還應當采取“課前-課堂-課后”三管齊下的辦法進行教學的組織,做到少講、精講。除了正常的課堂教學外,對課前預習和課后復習任務進一步細化,讓學生有明確的預習任務,而不只是簡單的看書。對于一些較容易掌握的知識點提倡學生在課前自學完成,在課堂上重點介紹一些重要的比較難于理解的知識點,在課后布置一些應用型的練習來提高學生靈活運用知識點的能力。
以《數據結構》中的“線性表”為例,該章節的明線就是線性表的邏輯結構→線性表的存儲結構。對于線性表的邏輯結構從線性表的定義出發,抓住要點深刻理解概念,為了便于理解,先將線性表拆成“線性”和“表”,讓學生分別理解什么是線性,什么是表,接著再引申出線性表的特性及邏輯特征,最后再通過總結給出線性表的抽象數據類型的定義。對于線性表的存儲結構,則要把握2條支線:順序存儲結構和鏈接存儲結構。對于每種存儲結構,從存儲思想出發,根據存儲示意圖理解存儲要點,然后再基于存儲結構設計線性表的抽象數據類型。同時在教學設計中,課前先讓學生去找出現實中線性表有哪些應用,在課堂上進行適當討論,在講授順序表的插入這一概念時以現實中排隊的插隊為例進行類比,使得學生更容易理解順序表插入的操作特性。
4)教學實踐環節的設計 在《數據結構》實驗教學方面同樣形成主線,以編程實現相關數據結構的數據組織和算法為手段提高學生的動手能力,最后將理論和實驗兩者結合起來進行數據結構課程的課程設計實踐,進一步提高學生解決實際問題的能力。同時為了避免實驗與實際應用的脫節,要把課程必須掌握的技能點設定多層次的實驗要求,精心選擇與課程教學內容密切相關的典型案例。將實驗分為驗證型、設計型、綜合型3種不同層次。驗證型實驗讓學生了解各數據結構的基本算法實現;設計型實驗讓學生針對具體問題應用某一知識點設計相應的數據結構和算法,并上機實現,以培養學生對數據結構的簡單應用能力;綜合型實驗作為課后的拓展要求,主要是針對現實中的具體問題應用數據結構中的若干個知識點解決,培養學生的綜合應用能力。
以“棧和隊列”章節為例,在進行實踐教學設計時,先直接給出順序棧和鏈隊列的實驗代碼,讓學生進行驗證實驗,了解棧的基本操作原理和實現方法,接著再以“火車車廂重排問題”為例讓學生進行設計實驗,培養學生對隊列的簡單應用,最后再設計一個“表達式求值”的綜合性實驗,讓學生能夠靈活運行棧的相關知識點解決實際問題。
[1]寧正元 .應用型本科“數據結構”課程教學改革的研究與實踐 [J].計算機教育,2009(17):119-121.
[2]熊回香 .試論信息管理與信息系統專業《數據結構》課程的教學 [J].高等函授學報,2007(4):11-12.
[3]王紅梅 .數據結構 (C++版)[M].第2版 .北京:清華大學出版,2011:130-131.