廖彬 蔡賢資

摘? 要 從數據結構在程序設計課程群中的作用與教學現狀出發,針對現階段的本科建設任務與學生特點,對數據結構的理論教學內容、實驗教學內容進行合理編排,探索分步教學與項目教學相結合的課程教學改革與實踐方案。通過教學改革促使學生學以致用,從而提高學生的程序設計和計算思維能力,達到培養創新人才的目的。
關鍵詞 數據結構;理論教學;程序設計課程群;分步教學;項目教學;實驗教學;教學改革
中圖分類號:G642? ? 文獻標識碼:B
文章編號:1671-489X(2020)05-0073-03
1 引言
隨著社會的不斷發展,信息技術滲透進社會的各行各業,社會對信息處理類專業人才的需求日益增加。我國社會現階段對信息處理類專業人才的需求以應用型人才為主,應用型人才的核心能力體現為工程實踐能力[1]。編程能力、計算思維、算法能力、創新能力是培養信息處理類學生基本程序設計能力的基礎和核心[2]。
在現階段的信息處理類專業本科教學中,程序設計課程群主要包括高級程序設計、離散數學、數據結構、算法五門課程,突出對編程能力、計算思維和基本算法實現能力的培養。其中,數據結構研究計算機存儲、組織數據的方式,授課內容主要包括邏輯結構、存儲結構、算法設計與分析基礎等相關理論,通過培養學生的模型抽象能力,為學生研究和創新能力的形成奠定基礎,在程序設計課程群體系中具有承上啟下的作用。雖然數據結構在程序設計課程群教學體系中占有舉足輕重的地位,但是由于其抽象性、復雜性與靈活性的特點,易使學生在學習過程中受挫,無法學以致用,進而影響學習興趣,極大地影響了數據結構知識的學習。
在華南農業大學信息與計算科學專業中,根據數據結構在程序設計課程群中的作用與教學現狀,進行理論教學與實驗教學編排,主要從教學內容和實驗設置方面,探索適用于當前相關專業學生的數據結構課程教學改革與實踐。
2 數據結構課程教學中存在的問題
現階段,數據結構教學一般由理論教學與實驗教學組合而成,通過實驗教學對理論課所授知識進行加強,進而培養學生分析問題、解決問題的能力。然而,在數據結構教學中,理論課與實驗課的內容與編排需要有機結合,才能達到互相促進的目的。
前期課程的準備? 數據結構的前期課程主要由高級程序設計、離散數學組成。在現階段的數學與信息學院信息與計算科學專業中,前期課程講授的程序設計與算法語言采用C語言實現,由此對應的數據結構教材也使用C語言描述。然而在主流教材中為了便于簡潔明了地解釋概念,在諸如鏈表、樹、圖等算法解釋中使用了類C語言如混合C++的語法進行描述,這在一定程度上增加了學生理解概念的難度。
前期的程序設計與算法語言教學中,指針、結構體處于教學進程的后半段,所占比重較低,大多數學生未能熟練掌握。然而在數據結構教學中,大量使用指針與結構體,如線性表的鏈式表示與實現、棧、隊列、樹和圖都借助引用傳遞進行實現,結點一般采用結構體類型表示。相應的算法實現,需要熟練理解與掌握指針和結構體的概念及其應用才能完成。能力與知識的脫節造成部分學生難以理解數據結構知識,進而影響后續內容的學習。
數據結構教學內容與學生的學習興趣? 數據結構作為專業核心課程,通常在大學本科二、三年級開設,具有較穩定、統一的教學大綱。但這在一定程度上也易形成教學內容較少更新,與實際應用聯系不緊密的情況。隨著社會的發展,科技資訊與信息的獲取更為便捷,近年來本科學生的創新思維更趨活躍。學生在學習程序設計課程群中相關知識時,對所學知識與工程應用聯系的關注日益增強。若在教學中僅采用課本所示的傳統案例,難以引發學生的學習興趣,也不利于實現培養創新人才的目標。在2015年發布的《國務院關于印發統籌推進世界一流大學和一流學科建設總體方案的通知》中,指出應該著力培養富有創新精神和實踐能力的各類創新型、應用型、復合型優秀人才。由此,應在傳統教學內容中適度引入部分工程應用實例,在提高學生學習興趣的同時,促進創新人才培養目標的實現。
后續課程的銜接? 在程序設計課程群中,算法分析與設計為數據結構的后繼課程。算法分析與設計課程一般主要講授遞歸法、分治法、動態規劃算法、貪心算法、回溯法、分支限界法。通過算法分析與設計課程的學習,使學生深化理解數據結構與算法的結合,讓學生理解并掌握算法分析和設計的基本技術。通過數據結構和算法的理論與實踐相結合,培養學生解決實際問題的能力。
在以往的教學中,數據結構注重講授抽象的數據關系,其中教學后期雖然涉及一些算法,但較抽象且給予學時較少,講述不夠透徹,學生很難真正理解。算法分析與設計課程主要注重培養學生分析算法復雜度與設計算法的能力[3],然而由于前期數據結構中的實踐掌握不牢,使得算法實踐無從下手,影響了算法課程知識的掌握。數據結構和算法分析與設計這兩門課程都以培養學生解決實際問題的程序設計能力為共同目標。在傳統教學編排[4]中,此兩門課程由于相對獨立、分開授課,常導致內容脫節或重復,難以達到較好的教學效果。因此,需要考慮在數據結構教學中適當引入算法相關內容,逐步構建數據結構與算法的知識體系,實現程序設計課程群中知識的統一與銜接。
3 理論教學與實驗教學的改革方法與目標
在數學與信息學院信息與計算科學專業中,“程序設計與算法語言C語言程序設計”在本科第二學期開設,數據結構在第三學期開設,第六學期開設算法分析與設計。在數據結構開課初期,需要針對性地強化程序設計能力,為數據結構知識的掌握打下良好基礎。并通過數據結構的學習與實踐,使學生在編程中理解理論,促進良好的算法設計和實現能力的形成。在教學中通過重新設計與編排數據結構教學內容,力圖通過引入計算機求解問題之間的關系,降低學生學習數據結構課程的困難,從而使學生更好地理解數據、算法和程序之間的聯系。為此,將數據結構的理論教學與實驗教學內容進行合理編排,各章節關系與實驗教學具體內容如圖1所示。
理論課教學內容設計? 如圖1所示,數據結構課程的主要特點為知識點多,理論性強,內容比較抽象枯燥。在理論教學中,通過基本概念、結構、示例算法的講授,使學生熟悉并掌握不同數據結構的特性,從而在分析解決具體問題時能為所要處理的數據選擇合適的邏輯結構、存儲結構。如圖1所示,在理論課教學中使各章節內容相對獨立,除第一章從總體上對數據結構所研究問題進行介紹外,后續各章節分別以線性表、棧、隊列、樹和二叉樹、圖為專題進行講授,使學生在理解某一具體章節所述概念、算法時,不受數據結構其他章節的影響,由此降低學生學習數據結構理論知識的難度。
作為數據結構知識引入的第一章,綜述數據、數據結構和抽象數據類型等基本概念。其中,抽象數據類型的表示與實現貫穿于后續各章的類型定義中,該知識點的掌握與否極大影響學生對后續概念的理解。為此,在第一章傳統內容的基礎上,對抽象數據類型進行部分具體化,增加指針、結構體的定義及其實現的回顧,給出C、C++中實現結構體、引用傳遞的語法對比與說明。這部分內容的引入,對前期程序設計知識進行了簡單回顧,為數據結構后續章節中相應概念的表示與算法的實現打下牢固基礎。
針對線性表、棧、隊列、樹和二叉樹、圖的內容,在介紹定義及其表示與實現后,以常見的簡單應用為主,力求以學生熟悉的案例分析引出新知識,以提高學生的學習興趣,從而達到教學目的與獲得較好的教學效果。
實驗課教學內容設計? 在程序設計課程群中,數據結構的實驗教學對于學生的理論知識內化、提升學生的探究能力與創新能力具有重要意義。數據結構的實驗教學與前期的程序設計與算法語言實驗教學從形式到難度上都有較大差別。數據結構的實驗教學是對理論教學所述定義、算法的實現,完成的質量受到前期課程尤其是程序設計與算法語言掌握程度的影響。為了把學生實驗的重點聚焦于數據結構的實現,而非程序設計基本知識的補充上,使用貼近學生日常生活或日常接觸較多的例子,通過分步教學[4]與基于項目的教學[5],使不同的實驗內容能夠適應學生學習的不同階段,從而促使學生能夠對數據結構實驗中涉及的知識和能力進行融會貫通、學以致用。
以棧的應用實驗為例,第一個實驗為整數間的進制轉換。數制轉換的基本方法在計算機基礎內容中已經講授,且通常為大部分學生掌握較好的知識點。以此類整數的進制轉換為棧的初步實驗,能使學生在實驗中不必對題目做過多分析,從而能將關注的焦點放在數據結構與算法的實現上,快速完成并掌握諸如構造空棧、入棧、出棧、清空棧等棧的基本操作。其后,進行棧的進階實驗:迷宮求解。迷宮作為常見的游戲,其常規解法為回溯法。路徑上的分岔所在方塊在每個方向未被搜索完時會被壓入棧中;反之,若每個可行方向已搜索完畢,則該分岔所在方塊出棧。
迷宮問題的回溯過程較易為學生所理解,在棧的實驗一已完成的基礎上,學生利用已有的知識和背景可完成實驗二。經過實驗一的鋪墊,在實驗二中深化數據結構的知識,同時引入算法的部分內容,使程序設計課程群中的程序設計、數據結構、算法設計相關知識得以融合,借助日常熟悉的項目案例使理論和實踐相結合,最終達到培養學生解決實際問題能力的目的。
4 結語
本文針對傳統數據結構教學中存在的問題,從數據結構隸屬于程序設計課程群的角度出發,結合現階段的本科建設任務與學生特點,對數據結構理論教學內容和實驗設置進行合理編排,進行適合于現階段高校教學的數據結構課程教學改革與實踐,探索以分步教學與項目教學相結合的課程教學改革與實踐方案。通過教學改革促使學生學以致用,從而有效地提高教學質量,進一步培養學生的創新能力,以達到培養創新人才的目的。
參考文獻
[1]張先偉,曲志堅,張立紅,等.程序設計能力培養體系建設與實踐[J].計算機教育,2019(9):75-79.
[2]蔣宗禮.計算機類專業人才專業能力構成與培養[J].中國大學教學,2011(10):11-14.
[3]孫笑微.“算法與數據結構”課程的知識體系和教學改革實踐[J].沈陽師范大學學報:自然科學版,2010(3):446-448.
[4]陳青青.數據結構課程中分步式案例設計的探索與實踐[J].計算機教育,2019(10):109-112.
[5]邱勁,王平.以項目為導向的數據結構課程改革與實踐探索[J].西南師范大學學報:自然科學版,2019(9):167-172.
項目來源:2019廣東省質量工程特色專業建設項目“信息與計算科學”。
作者:廖彬,華南農業大學數學與信息學院,研究方向為機器視覺、教育技術與教育信息化;蔡賢資,華南農業大學數學與信息
學院,研究方向為算法、計算機網絡、教育技術與教育信息化(510642)。