齊金山 郭立強
摘要:數(shù)據(jù)結(jié)構(gòu)是高校計算機專業(yè)學習的核心課程。文中分析了目前數(shù)據(jù)結(jié)構(gòu)教學中存在的教學方法僵化、實踐性環(huán)節(jié)實施不利、授課對象的差異性等問題,結(jié)合實際提出了相應的教學改革模式,以此極大的提升課程的教學質(zhì)量及學生的實踐能力。
關鍵詞:數(shù)據(jù)結(jié)構(gòu);教學模式;教學手段;差異教學;實踐教學
中圖分類號:G64 文獻標識碼:A 文章編號:1009-3044(2018)20-0094-02
數(shù)據(jù)結(jié)構(gòu)作為計算機專業(yè)學生的核心課程,對學生的編程能力以及計算思維能力的培養(yǎng)起著非常重要的作用,并為學生學習后續(xù)課程打下堅實的專業(yè)基礎。有關計算機專業(yè)的課程系統(tǒng)結(jié)構(gòu)如圖1所示,根據(jù)課程的學習順序,數(shù)據(jù)結(jié)構(gòu)起到承上啟下的強關鍵作用,后續(xù)諸多課程如編譯原理、操作系統(tǒng)、數(shù)據(jù)庫、人工智能、計算機圖形學等必須以此作為先修課程。宋等人[1]也進一步強調(diào)了數(shù)據(jù)結(jié)構(gòu)的重要性,指出“通過本課程的學習,學生可以分析計算機處理對象的特點,選擇合適的存儲表示,并實現(xiàn)相應的算法”。然而,筆者在實際的教學過程中,發(fā)現(xiàn)一系列的嚴重影響課程教學質(zhì)量的種種問題。本文在探討這些問題的基礎上,提出行之有效的教學模式以更好地服務于教學,使學生真正地掌握核心點。
1數(shù)據(jù)結(jié)構(gòu)課程存在的問題和特點
數(shù)據(jù)結(jié)構(gòu)作為一門理論性和實驗性緊密相結(jié)合的課程,要求在教授理論與實驗時必須分配相當多的學時。根據(jù)筆者從幾所高校教學情況了解,課程一般均設置90個學時,其中理論部分占54個學時,實驗部分占36個學時,從而保證學生有足夠的時間掌握數(shù)據(jù)結(jié)構(gòu)中的各種知識要點,如線性表、棧和隊列、二叉樹以及圖等,同時確保將所學的理論知識能夠熟練應用于具體的實踐中并予以解決。然而在以往的教學過程中,發(fā)現(xiàn)存在諸多問題,主要表現(xiàn)在以下幾個方面:
1.1 傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)教學方法僵化性
傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)在理論教學方法中主要依據(jù)教學大綱規(guī)定的教學內(nèi)容、章節(jié)教學時數(shù),按部就班的講解教材中的各知識點,側(cè)重點不突出,導致學生一股腦兒地全盤接受,使得學生并沒有將所學知識有機地串聯(lián)起來,割裂了知識點之間的相關性。在實驗教學過程中,同樣采用此種教學模式,要求學生按照實驗指導書中所標注的實驗目標、實驗內(nèi)容以及實驗步驟等展開實驗,結(jié)果使得在培養(yǎng)學生創(chuàng)新性思維方面極度缺乏,導致學生在提出問題、分析問題、解決問題的能力沒有得到進一步的提高。李等人[2]指出在數(shù)據(jù)結(jié)構(gòu)教學過程中需要進行的一系列改革措施,以此提高學生的實踐編程能力;沈等人[3]提出的以計算思維為中心的教學舉措,均值得借鑒。
1.2 數(shù)據(jù)結(jié)構(gòu)理論知識與實踐教學環(huán)節(jié)存在的偏差性
數(shù)據(jù)結(jié)構(gòu)理論知識與實踐教學環(huán)節(jié)存在偏差問題。在真實教學當中,數(shù)據(jù)結(jié)構(gòu)課程與編程語言課程往往緊密聯(lián)系在一起。然而這兩門課程由于都是獨立開設,在不同教學語境下,不同授課老師往往將其孤立起來授課,結(jié)果導致兩者之間缺乏必然的聯(lián)系,從而引起后續(xù)存在各種教學問題。在制定教學大綱以及教學目標時如果沒有特別考慮這兩門課程在編程語言選擇的一致性,將引起數(shù)據(jù)結(jié)構(gòu)的理論知識與實踐編程教學的脫節(jié),嚴重影響教學效果。同樣地,教授這些課程的老師之間也需要在知識銜接一致性上進行密切溝通,不然就會在教學內(nèi)容上出現(xiàn)空白區(qū)域,使學生對兩門課程的內(nèi)在關聯(lián)缺乏局部到整體的認識,進而導致不能深入系統(tǒng)地學習相關知識[4]。在培養(yǎng)學生計算思維方面,兩門課程也需要保持一致性,傳統(tǒng)教學方法往往注重編程語言和數(shù)據(jù)結(jié)構(gòu)基礎知識點的灌輸,缺乏對學生計算思維能力的鍛煉。由于數(shù)據(jù)結(jié)構(gòu)中的知識相對比較抽象,如果缺乏對應的真實案例對抽象知識加以應用,那么就會導致學生不知道怎樣將所學的知識應用到實際中,缺乏具體問題具體分析和解決的能力[5]。
1.3 授課對象存在的差異性
由于學生學習能力以及努力程度等方面存在的個體差異,導致掌握編程語言學習基礎就出現(xiàn)兩極分化,部分學生編程能力偏弱,間接影響后繼課程尤其是數(shù)據(jù)結(jié)構(gòu)的教學效果。如果對整個年級不加以區(qū)分,則嚴重影響數(shù)據(jù)結(jié)構(gòu)的整體進度,同時,深化知識也無從談起。教師的教學始終停留在一個相對膚淺的知識層面上,不利于培養(yǎng)學生的綜合能力,尤其對于那些優(yōu)等生來說,更不利于其創(chuàng)造性思維的培養(yǎng)。
鑒于以上真實教學中存在的種種問題,結(jié)合本校的實際情況,將考慮進行如下數(shù)據(jù)結(jié)構(gòu)課程教學模式改革,不僅旨在打破傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)按部就班教學模式,同時依據(jù)數(shù)據(jù)結(jié)構(gòu)和編程語言這兩門核心專業(yè)課程的教學內(nèi)容和計劃,做好相關知識的整合和內(nèi)容的銜接,另外注重不同對象的差異教學。課程教學不僅要關注知識的傳授,還要培養(yǎng)學生主動獲取知識并綜合已有知識創(chuàng)造新知識的能力[6]。
2 數(shù)據(jù)結(jié)構(gòu)課程教學模式改革
為了使學生熟練掌握數(shù)據(jù)結(jié)構(gòu)相關知識以及具備編程技巧,以完成后續(xù)較困難的項目開發(fā),為此制定了以下的數(shù)據(jù)結(jié)構(gòu)培養(yǎng)教學模式改革方案。
2.1 差異性教學模式
根據(jù)課程設置,在第一學期和第二學期中進行C++編程語言訓練。研究對象為大一學生,他們在第二學期完成了C++編程語言的學習之后,將為第三學期的學習數(shù)據(jù)結(jié)構(gòu)奠定堅實的基礎。同時,在第二學期開始,教師對學生進行培訓動員,介紹對他們進行培訓的目的和實踐意義,所有參加者自愿參加培訓活動。教師依據(jù)培訓者對C++編程語言掌握情況進行差異化教學,以有利于解決授課對象存在的差異性問題,因此將培訓者分為兩組:基礎組和提高組。在基礎組主要介紹C++編程語言的基本語法和編程訓練,具體訓練內(nèi)容包括數(shù)據(jù)類型、變量、操作符、表達式、程序結(jié)構(gòu)和語句、模塊化編程技術(shù)、數(shù)組以及指針的使用。而提高組中引入C++編程語言的高級內(nèi)容,如類與對象、文件的操作和使用技巧。兩組根據(jù)學生掌握的知識隨時調(diào)整。教師在培訓過程中要求學生必須進入實驗室,并在計算機上進行實際操作。在培訓中,教師講解內(nèi)容的一部分,然后學生在老師的指導下編寫程序。此外,為了激發(fā)學生的學習興趣,教師還將提供一些學生喜歡的小游戲,供學生在編程訓練中使用。同樣地,在進行數(shù)據(jù)結(jié)構(gòu)具體教學任務中,也實行差異化教學,將整體學習對象也劃分如上兩組。其中基礎組主要介紹數(shù)據(jù)結(jié)構(gòu)的基本概念以及常規(guī)應用,具體訓練內(nèi)容包括線性表、棧和隊列、樹和圖等基礎知識的掌握。而提高組中引入高階知識的編程應用,如圖像的壓縮存儲等等。進一步增強那些學有余力的同學分析問題、解決問題的能力。
2.2 實踐性教學模式
針對數(shù)據(jù)結(jié)構(gòu)理論知識與實踐教學環(huán)節(jié)存在偏差問題,首先,要確保數(shù)據(jù)結(jié)構(gòu)教材使用的編程語言與前驅(qū)課程C++保持一致,這樣更有利于數(shù)據(jù)結(jié)構(gòu)課程的實踐實現(xiàn)。其次,做好這兩門課程教學內(nèi)容的融合與銜接問題,尤其針對兩門課程存在知識點的重合部分,教師間確切溝通、整合好有關教學內(nèi)容。如整合兩門課程的數(shù)組、排序等相關知識點。再次,構(gòu)建多層次實驗教學模式,進一步鞏固學生的數(shù)據(jù)結(jié)構(gòu)理論知識以及實驗動手能力。由于數(shù)據(jù)結(jié)構(gòu)是一門實驗性很強的專業(yè)基礎課。實驗教學是本課程教學的重要組成部分。為此,構(gòu)建多層次實驗教學體系,所有的授課對象都需要接受如下的實驗教學內(nèi)容:基礎實驗、課程設計和課外科學活動。在基礎實驗上,學生在掌握數(shù)據(jù)結(jié)構(gòu)理論的基礎上,需要在C++編譯器中調(diào)試算法,以實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)和基本操作。根據(jù)理論教學,可以精心設置八個基本實驗,主要內(nèi)容包括:線性列表的基本操作、序列堆棧和鏈接隊列的操作、遍歷二叉樹、創(chuàng)建和遍歷圖形、操作、二叉排序樹等。為了幫助學生形成正確的觀念,防止其編寫不合理的程序,需要對每一個實驗都制定嚴格的標準,并給出了一個統(tǒng)一的格式,包括實驗目的、預備知識、實驗內(nèi)容、實驗過程以及體會五個部分。學生在計算機上調(diào)試和測試程序,教師適時引導學生,使學生成為獨立、有效的學習者。這些措施不僅可以提高程序調(diào)試的成功幾率,而且可以增強學生學習的信心和興趣。在課程設計上,學生需要結(jié)合實際應用來解決一些更大的問題。為此教師可以提前預設一些較為困難和較強的應用程序,供學生選擇,如稀疏矩陣計算器、停車管理系統(tǒng)、最小生成樹問題等等。在這個過程中,若干名學生形成一組,隨機選擇一個項目,小組成員合作完成項目。通過分析、設計、編碼和調(diào)試,學生可以深刻理解和掌握邏輯特征和物理存儲,以及算法設計和軟件實現(xiàn)。為了給學生提供嚴格而良好的程序設計的基礎訓練,教師制定課程設計標準化的要求:首先,需求分析,在這個階段,主要工作是要求識別分析問題。其次,總體設計,主要工作是定義系統(tǒng)的數(shù)據(jù)類型和基本功能模型。第三,詳細設計,設計任務主要是細化數(shù)據(jù)結(jié)構(gòu)規(guī)范和基本操作,定義數(shù)據(jù)存儲結(jié)構(gòu),確定算法的主要步驟。第四,設計實現(xiàn),其任務是通過編碼和調(diào)試,使學生掌握錯誤檢測的基本技術(shù)。第五,完成課程設計報告是最后階段。在課外科學活動上,為了拓寬學生的知識面,提高學生的綜合能力,教師鼓勵學生參加各種課外科學活動,如大學生創(chuàng)新基金項目、教師科研、數(shù)學建模競賽等。在這些活動涉及許多數(shù)據(jù)結(jié)構(gòu)的基本理論。通過解決這些問題,可以激發(fā)學生的學習積極性,提高學生的編程技能,提高他們分析問題和解決問題的能力。
2.3 興趣驅(qū)動模式
針對傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)教學主要以填鴨式教學為主,無法充分調(diào)動學生的學習興趣,因此培養(yǎng)學生的興趣尤其重要。興趣是最好的老師,是學生學習新知識的動力源泉[7]。教師在課堂上就理論知識部分應該做到主次分明、重點突出、懂得取舍,尤其應著重結(jié)合具體應用實例吸引學生的注意力。通過這些實例,更好地調(diào)動學生的學習興趣,使他們意識到數(shù)據(jù)結(jié)構(gòu)并不單純是學習各種數(shù)據(jù)如何在計算機中存儲以及表示,而是所學的知識將來如何解決工作和生活中的相關問題。同時教師在講解基本內(nèi)容和思路后,留出部分時間在現(xiàn)場向?qū)W生提問并討論和予以解決,以發(fā)揮學生的主觀能動性。這種互動的教學方式,使學生由被迫式學習轉(zhuǎn)化為主動式學習,從而使這個學習過程變得生動有趣。學生在學習過程中收獲到極大的滿足感與參與感,進而提高教學效果。
3總結(jié)
本文在分析數(shù)據(jù)結(jié)構(gòu)教學中存在的諸多問題后,提出了相應的教學改革模式,希望以此提高教師在日常教學中的教學效果和教學質(zhì)量,尤其提高學生的實踐能力和編程能力。然而在教學探索中依然存在不少問題,需要我們在以后的教學實踐中進一步完善和修正。
參考文獻:
[1] Song Y, Jin S, Xu F. Explorations on Strengthening of Students Programming Capabilities in Data Structure Teaching[J]. Lecture Notes in Electrical Engineering, 2014(269):2765-2770.
[2] 李群,趙玉霞,莊波.《數(shù)據(jù)結(jié)構(gòu)》實驗課程設計與探討[J].中國現(xiàn)代教育裝備,2007(3):27-28.
[3]沈華,張明武.以計算思維為中心的數(shù)據(jù)結(jié)構(gòu)教學方法探討[J].計算機教育,2016(10):145-148.
[4]尹蘭,唐翠芳.計算機專業(yè)基礎課程中的遞歸教學[J].現(xiàn)代計算機,2012(5):57-60.
[5]郭艷燕,童向榮,孫雪姣,等.程序設計基礎與數(shù)據(jù)結(jié)構(gòu)兩門課程的教學銜接[J].計算機教育,2014(10):47-50.
[6]陳越,何欽銘.計算機專業(yè)研究型課程教學模式與創(chuàng)新能力培養(yǎng)的探索[J].計算機教育,2009(24): 99-101.
[7] 薛小鋒,薛向紅.案例教學在非計算機專業(yè)“C語言程序設計”教學中的應用[J].江蘇技術(shù)師范學院學報,2010(4):80-82.