劉丹 劉昆 孫寧
摘要:數據結構是計算機專業的核心課程,由于其內容抽象、知識點多、算法復雜,導致學生學習效果不理想,本文通過對實際教學過程中的主要問題進行分析和研究,結合多年的教學經驗,提出了一些教學改革的思路和辦法。
關鍵詞:數據結構;教學過程;教學改革
中圖分類號:G642 文獻標識碼:A
文章編號:1009-3044(2019)27-0145-02
1引言
數據結構在計算機科學中是一門綜合性的專業基礎課,主要研究數據之間的邏輯結構、數據在計算機中的存儲結構,以及與數據處理相關的各種算法。與其他課程的獨立性不同,數據結構課程具有很強的承前啟后的作用,既是《C語言程序設計》《離散數學》等前導課程的延伸和擴展,也是《數據庫原理》《操作系統》和《編譯原理》等后續課程的鋪墊和基礎。所以數據結構在計算機課程的教學中占有十分重要的位置,可是,目前很多學校在實際教學過程中遇到各種困難,雖然老師和學生都花費了大量的實際和精力,可以教學效果卻并不理想。
2存在的主要問題
2.1前導課程課程基礎薄弱
C語言在數據結構課程中有著非常廣泛的應用,數據結構中的算法主要是用C語言實現的,可是C語言在大一上學期開設,一方面很多學生還沒有從高中那種被動的、題海戰術的學習模式轉變過來,可以自己合理地制定學習計劃,有效率的利用課外時間完成學習內容,另一方面,雖然很多學生在高中期間已經接觸到了信息類的課程,可是這類課程在高中階段并不受到重視,所以很多學生在一開始接觸到程序設計類的課程時,不適應教學內容以及思考、解決問題的思維方式,種種原因導致C語言學習效果不理想,特別是對在數據結構中有重要應用的結構體、指針等內容理解不深刻,嚴重影響數據結構課程的聽講效果。
2.2課程內容抽象有難度,學生理解有困難
數據結構課程知識點豐富,內容抽象、分布在各章中的算法和技術眾多,學習任務繁重,從c語言中的整型、字符型等簡單數據類型一下跳躍到樹、圖等復雜的抽象數據類型,需要學生具備一定的抽象思維的能力,而這種能力是需要一定的訓練才能獲得的,所以很多學生反映難以將相關知識點形象化、具體化,從而難以理解課堂內容。
2.3實踐環節不受到重視
數據結構是一門理論與實踐并重的課程,可是很多高校在制定教學大綱時重理論輕實踐,有些高校甚至直接砍掉了實驗教學,導致學生只會紙上談兵,在解決問題時不知道應該選擇什么數據結構,采用哪一種算法,更不用說上機調試代碼的能力了。
2.4考核方式單一
現在傳統的課程考核方式是期末成績+平時成績。期末成績主要是筆試的成績,平時成績主要包括出勤、實驗報告。這種形式過于偏頗,不能綜合的考查出學生的理論和實踐的掌握水平,只涵蓋出勤和實驗報告的平時成績也不能全面完整的反映一個學生的平時表現。
3相應的改進方法
3.1對C語言知識有針對性的復習
C語言是數據結構學習的基礎,一般C語言開設在大一的上學期,數據結構開設在大二的上學期,兩門課程中間間隔了半年的時間,C語言的掌握程度直接影響到數據結構的學習效果。所以有必要在開課的第一周利用4-6個學時對C語言中的結構體、指針等知識點進行梳理和強化,為數據結構的學習做好準備工作。
3.2采用靈活多樣的教學手段
數據結構的內容抽象、晦澀、難懂,如果枯燥的講授書上的理論知識,勢必會造成學生的厭學情緒。所以需要精心設計教學環節,教學內容,改進教學模式,豐富教學手段。
1)任課教師在教學過程中要避免照本宣科,多舉一些在實際生活中比較常見的例子幫助學生理解和消化相關的知識點。例如,在講到隊列的先進先出的特性時,可以舉食堂排隊打飯的例子,來得早的同學排在隊伍前面,先買好飯從隊伍出來;在講到棧的后進先出特性的時候,可以舉洗盤子的例子,洗干凈的盤子放在最上面,用盤子的時候也是從最上面取;在講到樹的一對多的特性的時候,可以以學校為例,一所大學包含若干個學院,一個學院包含若干個系,一個系包含若干個專業;在講到圖的多對多的特性的時候,用城市之間的交通狀況解釋,更容易理解,任何一個城市都可以通往其他的多個城市。通過這些身邊的例子,可以把抽象的概念具體化、形象化,幫助學生理解和消化相關的知識點,吸引學生的興趣,抓住學生的注意力,加深對知識的理解和記憶。
2)數據結構的內容抽象有難度,傳統的板書+PPT的教學方式難以滿足教學需求,所以需要設計更加立體、豐富的教學環節。把教學任務劃分成課前、課上和課后。首先,在每周開課前,老師提前布置一些和下周教學內容相關的問題,并提供相應的解題思路,以及解決問題需要用到的知識和方法,要求學生在開課前做好必要的預習工作,對下周的學習任務有一個初步的了解,并確立相關的學習目標,通過這種方法,把整個課程的學習目標劃分成每周的學習目標,可以幫助學生排除畏難的情緒,更有利于樹立學會、學好的信心。
其次,在課堂上,在講到抽象的知識點時,可以用形象生動的動畫或視頻取代枯燥的文字,對于復雜的算法,不要急于拋出最后的代碼和運行結果,而是應該一步步引導學生理解算法的設計思路,要由什么樣的輸入數據得到什么樣的輸出結果,應該如何組織數據之間的邏輯關系,選擇哪種存儲結構,如何對數據進行加工處理,讓學生掌握算法設計的能力。
在課后,要結合本周的教學內容,精心設計若干個任務,要求學生按時完成,同時考慮到學生的個體差異性,應該有針對性的給不同的學生布置不同難度的任務,使學生經過一定的努力可以實現任務目標,這樣可以讓學生獲得成就感,保持學習的興趣。
3.3加強實踐環節的訓練
數據結構是一門理論與實踐并重的課程,為了讓學生具備解決實際問題的能力,該門課程的實踐環節安排設計成三個不同難度的階段,分別是驗證性實驗、設計性實驗、項目合作。首先通過驗證陛實驗,讓學生理解和掌握書上的基礎知識和經典算法,鍛煉學生的上機調試程序的能力,在這個基礎上,通過對基礎算法的靈活應用完成設計性實驗,進一步訓練學生的計算思維能力,最后,以解決實際問題為目標,學生以小組的形式分工合作完成一個適當規模的項目,達到鍛煉學生分析解決問題,設計算法的能力。
3.4完善考核評價體系
建立多方位、立體的考核評價體系,將課程考核貫穿整個教學過程,不再一考定成績,加強教學過程監督管理,以任務驅動的方式督促學生學習的積極性,以現場答辯的方式取代提交紙質報告,并作為平時成績的考核依據,這種方式能更真實地反映出學生的學習狀況,在期末考試中,采用筆試+上機的考試模式,除了傳統的選擇、填空、設計等筆試題型,在上機考試中考察學生的改錯、調試、編程的能力,這樣有助于改善學生死記硬背,重理論輕實踐的學習態度。
4結束語
綜上所述,數據結構是計算機本科教育的核心基礎課程,由于其內容抽象,邏輯性較強,算法有難度,在實際教學過程中存在一定難度。本文詳細分析了一些常見的問題,并提出了針對性的解決方法,可以提高學生的學習興趣,培養學生的計算思維能力,提高學生分析問題、解決問題的能力,真正為社會培養出高質量的計算機專業人才。