孫歧峰
摘要:本文在教學(xué)實(shí)踐的基礎(chǔ)上,闡述了當(dāng)前在“數(shù)據(jù)結(jié)構(gòu)”教學(xué)過程遇到的主要問題,從綜合運(yùn)用多種教學(xué)模式和手段、強(qiáng)調(diào)基礎(chǔ)知識(shí)的理解、完善教學(xué)評價(jià)制度、加強(qiáng)實(shí)踐教學(xué)環(huán)節(jié)等方面提出了改革措施,并在課程教學(xué)中實(shí)踐,取得了良好的教學(xué)效果。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);方法;實(shí)踐;教學(xué)評價(jià)
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)重要的專業(yè)基礎(chǔ)課,在整個(gè)專業(yè)課程體系中處于承上啟下的核心地位。它一方面擴(kuò)展和深化了“離散數(shù)學(xué)”、“程序設(shè)計(jì)語言”等課程學(xué)到的基本技術(shù)和方法,另一方面為進(jìn)一步學(xué)習(xí)“操作系統(tǒng)”、“編譯原理”等專業(yè)課奠定堅(jiān)實(shí)的理論與實(shí)踐基礎(chǔ),更是今后進(jìn)行高級(jí)程序設(shè)計(jì)、算法設(shè)計(jì)、軟件工程的基礎(chǔ)。因此,各高校都非常重視“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)工作,這也是計(jì)算機(jī)教育改革的重點(diǎn)和熱點(diǎn)。
筆者一直從事“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)實(shí)踐,從青年教師的角度出發(fā)對該課程教學(xué)中出現(xiàn)的問題進(jìn)行了反思,并提出自己的看法和解決思路,希望與同行共同交流。
1教學(xué)中遇到的問題
計(jì)算機(jī)專業(yè)的學(xué)生今后大多將從事與計(jì)算機(jī)應(yīng)用與軟件開發(fā)相關(guān)工作,因此迫切希望能學(xué)好此課程。但是在實(shí)際教與學(xué)的過程中,有時(shí)教學(xué)效果并不理想,教師感覺講授比較吃力,許多學(xué)生感覺課程抽象、枯燥,入門困難。在幾年的“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)和實(shí)踐過程中,我們發(fā)現(xiàn)主要存在以下一些問題。
(1) 課程的性質(zhì)決定學(xué)習(xí)難度大
“數(shù)據(jù)結(jié)構(gòu)”課程強(qiáng)調(diào)問題的分析和抽象表達(dá),把現(xiàn)實(shí)中遇到的問題抽象出其邏輯模型(包括數(shù)據(jù)及它們之間的關(guān)系、實(shí)施的操作等,即ADT),再選擇適當(dāng)存儲(chǔ)結(jié)構(gòu)(存儲(chǔ)數(shù)據(jù)及關(guān)系),設(shè)計(jì)出各個(gè)操作的算法從而在計(jì)算機(jī)上解決問題。它是一門理論與實(shí)踐相結(jié)合的課程。由于缺乏實(shí)際應(yīng)用經(jīng)驗(yàn),學(xué)生很難將樹、圖等抽象概念和具體問題相結(jié)合起來。
(2) 程序設(shè)計(jì)基礎(chǔ)不扎實(shí)
C/C++語言程序設(shè)計(jì)語言是學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)”的重要基礎(chǔ)。在C/C++語言課程的教學(xué)中,由于學(xué)生的接受能力和學(xué)時(shí)的限制,致使C/C++語言中的函數(shù)、指針和結(jié)構(gòu)體等重要知識(shí)點(diǎn)難以完全理解和融會(huì)貫通。另外,大多教師在教學(xué)過程中重點(diǎn)強(qiáng)調(diào)程序設(shè)計(jì)語言的掌握,忽視了程序調(diào)試技能培養(yǎng)。然而,這些難點(diǎn)和程序調(diào)試技術(shù)在數(shù)據(jù)結(jié)構(gòu)課程實(shí)踐環(huán)節(jié)中恰好是使用頻率最高的內(nèi)容,結(jié)果導(dǎo)致學(xué)生在將抽象的理論轉(zhuǎn)化為具體實(shí)踐的過程中遇到重重障礙。
(3) 學(xué)生學(xué)習(xí)興趣較高,主動(dòng)性不夠
前期課程介紹強(qiáng)調(diào)充分,學(xué)生大多明白本課程的重要性,因此學(xué)生的學(xué)習(xí)興趣較高,但長期以來的學(xué)習(xí)方式和教學(xué)模式讓學(xué)生在學(xué)習(xí)過程中缺乏獨(dú)立思考的主動(dòng)性,隨著課程的深入,學(xué)生容易對課程學(xué)習(xí)的意義產(chǎn)生懷疑,失去學(xué)習(xí)的興趣和主動(dòng)性。如何在整個(gè)教學(xué)過程中保持學(xué)生的學(xué)習(xí)興趣也是一個(gè)決定教學(xué)效果的關(guān)鍵因素。
2教學(xué)中采取的措施
針對“數(shù)據(jù)結(jié)構(gòu)”教學(xué)過程中存在的問題,我們一方面查閱前人文獻(xiàn)和教改成果,一方面在教學(xué)中實(shí)踐摸索,從教學(xué)方法、調(diào)整學(xué)時(shí)分配、完善教學(xué)評價(jià)制度、加強(qiáng)實(shí)踐教學(xué)環(huán)節(jié)等幾個(gè)方面入手提出了改革措施,并在課程教學(xué)實(shí)踐中取得了很好的教學(xué)效果。
2.1突出課程主線、強(qiáng)調(diào)基礎(chǔ)知識(shí)
“數(shù)據(jù)結(jié)構(gòu)”課程整體內(nèi)容連貫,脈絡(luò)清晰,系統(tǒng)性、層次性強(qiáng)。在每個(gè)章節(jié)都有明確的主題和線索,就是每種數(shù)據(jù)結(jié)構(gòu)的抽象數(shù)據(jù)類型(ADT),分為定義(抽象)和實(shí)現(xiàn)(具體),即“數(shù)據(jù)結(jié)構(gòu)”的數(shù)學(xué)模型和定義在該模型上的一組操作及其實(shí)現(xiàn)。這也是貫穿整個(gè)教學(xué)環(huán)節(jié)的一條主線。
在具體教學(xué)過程中,我們當(dāng)重視概念的建立和基礎(chǔ)知識(shí)的掌握。例如,第二章線性表是學(xué)習(xí)的第一種數(shù)據(jù)結(jié)構(gòu),按照線性表ADT定義(包括數(shù)據(jù)結(jié)構(gòu)定義和實(shí)施的操作)、ADT的虛擬實(shí)現(xiàn)(數(shù)據(jù)結(jié)構(gòu)的虛擬實(shí)現(xiàn)即存儲(chǔ)結(jié)構(gòu)、操作的虛擬實(shí)現(xiàn)即設(shè)計(jì)算法)的層次學(xué)習(xí)。這是第一次把前面學(xué)習(xí)的抽象概念進(jìn)行應(yīng)用,如何定義ADT,如何去實(shí)現(xiàn)ADT等都由抽象到了具體,后面其他數(shù)據(jù)結(jié)構(gòu)都會(huì)反復(fù)用到,因此第二章線性表是整個(gè)課程學(xué)習(xí)的基礎(chǔ)和關(guān)鍵。講授過程中,我們應(yīng)當(dāng)適當(dāng)放慢速度,并在此過程適當(dāng)回顧C(jī)/C++中的基本知識(shí),必要時(shí)寫出程序設(shè)計(jì)的詳細(xì)過程和代碼,以此來使抽象的概念轉(zhuǎn)化為具體的程序?qū)崿F(xiàn)。再如,第三章棧的應(yīng)用遞歸程序設(shè)計(jì)就是樹和圖部分算法設(shè)計(jì)的基礎(chǔ),對用遞歸方法解決問題的方法、遞歸的執(zhí)行過程應(yīng)該深入地學(xué)習(xí)和理解。
2.2綜合運(yùn)用實(shí)例化和啟發(fā)式教學(xué)
“數(shù)據(jù)結(jié)構(gòu)”課程中難點(diǎn)較多,許多算法設(shè)計(jì)巧妙,邏輯性強(qiáng)。針對這一特點(diǎn),我們在不同的教學(xué)階段采取了不同的教學(xué)模式和手段。實(shí)踐證明,通過精心設(shè)計(jì)的實(shí)例可以加深學(xué)生對算法的認(rèn)識(shí)和理解,就是對課程中的重點(diǎn)、難點(diǎn)內(nèi)容選配簡單有效的例題、運(yùn)用恰當(dāng)?shù)谋扔?把抽象的內(nèi)容具體化、形象化,幫助學(xué)生理解掌握這些內(nèi)容,并適當(dāng)加以引伸,引導(dǎo)并激發(fā)學(xué)生作進(jìn)一步的思考和探索。例如在講解樹數(shù)據(jù)結(jié)構(gòu)時(shí)把樹和生活中的家族譜聯(lián)系起來進(jìn)行比喻說明,學(xué)生不僅聽起來較有興趣,而且更容易理解。
“啟發(fā)式教學(xué)法”是指教師在教學(xué)中把所講解的內(nèi)容與學(xué)生的思考有機(jī)地結(jié)合起來,激發(fā)調(diào)動(dòng)學(xué)生的積極性和主動(dòng)性,讓學(xué)生更好地掌握基本知識(shí)和基本技能,從而達(dá)到融會(huì)貫通地掌握知識(shí)和技能,培養(yǎng)學(xué)生獨(dú)立思考能力和創(chuàng)新意識(shí)?!皵?shù)據(jù)結(jié)構(gòu)”課程有許多和現(xiàn)實(shí)生活規(guī)律相通的地方,例如:棧、隊(duì)列就和生活中停車、排隊(duì)買飯具有很多相似的規(guī)律。教學(xué)過程中我們以學(xué)生為中心,精心設(shè)計(jì)問題情境,引起學(xué)生的好奇,通過引導(dǎo)、啟發(fā)、訓(xùn)練學(xué)生的思維,取得了較好的教學(xué)效果。
2.3重視實(shí)踐在教學(xué)中的作用
學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)”的最終目的是為了提高應(yīng)用計(jì)算機(jī)解決問題的能力,培養(yǎng)并提高學(xué)生的實(shí)踐能力是其教學(xué)重點(diǎn)之一。在教學(xué)實(shí)踐中,學(xué)生普遍反映課堂上能夠理解講授的知識(shí)點(diǎn),但只要一動(dòng)手實(shí)踐就糊涂。學(xué)生在實(shí)踐環(huán)節(jié)上的失敗,反過來又會(huì)影響其對理論知識(shí)的掌握,打擊學(xué)習(xí)的興趣和主動(dòng)性。因此,我們在學(xué)生掌握基本理論的基礎(chǔ)上,要求和鼓勵(lì)學(xué)生進(jìn)行一些實(shí)踐工作,重視實(shí)踐在教學(xué)中的作用。
“數(shù)據(jù)結(jié)構(gòu)”課程的實(shí)踐方式主要有三種:一是做習(xí)題,二是上機(jī)實(shí)踐,三是課程設(shè)計(jì)。在課程開始初期,應(yīng)當(dāng)適當(dāng)布置一些習(xí)題,主要是幫助學(xué)生掌握基本概念和數(shù)據(jù)結(jié)構(gòu)方法;在進(jìn)入基本數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)后,讓學(xué)生通過上機(jī)實(shí)驗(yàn)來驗(yàn)證數(shù)據(jù)結(jié)構(gòu)各種存儲(chǔ)結(jié)構(gòu)與算法的具體實(shí)現(xiàn);基本數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)結(jié)束后為了進(jìn)一步提高學(xué)生對課程內(nèi)容的理解和動(dòng)手實(shí)踐能力,針對性地進(jìn)行課程設(shè)計(jì),選題靈活多樣、趣味性強(qiáng)(在課后或者暑期完成)。對學(xué)生的上機(jī)實(shí)踐應(yīng)當(dāng)嚴(yán)格要求,尤其是要加強(qiáng)上機(jī)指導(dǎo)和監(jiān)督。上機(jī)前要求學(xué)生做好充分的準(zhǔn)備,上機(jī)結(jié)束后要求學(xué)生寫出問題分析,算法的時(shí)間復(fù)雜度分析,以及經(jīng)驗(yàn)體會(huì)。
2.4課程考核的改革
課程考核是教學(xué)過程中的重要環(huán)節(jié),是督促學(xué)生加強(qiáng)學(xué)習(xí)和了解教學(xué)效果的重要手段。作為核心基礎(chǔ)課,“數(shù)據(jù)結(jié)構(gòu)”強(qiáng)調(diào)數(shù)據(jù)關(guān)系的抽象,課程本身實(shí)踐性很強(qiáng)。通過“數(shù)據(jù)結(jié)構(gòu)”課程的實(shí)踐,不僅可以提升學(xué)生程序設(shè)計(jì)的能力,更重要的是提高他們對問題分析和數(shù)據(jù)抽象的能力。因此,考核方案分四個(gè)部分:
(1) 平時(shí)作業(yè),占10%,主要督促學(xué)生注意平時(shí)學(xué)習(xí)和及時(shí)復(fù)習(xí)鞏固;
(2) 實(shí)驗(yàn)和報(bào)告,占20%,目的是加強(qiáng)學(xué)生實(shí)踐動(dòng)手能力;
(3) 期中考試,占 20%,鞏固學(xué)生的階段學(xué)習(xí)成果;
(4) 期末考試,占50%,主要對課程內(nèi)容的總結(jié)和評測。
可以看出,方案制定的主導(dǎo)思想突出了階段考核和實(shí)踐環(huán)節(jié)考核的重要性??己朔桨冈谝欢ǔ潭壬现萍s了部分學(xué)習(xí)意愿較差的學(xué)生,使他們在教學(xué)過程中始終保持較高的積極性。
“數(shù)據(jù)結(jié)構(gòu)”學(xué)習(xí)中上機(jī)是非常重要的一個(gè)環(huán)節(jié),是將抽象的算法轉(zhuǎn)化具體問題,是理解課程內(nèi)容的關(guān)鍵,但程序設(shè)計(jì)不是該課程的重點(diǎn)。傳統(tǒng)上我們通常要求學(xué)生完成規(guī)定的實(shí)驗(yàn)項(xiàng)目然后才能申請驗(yàn)收和評分,但是在實(shí)踐中發(fā)現(xiàn),有些實(shí)驗(yàn)項(xiàng)目對部分學(xué)生而言比較難,只能完成部分內(nèi)容。為了保護(hù)和鼓勵(lì)學(xué)生學(xué)習(xí)的積極性,突出課程內(nèi)容,可以對較好完成部分實(shí)驗(yàn)任務(wù)的學(xué)生的成果也進(jìn)行驗(yàn)收,給予適當(dāng)?shù)目隙?并分析指出其設(shè)計(jì)中存在的問題,最后統(tǒng)一給出標(biāo)準(zhǔn)程序。
2.5充分利用計(jì)算機(jī)輔助教學(xué)
教學(xué)手段的多樣化已成為教學(xué)改革的一個(gè)大趨勢,但不是一味的否定“黑板加粉筆”的傳統(tǒng)教學(xué)模式?!皵?shù)據(jù)結(jié)構(gòu)”課程教學(xué)過程中輔以多媒體教學(xué),不僅可以使一些原來板書不能完成或很難完成的教學(xué)問題得到解決,而且還提高了教學(xué)效率。我們把清華大學(xué)出版社的《數(shù)據(jù)結(jié)構(gòu)算法演示系統(tǒng)》用于課堂教學(xué),對較難理解的知識(shí)點(diǎn),如遞歸程序調(diào)用過程、排序的數(shù)據(jù)交換過程、最小生成樹等,可以化抽象為直觀、形象,取得良好教學(xué)效果。
計(jì)算機(jī)輔助教學(xué)絕不是一般的PPT講課,應(yīng)該把板書和計(jì)算機(jī)輔助教學(xué)很好地結(jié)合起來才能真正達(dá)到好的教學(xué)目的和效果。
3總結(jié)
在教學(xué)活動(dòng)中,教師是教學(xué)過程的主導(dǎo)者,教師的教
學(xué)經(jīng)驗(yàn)和方法非常重要,如果能夠具有豐富的實(shí)踐經(jīng)驗(yàn),對教學(xué)工作就會(huì)如虎添翼,講授也會(huì)更有說服力。學(xué)生是學(xué)習(xí)的主體,他們對知識(shí)掌握的情況就是對教師工作的最好檢驗(yàn)。但教學(xué)效果的好壞更主要取決于學(xué)生對課程的興趣和主動(dòng)性,在教學(xué)和實(shí)踐過程充分發(fā)揮教師的引導(dǎo)作用保持學(xué)生的信心和積極性是一個(gè)重要因素。作為青年教師,應(yīng)多向老教師學(xué)習(xí),使教學(xué)過程更加通俗易懂,貼近生活。
“數(shù)據(jù)結(jié)構(gòu)”是計(jì)算機(jī)專業(yè)的骨干、核心課程,是計(jì)算機(jī)程序設(shè)計(jì)和算法的重要理論基礎(chǔ)課,學(xué)好這門課程對學(xué)生來說是至關(guān)重要的。因此,對于該課程的教學(xué)不僅要從理論上進(jìn)行探討,還要從內(nèi)容結(jié)構(gòu)、教學(xué)方法等方面進(jìn)行研究。本文就實(shí)際教學(xué)中遇到的幾個(gè)問題從教學(xué)方法、內(nèi)容組織以及考試考核等方面提出了建議和對策,希望同行共同討論。
參考文獻(xiàn):
[1] 嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語言版)[M]. 北京:清華大學(xué)出版社,1997.
[2] 殷人昆. 數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcC++語言描述)[M]. 北京:清華大學(xué)出版社,2007.
[3] 張曉宏. 高校研究型教學(xué)范式之探究-啟發(fā)式教學(xué)[J]. 教學(xué)探索,2007(3):63-64.
[4] 黎遠(yuǎn)松. 數(shù)據(jù)結(jié)構(gòu)課程考試與評價(jià)制度改革的探索[J]. 四川理工學(xué)院學(xué)報(bào):社會(huì)科學(xué)版,2007(10):88-89.