前言:中文期刊網精心挑選了數據結構課程設計總結范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
數據結構課程設計總結范文1
關鍵詞: 《數據結構》課程 教學效果 教學改革
1.課程介紹
《數據結構》是計算機專業的一門重要的專業基礎必修課程,是計算機專業后續課程的基礎,主要用于處理非數值計算問題。學習《數據結構》就是要讓學生掌握數據在計算機中的表示、組織和相應結構上的算法設計,以便學生在軟件的開發過程中能選擇適當的邏輯結構、存儲結構,高效設計算法,并初步掌握算法的時間和空間分析技術。
《數據結構》課程主要介紹:線性表、棧、隊列、數組、串、樹和二叉樹、圖等基本數據結構及其應用;排序和查找的原理與方法。通過本課程的學習,學生能較熟練地掌握數據結構的基本概念、特性,存儲結構及其相關算法;熟悉它們在計算機科學中最基本的應用;培養和訓練運用高級程序設計語言編寫結構清晰、可讀性好的算法及初步評價算法的能力;為《編譯原理》、《操作系統》、《數據庫系統原理》等后續課程的學習,以及計算機軟件的研制和開發打下一定的理論及實踐基礎。
2.教學效果不佳的成因分析
《數據結構》課程的基礎性,以及該課程在計算機專業全國考研統考專業課程中所占的比重,使得大多數學生都能較認真地對待本課程。但在實際的教學過程中,我發現教學效果一直不盡如人意,不僅表現在期末考試補考率居高不下,還表現在課程實驗和課程設計兩個實踐環節中,學生難以將課堂教學內容轉化為可實際運行的程序,以及解決實際問題的能力較差。學生普遍反映的問題是:課堂上聽老師講解覺得很好理解,但等到要學生自己選擇數據結構,并設計算法來解決實際問題的時候就感覺力不從心了。部分學生覺得數據結構理論性太強,過于抽象,在實際的應用中很難抽象出各種數據類型。另外一個常見的現象就是只知道本課程很重要,但不知道重要在什么地方,與實際生活相脫節,不能用來解決實際問題。教學效果不佳,我認為大致有如下原因。
2.1先修課程基礎不扎實
《數據結構》的直接先修課程主要是高級程序設計語言(我校為C語言),但是同時也要求學生具備一定的數學知識。對大多數學生而言,數學課程和高級程序設計語言的學習也是有一定難度的,所以部分學生無法理解課堂上講的例題和思路,難以進行算法分析、比較算法性能和算法的編程實現。
2.2教學方式單一
現在很多高校在《數據結構》教學過程中都已經采用多媒體的形式進行教學,我院就是這樣。我認為,多媒體教學是把雙刃劍,即使用不當不但不會帶來任何益處,反而會帶來弊端。曾有學生向我反映,通過PPT,傳授的信息量太多,同學們理解困難,跟不上節奏,嚴重影響了教學效果。
2.3沒抓好課程實驗環節
課程實驗環節是緊密配合理論教學,通過實驗,幫助和加深學生對相應數據結構的物理結構和邏輯結構和編程實現等各個環節的整體理解。但是學生面對程序錯誤的時候,總是顯得手足無措,老師如若不能采取相應的措施,抓好課程實驗環節,則會直接影響教學效果。
2.4理論教學與實際應用相脫節
數據結構課程是建立在抽象數據類型的基礎上,用于解決非數值計算問題的一門學科,內容相對比較抽象、瑣碎、龐雜,并且涉及很多概念和技術。因此,如果單純地按照課本照本宣科,就不能和實際應用相結合,學生就會很難接受。而即使有相關的實驗,但是由于基本上都是一些驗證性實驗,做完結束,實際上也并沒有體會到知識的實質,更別說做到融會貫通了。
3.教學改革探討
3.1做好課程銜接
數據結構課程的直接先修課程雖然只有高級程序設計語言一門(C語言),但實際上與高等數學和離散數學中的相關知識點也聯系甚密,做好課程銜接是數據結構教學改革中必須探討的問題。例如,算法分析的研究必須以一定的數學理論為基礎;非線性結構的分析必須用到樹和圖的基本知識。另外,數據結構編程實現過程中,高級程序設計語言中的指針和結構體是頻繁出現的知識點。因此,針對課程銜接過程中的重要知識點,一定要采取適當的辦法加以回顧,我院在實際教學中就已經安排了一到兩次的銜接課程。
3.2教學方式的合理運用
在多媒體輔助教學普及的今天,一定要根據數據結構課程的各知識點的特點,將多媒體輔助教學與傳統教學有機結合。所以在數據結構的課程教學中利用多媒體技術時,一定要注意揚長避短,并根據該課程概念多、內容抽象、邏輯性強等特點,精心設計、制作多媒體課件,進行一些必要的動態演示,并適時地運用傳統教學模式,組織必要的課堂討論、課堂提問等形式多樣的課堂交互環節。
3.3課程實驗設計與安排
課程實驗是伴隨著《數據結構》課程的課堂教學而進行的實踐教學環節。與課程設計實踐教學環節不同的是,課程實驗的時間安排上是松散的;根據實驗教學大綱的要求,依據不同的章節內容安排不同的實驗項目。課程實驗的目的主要在于掌握各種數據結構的物理實現方法和掌握基本算法的設計實現方法。通過實驗,強化培養“結構―算法―編程”三者密切相關的意識。所以在課程實驗的設計上,一般較偏重于如何編寫功能單一的“小”算法的問題;而在實驗安排上,一定要充分調動學生的積極性,并嚴格要求學生做好實驗前的準備工作:主要是實驗程序的準備和相關知識點的溫習。我在實際教學過程中,一般在安排實驗的前一次課堂教學中,會安排足夠的時間,闡明實驗項目要求,并演示實驗效果,以便學生根據要求和效果做好實驗前的準備工作。
3.4通過課程設計鍛煉學生理論與實踐相結合的能力
課程設計是《數據結構》課程課堂教學和課程實驗的延續,是重要的一環。我院將其列為一門單獨的考查課,主要是鍛煉學生根據實際問題的要求,正確選擇合理的邏輯結構,并采用適當的物理結構,解決實際問題的能力;更深層次的目標則是希望學生能夠針對實際問題選擇、擴展甚至設計全新的數據結構,然后設計相應的存儲結構并加以實現,從而最終完成問題的求解。由此可以看出,課程設計環節是一個融會貫通的過程,是不能通過課程實驗完成的,也不可能在課堂教學中就建立完整的意識。所以在具體的課程設計實踐教學環節中,一定要讓學生充分認識課程設計的重要性;通過給定學生不同的求解問題,讓學生培養應用數據結構基本知識來分析問題、解決問題的全局意識;訓練學生從系統的、規范的觀點來進行計算機問題的分析、設計、編碼測試等??傊?,課程設計要有利于鍛煉學生理論與實踐相結合的能力。
4.結語
我針對《數據結構》課程的特點,分析了教學效果不佳的成因;并結合實踐,總結了從做好課程銜接、教學方式的合理運用、課程實驗設計與安排、通過課程設計鍛煉學生理論與實踐相結合的能力四個方面,嘗試對《數據結構》課程進行教學改革。
參考文獻:
[1]嚴蔚敏,吳偉民.數據結構(C語言版)[M].北京:清華大學出版社,2008.
[2]葉雙,吳清江等.提高“數據結構”課程教學效果的方法初探[J].計算機教育,2009,(11).
[3]郝宗波.數據結構課程教學改革探討[J].計算機教育,2011,(2).
[4]朱小梅,楊先鳳等.數據結構課程教學方法探析[J].探索研究,2011,(5).
[5]邱保志.多媒體技術在《數據結構》課程教學中的應用研究[J].廊坊師范學院學報(自然科學版),2010,(2).
數據結構課程設計總結范文2
摘要:“數據結構”課程是計算機學科的專業基礎課,是一門實踐性比較強的課程。課程中的實驗環節顯得尤為重要,該環節可以鍛煉和提高學生對復雜程序的設計能力。筆者在多年的教學過程中摸索出實驗環節的教學模式,與大家共同探討。
關鍵詞:數據結構;教學內容;組織形式;考核方式
中圖分類號:G642
文獻標識碼:B
利用計算機來解決實際問題的步驟是:給出問題描述,將問題抽象成數學模型,根據數學模型寫出求解問題的算法,再根據算法寫出程序代碼,最后上機調試并分析結果。在上述過程中,非數值的數學模型是數據結構研究的主體,它操作實現主要是通過數據結構的實驗教學環節來完成的,在該教學環節中作為教學主體的學生,首先要具備抽象思維能力和語言基礎。往往在環節實施過程中,語言基礎是薄弱環節,以至于課時用完了,學生還是寫不出滿意的算法及代碼。鑒于此,我們在教學內容、組織形式、考核方式等教學環節中進行了一些設計,與大家一起來探討。
1教學內容
我們在教學內容上,圍繞課內、課外兩條主線進行改革,給學生較大的自主學習空間,有利于學生創新精神及實踐能力培養。整個實驗教學由淺入深,重在基礎、提高能力、挖掘潛力、拓展思路。在課時內的教學主要以基礎性實驗為主,安排一個綜合性實驗;課時外的教學主要以設計性實驗和綜合性實驗為主。
1.1學時內的教學內容
在我校數據結構課程共64學時,理論課48學時,實驗課16學時。安排了5個實驗項目,由于多數學生語言基礎不算太好,特別是指針的運用和結構體的定義是薄弱環節,所以在做實驗項目時,主要是從教材上的算法出發,使得學生有章可循:
項目1:順序表的操作
主要訓練學生對順序存儲結構的理解,掌握順序表的查找、插入和刪除等基本操作;同時引導學生對于靜態參數傳遞和動態參數傳遞的使用方法。
項目2:單鏈表的操作
主要是與順序存儲結構進行比較,完成線性表在鏈式存儲結構上的查找、求長度、插入、刪除等基本操作。
項目3:棧和隊列的應用―停車場的管理
深入了解棧和隊列的特征,以便在實際問題背景下靈活運用;利用兩個棧和一個隊列模擬停車場管理及相關操作。
項目4:二叉樹的遍歷
掌握二叉樹的結構特征,以及二叉鏈表存儲結構的特點;掌握二叉樹三種(先序、中序和后序)遍歷方法;熟悉并且掌握遞歸算法。
項目5:折半查找和快速排序
掌握折半查找和快速排序的方法,掌握要進行折半查找應該采取的存儲結構形式。并進行對其進行時間復雜度的分析。
對于每個實驗項目的實驗目的和實驗要求,提前2周放在教學平臺上。在實驗前1周,利用輔導課時間,以測試的形式,讓學生寫出算法代碼,由于每個實驗基本上可以在教材中找到源代碼痕跡,所以難度不大。
在實驗教學過程中,采用任務驅動式的教學模式,首先從總體思路上講解10分鐘左右,邊輔導邊發現問題,每半個小時總結1次。由于學生已經在課前作好了準備,在實驗室里他們贏得了更多的自主時間用來調試程序,分析結果。學生水平參差不齊,在上課過程中穿插實驗驗收考核,考核的形式是現場寫出主要操作的代碼,在規定的時間內進行調試、分析。驗收完一個模塊,學生再進行下一個任務。教師通過講課、輔導、驗收使得實驗課堂充實起來,由于學生每個時間段都有活干,所以課堂氣氛非常活躍,討論熱烈。
1.2學時外的教學內容
在學時外,以課程設計的形式,利用開放實驗室時間,嚴格按照軟件工程的思想進行訓練。
在課程設計時,教師列出多個設計課題,每個課題都有相應的要求或說明。各課題的難易度是有差異的,每個課題后以標準分的形式標出了難易度。例如:
課題1:設有n個人圍坐在圓桌周圍,現從某個位置m(1≤m≤n)上的人開始報數,報數到k的人就站出來。下一個人,即原來的第k+1個位置上的人,又從1開始報數,再報數到k的人站出來。依此重復下去,直到全部的人都站出來為止。試設計一個程序求出出列序列(難易度90)。
課題2:用遞歸算法和非遞歸算法實現下面問題,并比較其算法優勢。把一只老鼠放進一個無蓋的大箱內, 箱內設置若干隔板,使老鼠走動的方向受到阻礙,看其如何找到一條通道,走出大箱(難易度80)。
“難易度90”表示設計中的各項全部達到要求時的最高得分大致為90。因此,參加課程設計的學生首先要了解設計的任務,仔細閱讀各題的設計要求,然后根據自己的基礎和能力情況從中選擇一題。一般來說,選擇課題應以在規定的時間內能完成,并能得到應有的鍛煉為基本原則。課程設計的總體思路是:數據模型選取構造求解算法選擇存儲結構編寫程序代碼調試測試總結分析。
在做課程設計時,不再拘泥于語言環境的限制和存儲結構的限制,主要鍛煉學生的開放思維能力和綜合知識的應用能力。同時,引導學生從結構化程序設計到面向對象程序設計的思考。例如學生正在學習C#,在做課題1時,除了傳統的設計方法外,可以引導學生畫出類圖和順序圖,寫出C#的代碼。
設計結束后要寫出課程設計報告,以作為整個課程設計評分的書面依據和存檔材料。主要包括:需求分析、概要設計、詳細設計、調試分析、用戶使用說明、測試結果、參考文獻等。課時外的訓練主要是為畢業設計打下基礎,同時也培養了學生的團隊協作精神。
2組織形式
2.1學生的組織
對于學生進行分組,每組中按照好、中、差的學生進行搭配。由于學生水平參差不齊,早做完的學生,進行考核驗收。驗收合格,同時給出相關思考題,可以再對于思考題進行進一步的思考,鍛煉創新精神。同時,讓已完成任務的學生輔導未完成任務的學生,這樣培養了學生的團隊協作精神,課堂氣氛非?;钴S,激發了學生學習的主動性。對于教師的工作也減輕了一些,教師主要是總體部署,分步考核,可以有充足的時間進行驗收,比較清楚地掌握總體情況,以便講評。這樣組織學生,可以解決“優等生吃不飽,差等生吃不了”的局面,實現了“因才施教”。
2.2內容的組織
對于每一個實驗項目的實驗目的、相關要求等,以實驗指導書的形式與學生見面,一本好的實驗指導書能給學生的上機實驗帶來事半功倍的效果。
首先,讓學生明確實驗目的和要求。每個實驗項目都給出了實驗目的,并且提出了具體要求。有了實驗目的,學生才有方向性;有了具體要求,學生實驗時才有章可循。對于要求,要按時間分塊執行。比如單鏈表的操作為2學時,第一個學時完成建立、查找、部分主函數工作;第二學時在第一學時基礎上完成插入、刪除操作,完善主函數。每一個學時在最后進行驗收,若有問題通過小組完成。
其次,讓學生掌握實驗步驟。每一個實驗項目按照軟件工程的思想去組織,先需求分析,抽象出數據結構模型,再明確數據類型,詳細設計,最后給出類C語言的算法描述。要求學生要嚴格遵循實驗步驟來思考問題,這樣,可以培養學生良好的工作作風和解決問題的方法,并且為后續課程做準備。
3考核方式
市場經濟體制下的學生不如計劃經濟體制下的學生好教育,特別目前高校擴招,入學的學生素質參差不齊,基礎相對薄弱,自學能力不強,不少學生在學習上存在畏難心理。而對于高等教育也不能降低要求,這樣就要求在教學模式上進行革新,我校對教和學提出兩個轉變,“變學生管理為學習管理,變管理學生為服務學生”。對于課程教學,不能再采取應試教育下的考核形式。鑒于此,在數據結構的教學過程中,特別是實驗教學,探索出了新的考核形式。
分數對學生來說是非常重要的,以此作為課程管理的抓手。對于教學計劃內的實驗項目成績分成兩個部分,一個是個人成績,一個是小組成績。個人成績主要考核學生個人能力,小組成績主要是考核學生的團隊協作精神。對于個人成績考核形式有兩個方面,一個方面是學生的程序代碼調試技能的測試,一個方面是書寫實驗報告,從實驗報告上可以考查學生的邏輯組織能力。筆者把該考核模式稱為“實驗2+2”模式。每個實驗項目結束前進行驗收考核,經常進行階段性考核,主要是激發學生的學習興趣,保證了課堂教學紀律,基本沒有缺勤的學生,讓學生找不出來不學習的理由,因為每處都與成績掛鉤,都在拼命的去“掙分”。
對于課程設計部分,實驗室開放時間結束時,由學生提交課程設計源代碼和設計總結報告。源代碼提交時,要生成可執行文件,對文件進行壓縮,壓縮文件名為“學號+姓名”形式,發送到指定郵箱地址。課程設計成績根據學生設計任務完成情況、設計報告、設計成果的質量以及答辯情況綜合評定。完成情況主要包括:功能實現情況和程序設計情況;設計報告包括課程設計報告格式,課程設計思路及設計過程,以及對設計的自我評價,收獲和體會等;答辯要求思路清晰,模塊關系清楚,回答問題敏捷。
對于學生的學業成績采用結構化成績,把100分不再作為一個整體看待,把它融進教學的全過程中去。學生的學業成績由平時成績、副卷成績和主卷成績構成,平時成績占20%,副卷成績占20%,主卷成績占60%。在平時成績中課程設計10分,作業和平時課堂表現5分,小考5分;副卷成績中個人成績15分(其中程序調試10分,實驗報告5分),小組成績5分。
4結論
通過實施驗證,效果是良好的。實驗的創新也帶動了整個課程的進步,特別是上課出勤率,基本上是全勤。課堂氣氛活躍,問題討論熱烈,學生的學習主動性大大提高了,網絡教學平臺登錄次數明顯增多。在問題答疑和考核驗收方面,雖然增加了教師的教學工作量,但是提高了教師的工作熱情。真正實現了“教”和“學”的良好互動,提高了教學質量。
參考文獻:
[1] 周蘇. “數據結構與算法”的教學改革和實驗創新[J].計算機教育,2007,(15).
數據結構課程設計總結范文3
關鍵詞:建構主義;重點課程建設;彈性內容體系;網絡化協作學習;基于興趣的學習
近年來,隨著軍隊信息化建設步伐的加快,各軍校都致力于信息類專業的建設[1]。作為信息類專業基礎課程和專業課程的結合點,“數據結構”的重要性不言而喻,我院也于2009年確定了“數據結構”重點課程建設,教學對象主要是生長軍官學歷教育指揮類學員。以建構主義教學理念[2]為指導,將“教員引導下的學員自主學習”教學思想貫徹于課程建設的全過程,把握合理的課程教學體系建設,是本重點課程建設的主要特色。下面,我們將就體現該特色的具體實踐過程及其所包含的教學內容體系建設、教學方法改革以及教學團隊建設等組成環節進行闡述。
1教學內容體系建設
在課程教學體系中,教學內容是基礎,不同的教學內容決定著不同的教學形式與方法,對于學員的知識能力建構的效率和效果也有著不同的影響。目前,各高校普遍壓縮了專業基礎課教學課時,因此,為了讓學員在有限的學時內進行有效的學習,我們必須首先考慮課程教學內容體系建設問題。
一般講,“數據結構”課程包括線性結構、樹型結構、圖狀結構、查找與排序等內容,并以抽象數據類型、算法度量與評價貫穿其中[3]。各類院校根據其人才培養方案及學員特點,在課程內容組織上也有明顯區別:有突出數據邏輯結構的,有側重算法實現及度量的;有用C語言描述的,有用C++或Java描述的。結合我院信息類專業課程體系設置以及學員特點,根據ACM/IEEE CC2005[4]和教育部CCC2006[5]學科規范,我們在課程內容體系建設方面主要實施了以下幾點措施。
1.1采用彈性課程內容體系
由于“數據結構”課程課時有限,本院數據結構課程僅為50學時,課程內容設置不可能面面俱到,必須結合建構主義思想及學員的具體特點確定教學內容。在此次課程建設中,我們在課堂講授和實踐教學環節中均采用了彈性內容體系,在課程講授內容設置上,我們主要采用了“基本模塊”+“擴充模塊”的體系,其中“基本模塊”包括算法度量基礎、線性結構、字符串與模式匹配、樹、圖、排序、檢索等7個模塊共16個二級知識點,要求教員必須全部講解完成;“擴充模塊”則包括廣義表、AVL樹、倒排序及一些前沿應用譬如XML的DOM樹、OWL的分類樹等,由教員根據學員學習情況靈活掌握實施。
在實踐教學環節,我們采用分層次的實驗內容體系,自主編寫實驗教程,設立驗證性實驗、提高性實驗、課程設計等三層次實驗要求。其中最基礎的驗證性實驗指課本知識點的具體實現,譬如,線性表存儲結構以及其插入、刪除、替換、檢索等算法的實現等,側重加深學員對基本數據結構的理解以及基本編程能力的培養;提高性實驗則從實際問題解決出發,綜合2至3個數據結構的應用或對相關數據結構的算法擴展等,譬如銀行的多窗口排隊服務,多叉路口車輛調度等問題,需要將現實世界抽象成數據模型并應用相關數據結構的知識解決,有一定建模與實現難度;實驗內容體系的頂層是課程設計,以一定規模的實際問題解決為目標,以具體任務為驅動,覆蓋數據結構的多種模型,鍛煉學員抽象建模和解決問題的能力。根據學時的要求及數據結構教學目標的把握,共計設計了20個實驗,其中驗證性實驗12個,提高性實驗7個,課程設計性實驗1個,要求學員在數據結構實踐過程中至少完成15個實驗,包括12個驗證實驗,任意4個提高性實驗以及參加課程設計。
1.2采用C++結合STL(Standard Template Library)框架的描述方法
根據CCC2006的建議,選擇面向對象語言C++作為數據結構描述語言,從數據結構的邏輯描述到物理存儲及算法實現過程均采用面向對象的分析與設計思路;同時考慮到主流編程語言C++、JAVA及C#等都不同程度地應用了STL框架并提供了常用的數據結構類,譬如Vector、List、Set、Stack、Queue等,在數據結構課程內容中增加了對于主流語言中常用數據結構模板類的分析與編程,以增強學員對數據結構應用的理解。例如,對于STL中的Vector類,其實現功能為大小可動態增長的數組。教學中不僅僅要求學員能夠應用該類型,同時要求能夠分析理解該類型,譬如要求學員找出其動態增長性實現的代碼段,并對其插入、刪除算法進行歸納總結等。通過分析STL框架相關類的實現,擴展講解面向對象思想與概念在實現該類過程中的應用,以提高學員面向對象分析與設計能力。
1.3規范化的教學文檔建設
教學是否符合先進的教學理念,是否采用了合理的教學方法,我們從教學文檔中就可以看出來,教學文檔的形式十分重要,而更重要是教學文檔的內容。在本次課程建設中,我們采用了規范化的模板,對課程標準、課程設計、教學計劃、教學大綱、教案等進行了統一的設計與規范。譬如,在教案設計中,哪些內容易于CAI展現,哪些內容適合傳統板書,我們都進行了仔細研究。譬如概念定義、背景知識、計算結論等,可以擬制要點并進行文本展示;公式定理推導過程如二叉樹的性質推導,必須進行板書;原理與過程展示如遞歸過程分析、樹的遍歷、排序過程等,推薦使用動畫。同時,我們要求教員授課時必須將教材、課件、教案、教學實施表(包括課程標準、大綱、計劃)等文檔備齊并通過教學組審核。課建組認為:嚴格規范的教學文檔看似傳統的要求,實則是課程教學是否成功的前提條件。譬如,課程標準體現了課程的知識體系,即知識建構的基礎;教學計劃、課程設計與教案則體現了知識的傳遞體系,即合理地引導學員完成知識的掌握與新知識的建構。通過教學文檔建設,提高了課程教學的規范化。
2教學方法改革
在本次“數據結構”重點課程建設中,教學方法改革是研究重點。傳統“教員教,學員學”的方法已不能適應“以學員為中心”的學習需要;而照本宣科式的“PPT課件播放朗讀”已嚴重束縛了學員學習過程中的主動性與創造性,與素質教育目標背道而馳。對此,我們在本次課程建設中以建構主義理念為指導,結合“信息化教學”的特點,提出了“網絡化協作學習方法”、“基于興趣的學習模式”兩種教學方法并進行了研究嘗試。
2.1網絡化協作學習方法
“網絡化協作學習”是一種以WEB網站和信息資源為依托的新型學習方式[6],在信息資源平臺面前,教員和學員、學員和學員之間更加平等,它提高了學員的學習自主性,有利于以學員為中心的學習。在“數據結構”重點課程建設中,我們通過引入“網絡化協作學習”,引導學員在課后進行有效的自主學習,從而達到能力培養的要求。在“網絡化協同學習”教學方法實施過程中,我們始終把握兩個要點:網絡課堂的開設與網絡化協同學習的實踐。
2.1.1信息資源建設與網絡課堂開設
開設網絡課堂主要依賴網絡教學平臺和課程信息資源。此次“數據結構”網絡課堂建設采用了總部統一配發的網絡課程教學平臺,該軟件平臺不僅提供了章節知識點的構建、關聯、、檢索,而且可以通過公共信息、小組信息、點對點的信息支持交互,該平臺能夠較好滿足教員與學員之間、學員與學員之間的協同學習?;谠摼W絡教學平臺,以“數據結構”課程的內容體系為依據,課題組將該課程的章、節、知識點進行了統一的組織,不僅設定了章、節、知識點的隸屬關系,還以數據的邏輯結構為線索,將相關知識點進行了關聯,形成了“數據結構”課程的知識網,這樣做有利學員整體把握該課程;同時,為每一章、節都設置了教學目的、學習方法、學習進度、習題參考、實驗練習等欄目,這有利于學員進行自主學習。
2.1.2網絡化協同學習方法實踐
信息資源的建設是基礎,而基于信息資源的“網絡化協作學習”實踐則是該教學方法改革的重點。 “網絡化協作學習”方法實質上是一種建構主義理念指導下的信息化教學方法,它即不同于遠程教育模式,也有異于絕大多數的自學網站,“網絡化協同學習”強調在教員引導下的學員自主學習和協作學習。在該方法學習中,教員是“導演”,是“總指揮”,教員需要完成學習場景組織、學習進度管理、學習效果評價等活動;學員則可扮演“演員”與“分隊指揮”雙重角色。作為“演員”,學員需要提出學習計劃、實施自主學習;作為“分隊指揮”,學員需要組織學習小組、分解學習任務、合成工作成果。
例如,針對模擬實現XML解析器這樣的實際應用問題,教員的活動應包括:1)提出應用問題:模擬實現XML文件的DOM存儲機制(要求模擬程序能讀入、存儲XML文件并將XML文件中節點關系按樹型顯示);2)提示講解內容:XML文件的DOM存儲原理;3)提示學習任務:樹型結構的邏輯表示與存儲方法、樹型結構的遍歷、樹型結構的顯示;4)分配任務給各學習小組,明確學習進度要求;5)驗收并講評學員實驗報告等。學員的活動應包括:1)學習任務計劃;2)樹型結構相關知識學習與交流;3)XML解析器設計;4)XML解析器實現;5)撰寫并提交實驗報告和相關代碼。以上學習活動,主要通過網絡課堂所提供的信息、信息瀏覽、BBS、文件傳送進行支持,并通過教員策劃組織、學員協作實施的方式完成,是一種有效的“網絡協作學習”方法。
2.2基于興趣的學習模式
“基于興趣的學習模式”以教育心理學為理論基礎,結合“數據結構”課程內容特點,從課程引入、課程展開以及課堂氣氛營造等方面進行以提高學員學習興趣為目標的相關方法研究。該模式的詳細論述見文獻[7],此處作一簡介。
在課程引入階段,我們將“數據結構”與學員所學專業領域問題相結合,讓學員認識到學習“數據結構”課程的現實意義,引發學員的學習興趣。在課程展開階段,我們采用“循序漸近式教學”與“任務驅動式學習”兩種方法增強學員學習興趣。“循序漸近式教學”主要指重視先導課與當前課程的銜接,讓學員“能夠學”;而“任務驅動式學習”則通過應用情景創設提高學員學習知識、解決問題的興趣,讓學員“有興趣學”。“基于興趣的學習模式”的第三個主要措施即課堂氣氛營造,通過多種方法譬如小組競賽、知識競答、結對互助活躍課堂學習氣氛,使學員“樂于學”。
3教學團隊建設
加強教學團隊建設是重點課程建設一項重要內容。教學隊伍建設的質量,直接關系到課程教學的質量和人才培養的水平。因此,在課程建設初期,我們根據教研室和課建設小組的具體情況制定了“引進
來,走出去”的教學團隊建設策略和具體的教員培養計劃,在兩年內引進教員2~3名,送學培養2~3名。目前,我們已引進3名具有碩士學位的教員,其中1名教員加入課程建設小組;選送2名教員攻讀博士,1名教員攻讀碩士學位,其中,1名脫產2名在職;我們還通過短期培訓的方式選送教員學習相關專業知識,拓寬視野;通過參加學術會議的方式選派教員參與交流,學習兄弟院校的先進經驗。上述措施使教員整體業務水平有了明顯提高,教員隊伍培養計劃圓滿完成。此外,通過課程建設活動,我們培養了一批年輕教員,其中有些教員已成為教學骨干。在兩年的課程建設中,我們大膽啟用年輕教師,每年都有意識地安排部分年輕教員承擔“數據結構”的課程教學任務,積極推薦和支持他們參加院舉辦的各類教學競賽活動,并指派經驗豐富的老教員進行跟蹤指導。在這些年輕教員中,先后有5人在課件制作、教學研究以及優質授課比賽中獲獎,并取得了一定成績。
4結語
此次“數據結構”重點課程建設以建構主義教學理念為指導,在教學內容、教學方法、考核方式及教學團隊等方面進行了改革與實踐,特別是一些改革后的、具有通用性的內容和方法,如“數據結構”課程彈性內容體系、基于興趣的“數據結構”學習模式以及網絡化協作學習方法在本次課程建設得到應用,它為下一階段的軟件基礎類課程群的建設打下了基礎。
參考文獻:
[1] 候喜貴. 軍隊信息化建設研究[M]. 北京:出版社,2002:17-19.
[2] 張建偉,陳琦. 從認知主義到建構主義[J]. 北京師范大學學報:社會科學版,1996(4):75-82.
[3] 嚴蔚敏,吳偉民. 數據結構(C語言版)[M]. 北京:清華大學出版社,2001:2-3.
[4] ACM/AIS/puting Curricula 2005[EB/OL].(2007-05-08)[2010-12-20]./education/
curric_vols/CC2005-March06Final.pdf.
[5] 教育部高等學校計算機科學與技術教學指導委員會. 高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(試行) [M]. 北京:高等教育出版社,2006:38-40.
[6] 陳文漢,張建奇. 高等教育網絡化教學研究綜述[J]. 比較教學研究,2003(9):46-52.
[7] 張立,王偉嘉,石巖,等. 基于學習興趣開展數據結構教學[J]. 計算機教育,2010(13):95-97.
Key Course Construction for Data Structure Base on Innovative Teaching Ideology
ZHANG Li,SHI Yan,ZHANG Hongping,WANG Weijia,YU Congbin
(Department of Logistical Information Engineering, Logistical Engineering University, Chongqing 401311, China)
數據結構課程設計總結范文4
關鍵詞: CDIO;數據結構;課程教學
中圖分類號:G642.0 文獻標識碼:A 文章編號:1009-3044(2014)01-0078-02
數據結構是計算機學科的重要核心課程,在計算機課程體系中處于承上啟下的地位,它不僅是程序設計的重要理論技術基礎,也與計算機科學技術的其他領域如操作系統、編譯原理等也有著密切的關系。由于課程內容比較抽象,算法理解比較困難,要在有限的課時內使學生更好地理解課程的內容,掌握課程的重點,提高解決實際問題的程序設計能力,就必須打破傳統的數據結構教學模式,融入一些新的現代教育的理念與方法,CDIO教育模式為我們提供了一個重要途徑。
1 CDIO工程教育模式
CDIO是由美國麻省理工學院、瑞典查爾姆斯技術學院、瑞典林克平大學共同倡導,集多國工程教育精英建立的一套工程教育理論和實施體系。CDIO代表Conceive(構思)、Design(設計)、Implement(實施)和Operate(運作),是“做中學”和“基于項目教育和學習”理念的集中體現。
2 《數據結構》教學的特點與現狀
《數據結構》教學過程中主要存在以下幾個方面的問題:
1)對于課堂教學,大多采用多媒體理論教學和上機實踐相結合的方式,但是目前的數據結構教學仍然非常重視理論教學,即存在“重理論、輕實踐”的現象,不利于學生實踐能力的培養。
2)雖然現在授課一直在提倡“以教師為主導,學生為主體”,但是在實際的理論教學環節通常仍然是以教師為主,學生充當“聽眾”,始終按著教師講解的思路去理解問題、記憶知識,即存在“教師講、學生聽”的現象,難以調動學生探討問題的積極性。
3)實踐教學環節中的實驗大多是驗證性實驗,缺乏與實際相結合的設計實驗和綜合性實驗,即存在“驗證多、設計少”的現象,不利于學生創新能力的培養。
3 CDIO對數據結構課程教學模式的啟示
CDIO以能力培養為主線,以任務驅動進行項目教學,考核實施過程監控,通過構思、設計、實現、運作的完整過程,實現課程的“做中學”和“基于項目教育和學習”。對于數據結構課程教學,CDIO理念給我們帶來了很大的啟示,根據每節課程內容的特點選用以下教學模式展開教學。
3.1 問題驅動式教學
問題驅動式教學是為了激發學生的學習興趣,根據教學內容合理地設置問題引入教學內容的方法,采用“提出問題、分析問題、解決問題”的模式,組織學生進行思考、分析、討論與交流,這樣,學生能夠積極參與到學習中,而不再是被動地接受。
例如,在學習“棧”這部分內容時,教師可以提出比較有趣的“Hanoi塔”問題、八皇后問題或者迷宮問題讓學生思考,再逐步引出“?!钡南嚓P知識,然后鼓勵學生應用“?!本帉懰惴ń鉀Q這些問題并上機編程實現。以八皇后問題為例,提出問題可以教師口述如下:八皇后問題是一個古老而著名的問題,該問題是十九世紀著名的數學家高斯1850年提出的:在8*8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種方法。也可以用形象的圖示或演示軟件為學生展示問題,如圖1所示,左邊是初始狀態,右邊是假設第1個皇后擺放在第1列,那么第2個皇后從第2列第1行開始試探,如果不互相攻擊就將其擺放,第2個皇后擺放在第2列第3行的位置,接著試探第3個皇后擺放的位置,圖示表示第3個皇后目前的位置與第1個皇后處于同一對角線,與第2個皇后處于同一行,都互相攻擊,不滿足條件……提出問題之后,讓學員去思考分析,這樣不僅激發學生的興趣,也能培養他們分析解決實際問題的能力。
3.2上機實踐教學改革
計算機課程學習過程中普遍存在這樣的現象:教師講授的內容學生反映基本都聽懂了,但是上機實踐時卻覺得無所適從,不知道怎么把課堂上講授的算法思想轉換成可以執行的程序。上機實踐是數據結構課程教學必不可少的一個重要組成部分,通過上機實踐學生能夠更好的理解數據中的經典算法思想的意義,掌握數據和數據之間的關系,深刻體會理論和實踐的結合,運用所學知識去解決實際問題,所以對上機實踐教學的改革勢在必行。
首先,驗證性實驗應作為基本目標要求學生必須掌握,在此基礎上,多展開設計性實驗和綜合性實驗,使理論學習中需要解決的現實問題在一定程度上得到實現。其次,將上機實踐納入考試范圍,占期末總成績的30%,上機成績由“驗證性實驗+設計性實驗”組成,這樣會使學生重視平時上機實踐。
例如,在進行線性表的實踐教學時,在掌握了線性表理論知識的前提下,每位學生都要將書中的算法予以驗證性的實現,我們使用的是嚴蔚敏老師的《數據結構(C語言版)》,要求學生將順序表和單鏈表的基本運算包括插入、刪除等操作予以驗證。這些基本的算法得到驗證后,將其整合到現實中的問題作為綜合性設計性實驗,由學生自主完成,如:為某屆學生建立一個通訊錄管理系統,可以方便查詢每一個學生的學號、姓名、年齡、專業、電話、電子郵箱等。其功能包括通訊錄鏈表的建立、學生通訊信息的查詢、修改、插入與刪除、以及整個通訊錄表的輸出等。
3.3 以項目為導向的課程設計
課程設計是對數據結構知識的梳理鞏固和綜合運用,好的課程設計能夠使學生對理論知識舉一反三、熟能生巧。傳統的課程設計題目過于單一,學生應付式交作業的現象比比皆是且答案雷同。所以有必要采取多樣化的題目,要求學生自由結合分組,每組3-4人,從給定題目中選取感興趣并符合自身能力的設計題目,分別進行項目的Conceive(構思)、Design(設計)、Implement(實施)和Operate(運作),最后以項目小組的形式完成,上交項目報告。各不相同的任務迫使學生必須用學到的數據結構知識獨立解決問題,小組中每個學生要發揮各自作用,積極思考,相互交流、溝通,在完成不同任務的同時,項目實施專業能力和團隊協作能力得到很好的鍛煉。在項目實施過程中,突出學生的主體地位,強調學生自學能力和動手能力的培養。
4 總結
綜上所述,結合數據結構課程教學的特點和現狀,將CDIO工程教育理念貫穿于教學中,并根據數據結構的教學內容和教學目標,在教學過程中“重學生、重理論、重實踐、重項目”,培養學生的自學能力,提高學生的實踐能力和團隊協作能力。
參考文獻:
[1] 嚴蔚敏,吳偉民.數據結構(C語言版)[M].北京:清華大學出版社,2012.
[2] Edward F Crawley.Creating the CDIO Syllabus,a Universal Template for Engineering Education. 32nd ASSEE/IEEE Frontiers in Education Conference.November 6-9,2002,Boston,MA
數據結構課程設計總結范文5
關鍵詞:數據結構;教學方法;實踐教學
1 探討數據結構教學方法和手段的必要性和重要性
數據結構是計算機學科的一門綜合性的專業基礎課,也是計算機學科的核心課程,在整個學科知識體系中占據非常重要的地位。通過該課程的學習,不僅為后續課程打好理論基礎,而且進一步提高數據抽象能力和程序設計能力。數據結構課程內容多、概念多、方法多、高度抽象、邏輯性強、技巧性強、實踐性強,這些特點決定了教與學的難度較大,但其教學水平和效果又將直接影響后續課程的學習以及學生程序設計實踐能力的提高。同時高校教學改革,課程學時壓縮,這更增加了教學的難度。
另外我們授課的對象全是女生,研究表明:女性的智力與男性在總體上基本相同。只是在智力結構上有些差異:在思維方面,女生長于形象思維而弱于抽象思維;在感知方面,女性要比男生敏感、知覺速度也比男生快,而反應速度則比男生慢。男女的智力各有所長,各有所短,這就要求教師了解男女智力結構的差異,有針對性地給予女生適當的教育、指導和幫助,促使她們取長補短,不僅要注意知識的傳授,更要注意方法的指導和能力的培養。另外計算機系大約40%的學生是從我院文科專業調劑進來的,這就更需要教師有針對性地進行引導。
考慮到數據結構課程和女性思維的特點以及我院計算機系生源情況,為了保證和提高數據結構的教學水平和教學質量,我認為很有必要分析教學中存在的問題,并進一步探討更適用于具體教學對象的教學方法和手段。
2 教與學的過程中存在的問題以及相應的解決措施
下面從教與學雙方在課程教學過程中存在的問題出發,分析其原因并尋找解決這些問題的思路,以期提高教學水平、改善教學效果,達到該課程的教學目標。
常見問題有:
(1) 不是自己報考的第一志愿,首先心理上不喜歡,有畏懼感,覺得難學;
(2) 覺得算法理論太抽象,邏輯性太強,難理解,難掌握;
(3) 上課算法理論聽得懂,上機實驗實現算法時覺得無從下手,當編程解決實際問題就感覺更難了;
(4) 內容多,概念多,學習中難以把握整體內容,學完后不知道到底學了些什么;感覺在課堂上思路跟不上,難以消化;
(5) 不知道學習算法在實際中有什么用,逐漸失去了學習興趣;
(6) 教材上的算法多,難以全部上機實現;
(7) 不重視上機實驗,覺得能讀懂算法和書面編寫算法就可以了;等等。
中華女子學院重點教改立項 女性計算機應用型人才的實踐教學研究(2006-2007)
對上述問題總結分析后,筆者覺得可以從以下幾個方面來改善數據結構課程的教學方式和效果。
2.1 分析實際情況,有針對性地開展教學
(1) 教師要了解學生的前導課程“程序設計基礎與C語言”的學習掌握情況?!俺绦蛟O計基礎與C語言”是數據結構的前導課程之一,學生對C語言程序設計的掌握程度直接關系到數據結構課程的課堂授課和上機實驗的教學效果?!俺绦蛟O計基礎與C語言”是學生接觸到的第一門編程語言,教與學的難度都很大,學生僅僅通過一學期的學習難以熟練掌握融會貫通并具有較高的編程能力。尤其,指針、結構體和函數等知識點是“程序設計基礎與C語言”中的教學難點,學生普遍理解不深,難以在編程中靈活應用,但這些知識點在數據結構課程中頻繁應用。對這些知識點的熟練掌握是在數據結構課程中理解理論算法和完成上機實驗的重要保證。為此,我在教學中注意做到以下三點:
與“程序設計基礎與C語言”的授課教師做好教學的溝通工作,做好課程之間的銜接,將數據結構課程中經常用到的知識點重點講授并加強上機實踐。
在講數據結構算法之前復習剖析C語言中的指針、結構體和函數等知識點。具體形式可以是在課堂上以程序實例的形式對這些知識點進行復習,尤其指出學生難理解、容易混淆和犯錯誤的地方;布置涉及這些知識點的課外編程作業,通過作業批改發現學生存在的問題然后集體重點講解;在教學中強調指針、結構體和函數等在數據結構課程中的重要性,讓學生課外重點復習等等。
靈活使用教材[1]?;贑語言的數據結構教材中大部分使用類C語言描述算法,而學生在上學期剛學完C語言程序設計而且實際編程經驗少,難以應用自如,因此,類C語言與C語言程序之間的轉換成為不少學生聽課和上機實踐的一道障礙,甚至在學習開始就打擊了不少學生的學習信心和積極性。在教學中我注意采取措施來縮短學生實際情況和教材之間的差距:比如,前幾周的授課和上機實驗中,可以給出算法的完整源程序并詳細講解,這樣為學生實現類C語言算法描述和C語言源程序的轉換提供范例,降低學生進入數據結構課程的難度,避免學生因此產生畏難情緒而失去興趣和信心;對于基本操作比較多的數據結構類型,在實踐教學中可以給出部分源代碼,讓學生編寫主要的操作函數,然后直接嵌入源代碼中進行調試,用來降低難度并提高上機實驗的效率;提醒學生充分利用教材隨帶的光盤資料,如程序源碼和算法演示軟件等。
(2) 考慮到女性思維的特點,可以充分利用多媒體技術,采取直觀形象的教學方式。數據結構課程抽象、邏輯性強,而女性思維長于形象思維而弱于抽象思維,為此我盡量采取直觀形象的教學。例如利用多媒體課件動態演示在單鏈表中插入、刪除結點的過程等,演示形象生動加深了學生對算法的理解;盡量對照現實生活中的例子來引入知識點,例如通過在食堂就餐時取、放餐盤的例子引入對棧邏輯特點的講解,用取款排隊的例子引入對隊列邏輯特點的講解,激發學生對“計算機程序如何實現”的好奇心,調動學生的學習積極性。
(3) 考慮到不同學生的不同情況,采取分層次教學方式。分層次教學方式的目標是讓每個學生都能在學習過程中獲得盡量大的成就感,最大程度地調動學生學習的積極性。
2.2 優化教學內容與方式
(1) 教師要分析清楚數據結構的知識體系結構,把課程的整體框架提供給學生。課程內容主要包括線性表、樹、圖三大類數據結構和查找、排序兩大類算法,其中棧和隊列是線性表的兩個特例,線性表是樹的特例,樹是圖的特例,查找和排序是實施在三大類數據結構上的操作,由線性到非線性,由簡單到復雜,這樣有機聯系地組成數據結構的整體框架。
(2) 貫穿三點一線原則。講授過程中貫穿一條主線即從線性到非線性由簡單到復雜的三大類數據結構,而每類數據結構包括邏輯結構、存儲結構和基本操作的實現。
(3) 把握重點。把握數據結構的整體框架,貫穿三點一線原則講授內容,同時要把握好重點,有選擇有層次地教學。例如,線性表是最常用且最簡單的一種數據結構,棧和隊列是操作受限的線性表,樹和圖往往要做線性化處理,因此要把線性表作為重中之重的內容進行透徹的剖析。對于線性表的兩種存儲結構順序表和單鏈表,把單鏈表作為重點和難點來講授和上機實驗,把單鏈表中的插入、刪除、查找等基本操作作為重點。再如,二叉樹的遍歷操作作為重點來講授和上機實驗,而哈夫曼算法作為可選的上機實驗內容。查找和排序算法中選擇折半查找、二叉排序樹查找、哈希查找、直接插入排序、冒泡排序、快速排序作為教學和實驗的重點內容。
2.3 理論聯系實際,激發學習興趣
興趣是最好的老師,教學過程中要注意采取多種手段激發學生的學習興趣。
首先,良好的開端是成功的一半,為了不讓學生從一開始就產生畏難情緒,上好第一堂課非常關鍵。第一堂課不能直接進入概念、術語和算法的學習,可以先介紹與數據結構相關的現實生活中的例子來激發學生的好奇心和學習興趣,例如圖書館的書目檢索系統、人機對弈問題等等。另外可結合考研、就業以及后續課程的學習等介紹數據結構課程的地位和作用。接著引入學生所熟悉的農夫過河問題(農夫、狼、羊、白菜),先讓學生思考并給出答案,然后介紹用計算機程序解決該問題的思路和步驟,從而讓學生對于數據結構課程學什么以及怎么用等有個概括的印象。
其次,在接下來的教學過程中注意理論聯系實際,通過生活實例來引入數據結構及算法,注意介紹算法的背景知識和能解決的問題等。例如,通過現實中的排隊現象引入隊列的概念并介紹隊列可以解決的問題如打印機作業排隊問題,另外,充分利用多媒體教案和課件的直觀形象以及動態性也可以提高學生的學習興趣。
2.4 加強實踐教學改革[2]
數據結構是一門實踐性很強的課程,不僅要學習理論知識,更要注重上機實踐。通過上機實踐來驗證理論內容并加深對各種算法的透徹理解,同時在實踐中不斷嘗試,不斷地積累經驗,逐步養成良好的程序編寫風格,提高程序調試能力以及解決實際應用問題的能力。結合教學的實際情況,我認為可以從以下幾個方面來加強和改進實踐教學。
(1) 開始兩周內可以給出適當的上機實驗題目復習C程序語言中的指針、結構體和函數等知識點,并根據上機實驗的情況對數據結構中常用及易出錯的地方進行集體重點講解,為后面算法的上機實驗打好編程語言基礎。另外,為了打消學生的畏難情緒,數據結構算法的前兩次上機實驗時教師可以先給出完整的源程序,讓學生在主函數中添加語句來體驗數據結構的基本操作的執行,再逐步過渡到自己編寫完整的源程序。
轉貼于
(2) 加強程序調試能力的教學和實驗。通過一學期的編程語言學習,學生掌握了基本知識點,但是程序調試能力還有待于提高。程序調試能力不強是嚴重影響學生上機實驗效果的,也很大程度上打擊學生實驗積極性和學習興趣的一個因素。但調試程序實踐性很強,而剛學完C語言程序設計的學生面對錯誤提示時往往不知道發生了什么錯誤及如何改正。針對這種情況可以采取以下措施來逐步培養和提高學生的程序調試能力:
整理歷屆學生在上機實驗過程中易出現的錯誤,給出錯誤信息與錯誤原因的對應關系,讓學生在上機的過程中對照查找自己程序中的錯誤。
提醒學生養成良好的習慣,每次數據結構上機實驗調試程序時要記錄英文錯誤提示信息和解決該錯誤的方法,不斷積累程序調試經驗,避免再犯同樣的錯誤,并建議學生通過網絡共享各自的調試經驗。
要加強實驗準備、過程和結果的教學管理。要求學生在上機實驗前必須書面編好源程序并且進行了初步的語法和邏輯檢查,上機實驗課上集中精力去調試程序,才能保證充分利用上機實驗課時間、教師輔導的機會和與同學交流的機會,最大程度上發揮實驗課的作用。教師對實驗準備、過程和結果的評價都要在實驗成績中體現出來。
(3) 培養良好的程序編寫習慣[3]
數據結構課程的學習過程也是復雜程序設計的訓練過程,程序除了能調試通過外,還要求學生編寫的程序結構清楚和正確易讀,符合軟件工程的規范。良好的編程習慣需要在不斷的實踐中逐漸養成,而且很大程度上影響學生的上機實驗效果。因此,教師可以在以下幾個方面注意引導學生培養良好的編程風格:
良好的代碼書寫格式。采用良好的書寫格式使代碼可讀性強,便于調試和交流,但一些學生覺得麻煩、沒必要,這需要教師在教學和實踐過程中強調和引導學生認識到書寫格式的重要性,并逐步形成良好的代碼格式書寫習慣。
良好的注釋習慣。注釋是程序的一個重要組成部分,它可以使代碼更容易理解。而很多學生認為沒有必要寫注釋或者程序調試完后再象征性地補加注釋,教師要強調注釋的重要性,引導學生逐步養成良好的注釋習慣。
標識符合理命名。教師要強調標識符命名規范的重要性,標識符命名要清晰、明了,有明確含義。
重視實驗報告的書寫。實驗報告除了實驗目的、實驗內容、實驗步驟和算法分析等常規內容外,需要重視實驗中出現的問題、解決的辦法、實驗改進的想法這三項內容的書寫,這樣可以培養學生實驗后總結積累經驗的習慣,提高學生分析、改進算法的能力。
(4) 在實踐教學中要注意進行分層次的個性化教學。從不同學生的實際專業水平、基礎出發,來設計不同難度的實驗題目,給出不同的實驗條件和要求,盡量讓所有學生通過自己的努力獲得實驗的成功并掌握基本知識,在解決問題的過程中體驗學習的樂趣和成就感,從而最大程度地提高學生實驗的積極性。例如,對堆??梢栽O計基本操作實驗(建棧、出棧、入棧、銷毀棧等)和后綴表達式求值實驗,學生可以根據自己的實際情況來選擇完成。另外對于難度小的實驗要求每個學生獨立完成,而對實驗難度稍大的允許以2到3人的小組形式完成或給出部分代碼或提示。在實踐教學中對不同水平的學生給予不同的輔導方式,例如,對水平偏低的學生需要在實驗課中給予重點面對面的輔導,而對于水平較高的學生可以在網絡教學系統中重點輔導。另外為了保證上機實驗課的順利進行,在條件允許的情況下應多安排1到2名輔導老師,或者選擇大三、大四學生中學習成績優秀、實踐能力強的來承擔一部分輔導任務,不僅彌補了輔導教師少的不足,而且促使這些學生更深入地進行學習。
(5) 充分利用網絡輔助教學。通過使用清華大學的數據結構網絡練習系統,學生可以課外上網編寫算法并編譯、提交,教師可以在網上查看學生的作業情況并隨時回復、輔導學生,完全不受時空限制。通過教學ftp和博客等網絡方式師生可以互動交流,資料共享等。網絡可以拓展學生學習的空間、時間和方式,有助于提高教學效果。
(6) 改革考核方式,引導學生加強實踐。數據結構是一門理論和實踐性都很強的課程,理論指導實踐,也只有通過實踐才能加深對理論的理解和掌握。考核方式和內容引導學生的學習方向,因此要提高數據結構的教學質量,把好考核這一關也非常重要。數據結構的考核可以結合使用多種考核方式,考核成績的組成可以包括平時成績、期末筆試成績、期末上機考試成績以及課程設計成績,其中平時成績要綜合考慮實驗準備、過程和結果情況,以及上課回答或提出問題等情況,課程設計也可以考慮采取小組形式完成并結合答辯情況給出成績。
(7) 施加適當的壓力督促學生積極配合教學并體驗學習,進而獲得成就感,提高學習興趣[4]。
教師的教學過程和學生的學習過程是兩個既有聯系又有區別的過程。從學生的學習過程來說,學生是受教育的主體,是學好的內因。教育者是客體,是學生學好的外因。內因是事物發展的根本原因,外因只有通過內因起作用。教育“以愛動其心,以嚴導其行”,啟發、誘導、影響學生內在的積極性、主動性,但這種啟發、誘導能不能發生作用歸根到底還決定于學生內在矛盾因素。
因此,教師除了從自身教學過程的角度出發努力采取各種措施來提高學生學習的興趣和熱情外,還需要從學生學習過程的角度出發來分析解決問題。學習的興趣和積極性的培養效果最終取決于學生這一內因,必須采取措施督促和保證學生最大程度地投入到學習中,在學習過程中真正體驗到學習的樂趣,進而激發內因的變化。比如,在考核方式中加大平時上機實驗和課程設計部分的成績比重,并采取嚴格的考核方式(比如課程設計逐人答辯形式等) “以嚴導其行”。壓力產生動力,學生不管興趣是否濃厚都需要達到基本的要求,在完成任務的過程中學生可以實實在在地體驗學習,才有可能逐步提高學習的興趣和積極性。
另外針對我院計算機系生源的實際情況,也需要全體教職工努力做好部分學生的思想工作:提醒學生不要首先在心理上不停地暗示“不喜歡”和抵觸專業學習;明確自己四年的任務“我選擇,我喜歡,至少我要努力嘗試喜歡”;鼓勵學生勇敢面對自己的選擇并盡自己最大的努力學好;從學生就業、考研和未來發展的角度幫學生分析利害關系,督促學生進一步端正學習態度等。
3 結論
數據結構課程在整個計算機學科的知識體系中具有非常重要的地位和作用,而數據結構的理論性、實踐性、邏輯性都很強。教師只有在教學過程中結合學生的實際情況,優化教學內容和方式,采用直觀形象、形式多樣的教學方法和手段,充分重視實踐教學的重要性,理論聯系實際充分調動學生學習的積極性,使學生較好地掌握各種數據結構和算法并提高分析解決實際問題的能力,切實提高教學的質量,才能發揮數據結構在計算機學科知識體系中應有的作用。
參考文獻
[1] 嚴蔚敏,吳偉民. 數據結構(C語言版)[M]. 北京:清華大學出版社,1997.
[2] 顧翔. 數據結構實踐教學探討[J]. 信息技術,2005,(30):110-112.
數據結構課程設計總結范文6
關鍵詞:數據結構;建構式教育理論;理論教學;實踐教學
近年來,在產業界急需大量軟件開發人員的情況下,普通本科院校計算機專業學生的就業率持續走低。網絡、報紙等媒體對計算機本科教育現狀多有批評,甚至出現了大學不如培訓公司的極端觀點,嚴重影響了學生對專業課程的學習興趣、動力和信心。數據結構是計算機專業的核心基礎課程,上承程序設計語言、離散數學,下啟操作系統、編譯原理等課程,其重要性不言而喻。一方面,數據結構學科具有難度大、抽象層次高、概念繁雜等特點,學生很難掌握,更不要說將抽象理論與就業實踐需求相結合。另一方面,國內主流數據結構教材和相應的傳統教學模式側重于培養學生的計算機學科基礎理論素養,而將如何通過組織數據結構教學活動積極推動就業的問題留給了任課教師[1]。這造成了學生學習數據結構的目標不明、信心和動力不足。筆者面向就業需要明確了數據結構的兩大主要教學目標,并在實際教學過程中實踐建構式教育理論,嘗試解決學生對專業認識不清、學習興趣不足、編程基礎薄弱等問題。一些做法得到了學生的認可和配合,成功地激發了學生的學習主動性、在一定程度上培育了學生的創新精神。
1面向就業需求的數據結構教學目標
教育要服務于社會生產需求。數據結構教學也必須緊扣這一根本目標。本節從滿足就業需要的角度闡明了數據結構教學的兩個主要目標:
1)培養超越具體程序設計語言技巧的編程技術。
現階段是一個傳統的生產生活方式迅速向電子化、信息化轉變的時期。人們需要開發和維護更多、規模更大的計算機系統來滿足生產和生活的需要[2]。這就決定了具有熟練編程技術的程序員在很長時期內都將受到產業界的青睞。大學對學生編程技術的培養始于程序設計語言的教學,如C語言,Java語言等。但是現今編程語言繁多,各種新概念層出不窮,常常出現學生無所適從或者質疑某門語言課程已經過時無用的現象。甚至很多教師也在爭論講授何種編程語言。筆者看來掌握編程技術(而不僅僅是語言),回歸編程的本質問題更加重要,無謂地追趕時髦不可取。作為編程語言課程的后續,數據結構教學的重要目標就是幫助學生理解編程的本質、鍛煉編程技術以及學習提高編程技術的方法。
2)培養圍繞復用的軟件開發方式。
隨著軟件規模的日益增大,軟件開發模式逐漸從“從無到有”的模式過渡到“從有到有”的模式,即復用現有的豐富的軟件資產,開發新的應用系統。事實上,復用的思想已經被廣泛的用于軟件開發實踐之中,從各種各樣的程序庫、軟件開發包、軟件構件、Web服務等各種可復用資產已經簡化了軟件開發的難度、提高了軟件開發的效率也極大地改變了軟件開發的模式。數據結構學科本身就是對軟件復用思想的一種實踐,它通過總結大量軟件系統中反復出現的數據結構(如表、樹、圖、集合等),定義和實現處理這些數據結構的基本操作,最終達到能夠在不同項目開發中反復應用的目的。這些基本數據結構和算法已經被實現為可復用的產品隨著程序設計語言,如C++STL、C#collections,Javacollections等,并得到了廣泛的使用。因此,數據結構教學的另一個重要目標就是引導學生習慣圍繞復用的軟件開發方式,能夠使用和定制已有的數據結構和算法庫。
其他傳統的數據結構教學目標,如培養學生面向實際問題進行算法設計和分析的能力,培養學生計算機學科的基本理論素養和思維方式等也非常重要。但普通本科院校學生對理論內容的接受能力以及將理論和現實就業需求相聯系的能力相對較弱且教學時間有限[3],筆者認為重點突破本節給出的兩個更具體、更可達的教學目標,并在實現這種具體教學目標的過程中潛移默化地培育學生的計算思維和理論素質,將會取得更佳的效果。
2建構式數據結構教學
教學理論研究以及教學實踐反饋均表明,學生主動學習的效果遠較被動地接受老師灌輸的效果好的多。因此,為實現上述教學目標,在建構式教育理論的指導下,筆者探索并采用了一系列建構式教學措施,激發學生的主動性和興趣,取得了較好效果。
建構主義認為,學習并非學習者對教師所授知識的被動接受,而是學習者以自身已有知識和經驗為基礎的主動建構過程[4]。
2.1理論教學措施
課堂教學是數據結構教學活動的主要部分,充分利用課堂教學時間,激發學生學習數據結構的興趣和信心,幫助學生建立學習數據結構的環節非常重要。我們采用了如下措施:
1)組織小型討論。
好的開始是成功的一半,好的課堂教學須在上課之初就抓住學生的注意力,讓學生帶著輕松、愉快的心情聽課。我的做法是在課堂的前5分鐘,提出一個學生感興趣的話題,組織若干個有3~5位同學參與的小型討論。到一個學期結束時,每位同學都有至少一次的發言機會。討論的主題可以靈活設置,如時事、技術、社會熱點等。有時,課堂中間學生比較疲憊、注意力下降的時候,也可以穿插一點討論,改善課堂環境。大多數學生非常喜歡這種討論活動,積極參與其中,成為課堂的一部分,從被動上課轉變為喜歡上課。
2)重建理論知識所針對的問題。
國內的經典數據結構教材側重嚴謹的理論,較少討論各種概念、算法出現的背景以及探討的問題是否仍然具有現實價值。而回答這些問題能夠幫助學生重建理論知識所針對的問題原型,重現解決方案的提出、發展乃至最終成熟的整個過程,更有助于培養學生解決實際問題的能力,養成批判性、創新性思考的習慣。
2.2實踐教學措施
數據結構是幫助具有基本編程語言基礎的學生錘煉編程技術的關鍵課程。它揭示了程序設計的基本面,即如何處理相互之間存在一種或多種數據關系的數據元素所構成的集合、如何設計算法并分析算法的優劣。
2.2.1實驗內容設置
實驗內容設置是進行實踐教學的最重要部分。從覆蓋知識點的角度看,實驗內容須面向數據結構教學目標,即實驗內容須能夠鍛煉學生的編程技巧,如算法設計、調試、測試以及調優等能力,還能夠讓學生體會到圍繞復用開展軟件開發的威力以及思路。從覆蓋教育對象的角度來看,實驗內容須面向大多數同學并充分考慮優秀同學,即實驗內容須劃分不同的層次,讓大多數學生能夠很容易入手,并讓有能力、有余力的學生能夠不斷地深入,直至形成綜合型課程設計。
2.2.2實驗考核手段
考核手段在教學環節中至關重要。考核手段是學生學習和鍛煉自身能力的風向標。為保證每位同學都能積極完成實驗并有所收獲,避免抄襲和敷衍的現象,筆者采取了綜合型的考核手段。
3應用中遇到的問題
建構式教學模式在應用和推廣過程中遇到的主要問題來自三個方面。其一,目前學生的課業負擔較重,習慣于被動“填鴨”而不習慣于主動“求索”,這是推動和開展建構式教學模式的主要障礙。其二,建構式教學活動,需要師生的密切交流,但現有師資不足難以滿足實際需求。一個可能的解決方法是綜合多門課程和多個老師,建構整體的知識框架和學習體系,避免課程教學中的重復勞動,提高師資的利用率。另一個可能的解決方法是利用互聯網技術,建立在線教學園地。其三,建構式教學模式仍然處于探索階段,各學科缺乏建構式教學素材。從筆者在實踐教學的體驗來看,應盡量從學生的學習背景和能力成長規律出發而不僅僅是從學科背景出發,為學生建構知識體系設計更平滑的路線。
4結語
筆者提出將“培養超越具體程序設計語言技巧的編程技術”和“培養圍繞復用的軟件開發方式”作為普通本科院校的數據結構教學目標,在建構式教育理論的指導下,設計并實踐了一系列建構式教學措施,分析了應用建構式教學模式所遇到的一些問題。
未來將開展兩個方面的工作。一是通過問卷調查、統計分析等手段定量地分析建構式教學方法的實際效果;二是創造和積累建構式教學素材,如研究數據結構課程設計過程中不同類型學生的知識建構路線,挖掘并推廣其中優秀的知識建構方法。
參考文獻:
[1]教育部高等學校計算機科學與技術教學指導委員會.高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(試行)[M].北京:高等教育出版社,2006:8-101.
[2]蔡敏,鄭尚志,梁寶華.“數據結構”課程教學改革之我見[J].計算機教育,2009(4):50-51.