曹妍 陳燕 盈艷 屈莉莉
摘要:為實現(xiàn)我校計算機相關專業(yè)的人才培養(yǎng)目標,對數(shù)據(jù)結構課程教學中存在的實際問題進行了認真分析,結合我校目前人才培養(yǎng)特征,提出了一種淡化細節(jié)注重算法思想和實踐環(huán)節(jié)的啟發(fā)式創(chuàng)新型教學模式。
關鍵詞:數(shù)據(jù)結構;教學模式;先修課驅動;算法思想
中圖分類號:G642 文獻標志碼:A 文章編號:1674-9324(2016)04-0125-02
數(shù)據(jù)結構課程作為計算機相關專業(yè)必不可少的一門基礎課程,以其內容抽象、算法多且不易理解的特點成為學生難學、難懂的課程之一。盡管如此,學生們也應該認真學習,該課程的學習效果不僅關系到后續(xù)課程的學習,而且也關系到信息系統(tǒng)設計開發(fā)水平的提高和專業(yè)素質的培養(yǎng)。數(shù)據(jù)結構課程的教學目標主要是培養(yǎng)學生具備能根據(jù)實際問題有效地組織、存儲數(shù)據(jù),并能正確設計處理數(shù)據(jù)的算法,因此,學好該門課程對于提高學生的理論認知水平和實踐動手能力有著極其重要的提高作用。但是由于學生實踐能力薄弱,而且數(shù)據(jù)結構課程內容比較抽象以及動態(tài)性強,傳統(tǒng)的教學模式很難使學生很好地掌握課程的主要學習內容,從而使學生失去了學習興趣,造成教學效果不太理想。所以,對數(shù)據(jù)結構課程教學模式進行改革研究,以提高教學質量是及其重要且必要的。目前,有很多研究學者進行了數(shù)據(jù)結構教學模式的改革研究。例如,參考文獻[1]中提出了一種基于3C3R模型的數(shù)據(jù)結構課程教學模式構建方法,布輝[2]等人也提出了一種針對數(shù)據(jù)結構的研究性學習教學模式。
一、“數(shù)據(jù)結構”課程教學過程中存在的主要問題
1.先修課影響數(shù)據(jù)結構的學習。目前,大部分學校的數(shù)據(jù)結構課程都是采用C語言進行算法描述,“數(shù)據(jù)結構”課程的學習必須在熟練掌握基本的C語言知識,深入理解數(shù)組、函數(shù)、指針和結構體等基礎之上,并通過編程實現(xiàn)或自定義一些更加復雜的數(shù)據(jù)結構和算法,才能對數(shù)據(jù)結構中的算法有更好的理解,而C語言這部分的學習內容又恰是學生的薄弱環(huán)節(jié),在教學中我們發(fā)現(xiàn)如果學生對C語言掌握不夠充分將直接影響后續(xù)數(shù)據(jù)結構課程的學習。
2.數(shù)據(jù)結構內容抽象,難以理解?!皵?shù)據(jù)結構”課程中通常采用抽象數(shù)據(jù)類型來表示數(shù)據(jù)的邏輯結構,采用偽代碼進行描述的算法,這會使學生更加難以理解。當面對一些實際問題時,學生很難將現(xiàn)實問題對應到數(shù)據(jù)的邏輯結構,更加找不到解決問題相應的算法,以致編寫不出程序代碼,因此學生的學習興趣就會明顯降低。
3.課堂之上很難演示算法的執(zhí)行過程。“數(shù)據(jù)結構”課程基本上采用的是多媒體教學方式,雖然此方式方便、清晰,但由于本課程涉及大量的概念、抽象數(shù)據(jù)類型以及算法,理論性強又較為抽象,因此數(shù)據(jù)結構的動態(tài)變化,特別是算法的執(zhí)行過程就很難在課堂上充分演示,學生也就難以理解數(shù)據(jù)之間的這種復雜關系。學生即使在課上聽懂了,課后也仍有可能無法及時上機進行實際操作,從而導致學生難以消化吸收教師講授的知識。
4.實際動手能力薄弱。在數(shù)據(jù)結構實驗課上,很多學生即使已經(jīng)掌握了一些算法的基本思想,也往往不知道如何將算法的偽代碼轉換成計算機能執(zhí)行的代碼,以至于有些學生把教材中類似C偽代碼直接當成C語言語句編寫。所以,實踐環(huán)節(jié)中很多學生的程序都無法調試通過,久而久之便對該課程失去了興趣。
二、教學模式改革的主要措施
1.以C語言課程設計為橋梁的先修課驅動。C語言是數(shù)據(jù)結構課程的先修課,一般分在兩個學年或兩個學期授課,由于兩門課的授課教師可能不同,導致授課內容的不連貫,加之C語言的指針、鏈表、結構體、數(shù)據(jù)類型等內容相對較難,而且一般是臨近期末時講授這些內容,授課時間短,上機實踐的機會較少,這對于剛接觸高級程序設計語言的學生來講,理解和掌握其中的原理比較困難。因此,充分利用先修課《C語言課程設計》將C語言逐漸過渡并融合到數(shù)據(jù)結構課程[3]就顯得尤為重要了。
針對這種實際問題,我們以《C語言課程設計》作為連接C語言與數(shù)據(jù)結構的橋梁,將傳統(tǒng)教學中忽略的結構體、指針、鏈表、新數(shù)據(jù)類型的定義等作為《C語言課程設計》教授和實踐的重點,采用《數(shù)據(jù)結構》中最簡單的線性表的基本操作為例,引導學生深入學習C語言,讓學生真正能夠學會用計算機的思維方法去解決生活中簡單的實際問題;將C語言與數(shù)據(jù)結構兩門課逐步過渡到融合,真正保證新教學模式的落實。
以《C語言課程設計》將兩門課程進行結合的教學模式,能使學生能很好的將計算機理論與編程技能相給合,為學生真正掌握計算機這種高效率的時代工具打下堅實的基礎,有利于教學改革和教育創(chuàng)新的人才培養(yǎng),實現(xiàn)可持續(xù)性發(fā)展教學研究的宗旨。
2.淡化細節(jié)注重算法思想。算法是數(shù)據(jù)結構課程中的核心部分。通常數(shù)據(jù)結構教材的大量篇幅都主要用來描述算法,目前許多教材都是基于類C語言的偽代碼描述的,如果教師教學過程中一味地去解釋算法,學生也只能被動的去理解程序的語句和函數(shù),這不但禁錮了學生的想象空間,而且也只是表面懂了算法程序,其實并沒有真正的理解算法的思想。而算法設計本身就是一種創(chuàng)造性的學習,最有利于學生的創(chuàng)新能力培養(yǎng),因此,在教學過程中,在講述算法時,首先要淡化細節(jié),強調說明該算法能解決什么問題,然后用自然語言或配合動態(tài)演示描述算法思路,使學生對抽象模型及算法思想有直觀的理解。例如,兩個遞增有序表La、Lb歸并為一個有序表Lc的算法,用自然語言描述算法思想如下:(1)從La、Lb表中各取一個元素;(2)將較小的元素插入到Lc中,Lc表指針加1,且較小的元素所在的表指針加1;(3)若La、Lb表都有元素,轉(1);(4)將未結束的La或Lb表連接到Lc表之后。在描述中,已經(jīng)淡化了細節(jié),如“將未結束的La或Lb表接到Lc表后面”,這樣既能使學生容易理解,也降低了由于學生C語言知識不牢而影響算法掌握的難度,同時也給學生留下足夠的發(fā)揮空間。比如,學生會思考怎樣才能把La或Lb表連接到Lc表后面呢?這樣就培養(yǎng)了學生良好的解決實際問題的習慣。
算法思想是真正掌握算法的前提,編程能力強一些的學生可能并不一定按照書上的算法編寫,但也同樣可以實現(xiàn)相同的功能,這就是一種創(chuàng)造性的學習過程。
3.算法仿真實現(xiàn)。在理解算法思想的基礎上,再將各步驟轉換成類C語言描述的具體算法。由于數(shù)據(jù)結構課程本身的特點,不但涉及到數(shù)據(jù)的復雜的邏輯結構,還涉及其在計算機中的存儲結構,對在數(shù)據(jù)進行操作的過程中,數(shù)據(jù)的結構動態(tài)變化有時是較復雜的,如何能讓學生看到“算法執(zhí)行”時指針的變化及數(shù)據(jù)結構的動態(tài)變化,是理解類C語言描述算法的最直接、最有效的方法,而這其中的關鍵就是算法語句對應數(shù)據(jù)結構動態(tài)變化的動畫演示。這種算法仿真實現(xiàn)模式對算法的理解和掌握能起到事半功倍的效果。
4.啟發(fā)式的實踐環(huán)節(jié)。數(shù)據(jù)結構課程的難點在于學生聽得懂、看得明白,但當動手設計算法解決實際應用問題時會感到無從下手。該課程一般在本科低年級開設,對于僅學過一門高級程序設計語言的學生,理解和掌握其中的原理比較困難。針對這些問題,注重課程實踐環(huán)節(jié)的啟發(fā)式學習是提高學生興趣、提高課程教學效果的主要措施。文獻[4]中所提出的以實踐教學來深化理論教學的教學模式正是這種注重實踐環(huán)節(jié)的體現(xiàn)。
課程的每一部分實踐內容可以分成幾步來進行,讓學生循序漸進地來完成算法的學習及編寫:(1)教師可以先給出完整算法,讓學生根據(jù)算法描述構造出算法所需的數(shù)據(jù)結構,這樣學生可以很快地看到運行結果,以結果吸引學生并增強其對實踐內容的興趣。(2)教師可以先給出一部分算法,對于缺少的部分可以讓學生按照要求來填充。缺少的部分可以是一部分算法語句,也可以是一個功能性的函數(shù)。(3)教師可以結合生活中的一些實際問題,讓學生根據(jù)自己的理解編寫出一個完整的算法。但是,實踐環(huán)節(jié)的啟發(fā)式教學的設計問題是需要解決的關鍵問題,在學生對教學內容還沒有完全掌握,且在編程也有困難時,應注重實踐的啟發(fā)與引導。比如先給出已編好的算法,讓學生編譯運行,查看結果,使學生能產(chǎn)生興趣并啟發(fā)學生去思考,引導學生去實踐,在實踐中學好知識,掌握技能,提高素質。
三、結語
本文根據(jù)我校計算機相關專業(yè)的教學目標及人才培養(yǎng)計劃,提出了針對數(shù)據(jù)結構課程的教學模式的創(chuàng)新性改革,與以往的教學模式相比淡化了算法的細節(jié),注重算法思想的理解,并采用啟發(fā)式的實踐指導方法,讓學生對數(shù)據(jù)結構課程產(chǎn)生興趣,深入理解各個章節(jié)的學習內容,并不斷提高學生的自主學習和創(chuàng)新能力,提升教學效果為今后其他專業(yè)課程的學習打下堅實的基礎。
參考文獻:
[1]殷寶媛,于紀明,李曉東.基于3C3R模型的數(shù)據(jù)結構課程教學模式的構建[J].計算機教育,2014,(8).
[2]布輝,劉冉.研究性學習教學模式在數(shù)據(jù)結構課程中的應用[J].電腦知識與技術,2011,(3).
[3]伍艷蓮,劉金定,黃芬.知識融合教學模式在“數(shù)據(jù)結構”教學中的應用[J].中國農(nóng)業(yè)教育,2011,(2).
[4]王樹鋒,曹寶香.以實驗教學深化理論教學的數(shù)據(jù)結構教學新模式[J].計算機教育,2014,(10).