唐朝勝
文章編號:1672-5913(2009)10-0130-03
摘要:本文通過分析“數據結構”課程的特點以及大學生學習的心理特征,結合筆者自身的教學實踐,探討了在新環境下發揮教師的引導作用,以提高“數據結構”教學質量的方法。
關鍵詞:數據結構;心理特征;引導作用;教學質量
中圖分類號:G64
文獻標識碼:B
1引言
“數據結構”課程主要討論了各種數據類型中的邏輯結構、存儲結構以及有關算法,要求學生學完后能根據實際應用的需要,對數據進行有效的組織、存儲和處理,進而編制出高效率的程序。該課程是一門邏輯性和實踐性都很強的課程,在以往教學實踐中,由于課程內容高度抽象、概念繁多、算法復雜,而教學方式和手段較單一,教與學雙方互動較少,常出現教師教學難度大、學生畏難情緒嚴重、課堂氣氛沉悶、學生興趣不高、動手實踐能力差等情況。
筆者通過具體分析“數據結構”教學實踐中存在的問題,結合自身多年的教學經驗,認為:把握好學生的心理特征,破除師生角色的固化,發揮教師引導作用,加強課堂內外的師生互動,以調動學生學習的積極性和主動性,是提高教學質量行之有效的方法。下面筆者從課內和課外兩個方面,對如何發揮教師引導作用、加強師生互動,提高教學質量進行探討。
2“數據結構”課程教學實踐中的問題分析
2.1課程難度大,學生難以適應
“數據結構”是計算機專業基礎課程,不僅涉及數理邏輯、圖論、集合論以及諸如C語言、JAVA語言等前導課程,還涉及到計算機硬件(存儲設備和存取方法)以及計算機軟件(編譯理論、操作系統)等方面的研究。因此,該課程不僅內容豐富,學習量大,而且邏輯性和抽象性都較強。教材中眾多晦澀難懂的概念、復雜多變的算法,常使初次涉及編程的學生難以適應,產生畏難情緒。
2.2教學方式和方法單一,課堂氣氛沉悶
傳統教學中,教師為了讓學生理解相關的概念、算法等內容,常需要大量的板書配合文字、圖表等加以說明,學生隨著教師的思路分析問題,能有充分時間作筆記,但由于課程內容抽象難懂、教師多忙于板書和講解,學生忙于作筆記,雙方嚴重缺乏互動,課堂氣氛沉悶,學生提不起學習的興趣,往往出現“一邊教師唾沫橫飛、嘶聲力竭,而學生則唉聲嘆氣、一臉困惑的情景”。采用多媒體課件后,教師可以充分利用多媒體技術將算法、圖表等內容形象、生動地表現,學生學習興趣也有很大提高,卻又容易導致學生既要關注屏幕內容又要忙著作筆記,無暇思考問題,課后難以消化,“聽課”則又變成了“看課”。
2.3理論實踐脫節,實踐能力匱乏
“數據結構”涉及內容較廣,學習量大,但是課程學時往往有限。為此,不少教師為了完成理論教學內容,常常壓縮實驗學時,容易形成“重理論講解,輕實踐應用”的現象。加之教學難度大,尤其是不少學生對于“數據結構”實驗中大量使用如C語言中較難的結構體、指針、鏈表等知識點,掌握得不牢固,實踐課程中教師還得花時間去幫助學生復習前導課程的內容,實驗課教學效果自然是大打折扣。為此,教師們常感嘆“數據結構”課“難學難教”,“吃力不討好”,學生則抱怨抓不住學習主線,或者是課堂上似乎聽懂了,理解起來好像也并不困難,到上機實踐卻不知如何下手。久而久之,有的學生對編程逐漸失去興趣,等到課程結束,還是既不會編程序也不會調程序,程序設計的能力、創新能力更是無從談起。
3強化課程主題內容,加強教學手段的多樣化
當代大學生學習的自主性較強,但也存在著急功近利、學習盲目性較大、畏難情緒較重的心理特征。不少學生看到數據結構內容抽象,看到師兄師姐和網絡論壇的學友談及學習數據結構的困難,就開始臨陣退縮了。這種情況下,教師在把握教學內容的基礎上,采取多樣化的教學形式,并營造課堂內師生互動融洽的氣氛就顯得極其重要。以下,筆者用“一根主軸線、兩個基本點、三足鼎立、百花齊放”對在多年“數據結構”教學中,如何把握教學的關鍵點、調動學生學習積極性進行總結和論述。
3.1明確“一根主軸線”,圍繞主軸展開教學
從教學內容來看,“數據結構”主要教授各種數據對象的特點、存儲表示方法,以及處理數據的算法?!皵祿Y構的本質”便是貫穿整個課程的主軸線。筆者發現,部分學生從課程開始直至結束,頭腦始終一片混沌,不清楚數據結構到底是研究什么,有哪些形式,區別何在,更不知道如何運用。筆者認為,關鍵的問題在于他們沒有真正的把握和理解數據結構的本質。雖然不同教材對于數據結構的定義并不一致,但是體現出來的本質都是一樣的,即:數據結構體現的是數據與數據之間的關系,而不同的數據結構體現不同的數據關系。所以,教師授課實踐中應圍繞這根“本質”主軸線進行,尤其在教學初期,時刻提醒學生思考和把握數據結構的本質。
3.2確定“兩個基本點”,共同推進
“數據結構”的教學主要圍繞數據結構的兩種形式(邏輯結構、存儲結構)來進行。教學流程一般是先介紹數據結構涉及到的基本術語;其次是相應的邏輯結構;最后才介紹存儲結構的各種形式。所以,從某種意義上而言,邏輯結構和存儲結構即是數據結構教學流程中的兩個基本點。邏輯結構體現的是數學層次上的數據關系,存儲結構體現的是計算機層次上的數據組織形式。講解分析好這兩種形式之間的區別和聯系,對于學生透徹地理解各種數據對象的特點,學會數據的組織方法和實現方法都有極大的幫助。
而對于存儲結構內容的學習,筆者認為,引導學生進行歸納和分類比較,找到它們的共同點,是促進學習和理解的有效途徑。因為,不同數據結構的存儲結構形式雖然多樣,如線性表有順序表表示、鏈表表示;串有定長順序存儲表示、堆分配儲存表示和塊鏈存儲表示;樹有雙親表示、孩子表示和孩子兄弟表示;圖有矩數組表示、鄰接表表示等,但是經過分析比較歸類,這些存儲結構無非就是兩大類:順序存儲和鏈式存儲。此外,在理解復雜的存儲結構時,可提醒學生注意把握它的定義層次:先簡單后復雜,先局部后整體。例如,在定義圖的鄰接表的時候,先定義弧的結構,再定義頂點的結構以及頂點數組,最后定義整個圖的鄰接表結構。根據不同存儲類型的特點展開教學,引導學生進行總結、思考,幫助學生從紛繁復雜的存儲結構中把握它們的核心和精髓,往往能收到事半功倍的效果。
3.3構建“三足鼎立”的教學模式,齊頭并進
所謂“三足鼎立”,是指“數據結構、算法和程序設計”三項齊頭并進,同等重要。數據結構是核心,算法是基石,程序設計則是實踐。而實踐往往是檢驗理論知識是否能靈活運用的標準。如引言所述的,有不少學生對例題理解了,但真正上機實踐卻不知如何下手,這正是只注重理論而忽視實踐的結果。為此,布置實驗作業時,筆者首先要求學生對每個實驗題目除了給出完整的問題描述、數據描述和算法描述,還需要給出程序源代碼以及調試分析的結果;其次,還有兩個步驟,筆者認為是至關重要的:第一步,預先與學生共同探討解題思路,提示注意事項,為編程打好基礎;第二步,在布置下一個作業前,對上一個完成的作業予以點評,案例程序可以是筆者做的源程序,也可選用學生的。通過講解分析,讓學生將自己的源程序與案例程序進行比較,引導學生找到自己的不足之處,以便及時改進,提高實踐操作的能力。
3.4實施“百花齊放”的教學手段,提高學習效率
“百花齊放”則是對教學手段和教學方式多樣化的形象總結。多樣化的教學手段和方式通常是活躍課堂氣氛,激發學生的學習興趣,提高教學效果的有效措施。“數據結構”課程不同于其他的計算機課程,其涉及大量的函數算法,而枯燥復雜的算法容易使學生產生畏難和厭倦情緒。為了讓學生易于理解和接受這些算法,教師應盡可能應用多媒體技術、網絡技術,以及互動式教學法、任務驅動教學法等先進的教學方法進行教學改革。例如,筆者制作的“數據結構”算法演示課件,已在我校數據結構教學中應用三年多。實踐證明,應用Flash動畫,將各種枯燥難懂的算法進行形象生動的動態演示,讓學生主動參與、干涉程序的執行,積極思考算法的實質,進一步加深了他們對算法的理解,大大提高了學習效率。
此外,除了口授教學,筆者還通過播放名家授課錄像,開展學生數據結構學習心得交流班會,進行算法討論和答疑等方式,引導學生更積極主動地參與到課堂中,并通過加強與學生的課堂互動,營造輕松的學習氛圍,使學生逐漸消除畏難情緒,轉而喜歡上數據結構學習。
4加強課外引導,提升專業思維
當代大學生思維活躍,敢于提出自己的意見和想法,渴望能用所學的知識加以運用。課堂內精致的課件,形象生動的動畫演示雖然激起了學生的學習熱情,但同時也擠壓了他們想象的空間,他們更多的是被動接受,缺少了個性的參與和思考。因此,更多學生也不再滿足于課堂內短時間的知識學習,更希望老師在課堂外也能就他們所提出的問題進行講解、分析,并引導他們在知識鞏固基礎上,在實踐應用環節有更多的創新。為此,加強課外的師生互動,引導學生在實踐應用中拓展思維尤為重要。
4.1及時交流,答疑解惑
除了采用傳統的定時定點交流外,可以充分利用網絡資源,如采用QQ、電子郵件、飛信等方式與學生進行交流。此外,網絡論壇也是師生互動非常不錯的地方。筆者所在的計算機系建立了一個專業課程論壇(圖1)。論壇按課程分為C語言程序設計、數據結構、匯編語言、程序設計等幾個板塊,每個課程由相應的課任教師負責,其他教師做輔助。在論壇中,一方面,學生可以提出學習中的問題,邀請或者指定某位老師進行解答;另一方面,學生可以貼出自己寫的算法和程序,請老師或同學進行討論,相互交流、借鑒經驗;第三,可以由老師或學生設定某一主題,供大家討論,提出見解;第四,學生還可以貼出某一程序、算法的應用實例,請教師或同學進行案例分析,并對其應用拓展進行探討。
總而言之,以論壇為交流平臺,由學生做主角,教師做監督和指引,通過師生互動、生生互動機制,一方面增強了師生、學生間的感情,使教師和學生增進了互相的尊重感,促進了教師的授課熱情和學生學習熱情;另一方面,激發了學生自發學習的能力和動力,提高了學生的對知識的應用和創新意識。
以本課程為例,為了能讓學生盡快融入到“數據結構”的學習中,筆者專門發了兩個帖子:“為什么學數據結構和算法”和“如何將數據結構的算法轉化成程序”,就這兩個問題進行了自己的觀點。學生看后反應強烈,紛紛跟貼,發表自己的看法。多數參與其中討論的學生事后都感覺受益匪淺,學習熱情都有了明顯的提高。
4.2興趣實踐,鞏固知識
培養并提高學生的實踐能力是“數據結構”課程的目標之一。實踐能力的提高則往往需要通過上機實驗以及課程設計(實習)環節來保證。不少教師在提高學生的實踐能力方面提出了許多值得借鑒的方法,如王玉鋒等提出實驗教學中采用三步走的策略,即首先強調實驗內容“應用為主”;其次實驗題目按難易分層次,因材施教;最后挑選一些綜合性、設計性的題目進行課程設計等等。筆者認為,在互動教學模式下,教師除布置如“約瑟夫環”、“停車場調度”等經典題目外,還可以引導學生自主選擇、自主設計感興趣的實習內容,且方式方法不限,以增加學生創新的意識和實踐操作的能力。例如,在筆者采用兩個棧實現后綴表達式的啟發下,有學生提出了采用一個棧來實現前綴表達式的思路,并由此寫出了相應的算法;而對于一些對動畫設計感興趣的學生,在筆者的引導下,他們應用Flash技術自主實現教材中常見算法的動態演示(圖2),既熟悉了算法,又拓展了個人愛好,可謂一舉兩得。
4.3專業導航,拓寬視野
“數據結構”是一門實踐性很強的課程,但它不像網頁設計、動畫設計等課程,學完后馬上能應用到實踐中去,而教材限于學時以及篇幅等其他因素,并沒有體現太多的實際應用。不少學生正因為看不到實際應用,難以提起學習的興趣。為此,筆者不僅鼓勵學生去瀏覽一些如國內著名大學的“數據結構”課程網站、專業學習網站、CSDN網站等。另外,通過聯合本校圖書館學科館員,挖掘期刊、會議論文等學習資源,引導學生通過閱讀類如《軟件學報》、《計算機學報》、《計算機應用》、《計算機工程》、《計算機教育》等專業雜志來了解數據算法及其實際應用。這樣既激發了學生的學習興趣,又拓寬了視野。而筆者本身也通過對學生的引導與互動,受益匪淺,達到了“教學相長,相得益彰”的良好效果。
5結語
對于“數據結構”課程,不少教師有著豐富而多彩的教學方法和經驗。筆者僅從發揮教師主動性,促進師生互動的角度出發,闡述個人的一些見解。對于廣大教師而言,還需要進一步研究和探索如何更科學、合理地開展教學改革,研究更有效的教學模式,培養出新時代環境下的計算機人才。
參考文獻:
[1] 嚴蔚敏,吳偉民.“數據結構”(C語言版)[M]. 北京:清華大學出版社,1997.
[2] 王玉鋒,劉寶旨,王猛,等. 也談“數據結構”的教學[J]. 計算機教育,2007(15):20-23.
[3] 戴敏,于長云,董玉濤. 高效學習數據結構[J]. 計算機教育,2006(2):59-60.