袁輝勇 戴經國 劉霖 彭劍
摘要:數據結構課程在計算機學科中有著非常重要的地位。重新確定數據結構課程定位與培養目標,自編輔導教材與實驗指導書,開發程序設計在線訓練平臺,建設在線開放課程,將ACM競賽模式引入到實踐教學,突出理論與實踐應用相結合,有效調動了學生自主學習的積極性,提高了學生的創新能力。
關鍵詞:在線開放課程;創新能力培養;多層次實踐教學
中圖分類號:G642 文獻標識碼:A
文章編號:1009-3044(2020)15-0190-02
1引言
數據結構作為計算機學科的專業基礎核心課程,對應于學科中問題求解的理論、抽象和設計的方法論,在學科知識體系中具有核心的重要位置。它承上啟下,貫通始終,對于培養學生的計算思維、系統分析與設計、算法設計與分析、程序設計與實現等基本能力至關重要。大量的實踐表明,數據結構課程在計算機本科課程中有著相當重要的作用,同時也對畢業生后續的工作和研究有著深遠的影響嘲。它所討論的知識內容和提倡的技術方法,無論對進一步學習計算機領域的其他課程,還是對從事大型信息項目的開發,都是重要而必備的基礎。
程序的時間和空間效率,不僅跟數據的組織方式有關,也跟處理流程的巧妙程度有關。數據結構講授、探討有關數據組織、算法設計、時間和空間效率的概念和通用分析方法,幫助學生學會數據的組織方法和一些典型算法的實現,能夠針對問題的應用背景分析,選擇合適的數據結構,從而培養高級程序設計技能。地方高校結合自身特點,創新教育教學理念,改革傳統教學方法與教學手段,推進教學改革與創新,構建以創新能力培養為目標的教學體系,提升課程教學水平,對創新人才培養有非常重要的作用。
2課程教學中存在的問題
先導課程不扎實。數據結構課程的先導課程有c或c++程序設計,學生在學習數據結構應較好地掌握程序設計語言,數據結構中的算法基本上是采用C或c++語言描述,但由于大一學生開始學習c或C++程序設計,要達到熟練使用還有一定難度,尤其是在使用指針時還比較困難。
教學內容與課程體系零散。數據結構課程內容相對抽象零散,涉及較多的基本概念、基本結構、算法和基本技術。由于課程的核心內容主要集中于對各種數據結構的應用上,雖然各種數據結構之間存在許多內在的聯系,但這些內容還是獨立、自成體系,各種結構上的算法涉及的知識較多,而且基于模型及其操作,不易理解。
教學目的與教學要求不明確。數據結構是一門實踐性較強的課程,要注重培養學生利用理論知識解決具體問題的能力,但傳統的教學僅僅滿足于將理論知識講解清楚,并不注重將理論知識應用于解決具體問題,學生為了考試死記硬背理論知識,把一門實踐性較強的課程變成了一門與實踐脫鉤、內容枯燥、乏味的理論課。
教學資源缺乏、教學手段落后。在課程教學中,長期實施以教師為主體、按照教學大綱教學進度來組織、學生被動學習的教學方法。大多利用“粉筆+黑板+PPT”的算法演示方式,缺乏有效的教學資源,缺乏動畫和反復演示的效果,難以充分展示算法的執行過程,學生難以掌握復雜數據之間的變化關系。
3基于創新能力培養的課程教學改革
(1)打牢前導課程基礎,強調程序設計語言的應用
C語言的結構體和指針是描述存儲結構的基礎,靈活地運用指針可以處理各種復雜的數據結構。在組織教學內容時,預留時間重點復習和訓練C語言程序設計中的結構體和指針,在復習和訓練中,從注重C語言的語法知識轉變為注重程序設計能力的培養,對學生學好數據結構起到積極的作用。在數據結構各章節的教學過程中,則結合學生的學習狀況和相應算法,再適當復習必要的C語言程序設計知識,抓住這兩門課程的銜接點實施教學。
(2)重組課程知識體系,突出三種結構和兩種技術
數據結構的知識點比較多,看起來零散,但知識體系很清晰。要把握好數據結構中的線性、樹、圖三種基本結構和排序、查找兩種基本技術。突出數據組織方法與實現技術構成,重構由基本概念、基本結構(線性、樹、圖)和基本技術(查找和排序)三大部分組成的課程體系。基本概念部分重點講述數據結構定義、內容、方法、評價以及前續基礎與課程要求,明確數據結構是什么、學什么、怎么學數據結構。基本結構部分重點講述線性結構、樹、圖的邏輯結構、存儲結構及其加工處理基本算法。基本技術部分包括查找和排序兩類經典技術,貫穿了參數傳遞、指針處理技術、數組應用、遞歸與隊列等重要的程序設計技術;力求表現經典算法思路,培養學生的創新能力,為學生繼續拓展提供線索。
教學中以數據的邏輯結構為主線,順序介紹線性結構、樹形結構、圖形結構和文件結構,針對每種數據結構時,針對其存儲結構設計相關算法。例如,針對線性表,按存儲結構分為順序存儲和鏈式存儲兩種方式,針對不同的存儲結構設計算法;考慮到線性結構在運算時的特殊性,進一步介紹棧、隊列、串、數組和廣義表,最后重點講解排序和查找兩種基本算法。在把握好課程的知識體系后,從簡單到復雜、循序漸進、逐步深入地實施教學。例如在線性表中學習的鏈表,在樹的鏈式存儲、圖的鄰接表、鏈地址法解決哈希表沖突時都是其具體應用。在教學中應注意引導學生復習前面的內容,把相關教學內容串聯,形成一個完整的知識體系。
(3)明確課程目標,優化教學內容
應用型本科的特點,使其數據結構課程的課程目標和要求與一流本科有著不同的側重點。應用型本科數據結構課程重點講授數據的三種基本結構、兩種技術及算法設計與分析,為操作系統、編譯原理、計算機網絡、軟件工程等后續課程提供必要的知識基礎。應該優化教學內容,教學中側重數據的存儲結構及其算法實現,注重算法的效率性,鍛煉學生在實際問題求解中選擇數據結構、設計算法的能力。
(4)建設立體化教學資源,有效輔助學生自主學習
建設支撐教學過程與自主學習兩個面向的立體化數據結構課程教學資源。根據國家規劃教材(《數據結構》,嚴蔚敏,清華大學出版社)的教學內容,精選習題,重新編寫實驗教學大綱,更新實踐教學內容,精心設計了12個課程實驗,編寫了配套輔導教材《數據結構習題與實驗指導》,設計了與課程內容相適應的多媒體課件,提供選件控制方式,便于教學內容重組。面向自主學習擴展的教學資源包括“數據結構”在線開放課程和程序設計在線訓練平臺。
在線開放課程涵蓋教學視頻、練習測試、同步訓練、教學大綱、參考文獻、相關題庫等教學資源,以豐富的教學資源促進學生線上線下主動學習。精心錄制了教學視頻,便于學生有針對性的自主學習;設計了分層次的課后作業,并同步提供給學生,便于學生鞏固課堂教學效果;每講均附有小結,每章均有典型題例,便于總結提高。程序設計在線訓練平臺中,針對知識點建設了數據結構專項訓練題100余道,收集了各級各類ACM競賽中與數據結構有關的競賽題150余道。建設了一個包含20多個題目的數據結構應用案例庫,案例更接近實際應用系統,可以有效提高學生創新動力。
(5)改革教學方法與手段,實施多層次實踐教學
實踐教學包括驗證性實驗、綜合性實驗和課程設計三個層次。驗證性實驗與課堂教學同步,學生在實驗課中完成實驗,綜合性實驗與每章的教學總結同步,要求學生完成線性表、棧與隊列、樹、圖的應用以及排序、檢索6個綜合性實驗,課程設計涉及線性表、棧與隊列、樹、圖、排序、檢索等6章,在每章結束時布置設計題目,由于課程設計涉及基于軟件工程的程序開發方法,故安排在課程結束時實施。
針對知識點按難易程度設計驗證性實驗、綜合性實驗。實驗既要有較簡單的基本題目,又要有一些更接近應用、具有挑戰性的題目,可以滿足不同層次學生的需求,充分調動學生學習的主動性。為了提高學生的積極性,采取ACM競賽的方式實時判斷程序代碼,設計了線性表、樹、圖、查找、排序5次專項比賽,每次比賽包含5個題目,組織學生在規定時間內進行比賽,使用程序設計在線訓練平臺實時評判學生提交的代碼,并且按照完成題目的數量和用時進行排名,有效地調動學生的積極性。
針對每個章節設計了課程設計,課程設計由3-5名學生組成的課程小組完成,設計的程序代碼先通過在線訓練平臺的實時評判,再書寫課程設計報告。訓練學生不僅僅是以完成程序為目標,更重要的是培養學生的軟件設計能力、測試能力和文檔撰寫能力,課程設計報告有統一的格式,至少包含需求分析、概要設計、詳細設計、測試、算法分析與代碼附錄等六個方面的內容。
4結語
數據結構課程在計算機學科中有非常重要的地位。近幾年來,我們在課程教學改革中,重新確定了課程定位與培養目標,自編了輔導教材與實驗指導書,開發了程序設計在線訓練平臺,建設了在線開放課程,改革實踐教學,突出理論與實踐應用相結合。有效調動了學生自主學習的積極性,將ACM競賽模式引入到數據結構的實踐教學,提高了學生的創新能力。通過在線訓練平臺有效提高了實踐教學指導效率、課程設計報告強化了學生的文檔書寫能力。通過課程改革,有效提高了學生的自主學習能力,培養了學生團隊協作能力和合作精神,訓練了學生的項目管理能力和基本科研能力。學生撰寫的研究論文有多篇發表在各級各類刊物上,學生在各級各類大學生創新創業和科研項目中獲得了好成績,為各級各類學科競賽、創新創業實驗室培養了優秀的隊員和后備力量。今后,將進一步完善習題庫、案例庫的建設,適時調整教學內容、改進教學方法,使數據結構課程教學質量進一步提高。