真人一对一直播,chinese极品人妻videos,青草社区,亚洲影院丰满少妇中文字幕无码

0
首頁 精品范文 數據結構與算法

數據結構與算法

時間:2022-08-05 19:32:01

開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇數據結構與算法,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。

第1篇

關鍵詞:算法;數據結構;相關性

中圖分類號:TP311 文獻標識碼:A

算法與數據結構包含了選取的算法、存儲必備的方法、擬定的操作規程。解析數據結構,這類思路有著凸顯的導向,它關系到培育的抽象認知。構建精準的某一程序不可缺失算法、搭配的數據結構。辨識了二者的多重關聯,設定最適宜的邏輯框架以此來便于擬定程序。把控各類的算法,側重去養成合適的設計風格,適應日漸復雜的新算法。

一、選取線性鏈表的實例

計算機科目包含了選取的算法、相關數據結構。從實質上看,算法及特有的數據結構并非沒有關聯,它們是聯系的。變更了分開的思路,側重了相關性。依循了算法的主線,多樣的數據結構都被融匯于設定的這一算法。解析了相關性,借助于預設的程序語言來區分二者。經過探究可得:數據結構及算法擁有內在的深層關聯,二者不可割裂。把控根本的某一數據結構、辨析存儲結構,還要關聯著可控的算法。這樣做揭示了深層的二者關聯,符合了變化的科目需要。

二、算法編程的語言

設計算法含有:初期擬定的模式、面向對象狀態下的編程、泛型的編程。融匯這樣的要素,構建可得適宜的算法。設定某個二元組,用它來代表數據結構。在二元組內整合了多重的數據元素,這樣的基礎上又創設了集合關系。經由抽象可得細化的數據類別。這類算法添加了靈活優勢,且很易被調用。

相關性涵蓋著泛型編程特有的途徑,它被設定成典型。泛型編程抽象可得更完備的、精細的新集合,借助于它來代表算法。整合了多態模板,可被重復去調用,獲取了更高水準的算法組件。經由自主的定義,明晰了數組內的一切元素,集合可得新類別。數據類型含有:堆棧及常見的表、二叉樹、隊列及圖形等。表述這樣的抽象數據,依循了面向對象的表述途徑,支持表述語言。提煉獲取了算法模式,遇有近似的數據結構都可依照凝練的這一算法予以運算。先要預設模塊,擬定細化的類別及關聯的行為。

三、算法的演示流程

線性鏈表的算法依循了面向對象路徑下的解析,選取單鏈表整合了細化的較多數據項。歸結了線性表、樹形圖及隊列等。依循繼承的演算即可獲取雙向架構的這類鏈表,演算的流程為:

四、探析實現的路徑

構建神經網絡依照的根本思路為:最小二乘算法。要調整擬定的權值,借助于梯度搜索來平衡輸入及輸出的誤差。從現狀看,BP網絡是最為常見的一類神經網絡,它整合了輸入及輸出,構建了雙重的映射。數據結構及算法凸顯了實踐的特性,側重培育本源的抽象思路,增添了實踐類的新技能。創設新穎的算法,要考量真實的關聯。實現的路徑為:解析某一疑難、設計可用的算法、設定編程。

算法及創設的數據結構可延展至自動檢索館內的書目、調配交通燈、求解某一迷宮。這類算法都不可脫離生活,增添了真實性。針對于線性表,要驗證它關聯的鏈式流程。模擬退耕還林,解析最適宜的需求。這樣的基礎上,創設了彼此關聯的精準數據結構。經由后續的細化設計,編碼而后再次去調試。例如:在選修課程時,要擬定明晰的科目名稱、依循的次序等。設定拓撲次序來指引后續的選修流程,可創設AOV特有的算法網絡,布設頂點次序用作表述可篩選的課程。

探析相關性還可選取壓力傳感器,它含有噪聲的干擾、振動這類的干擾信號。可構建采樣電路,壓力傳感器增設了輸出信號。BP網絡可采納任一精度來逼近連續函數,只要選取了適宜的神經元數即可。它包含著隱層,神經網絡在任一精度層級內都能表現出非線性的映射。可以先去生成初始的加權系數,采納梯度搜索以便修正原有的系數。不斷予以修正,直至誤差的均方符合了擬定要求,才可終結這一流程。為濾除干擾,經由EMD這樣的濾波以此來獲取信號。經過后續的分解,可得測重必備的穩態單值信號。

結語

算法關系著數據結構,解析現有的課節內涵,增添探究中的濃厚興趣。演示某一算法要側重相應的數據結構。經由慎重的演算才能縮減后續編程的偏差,培育審慎嚴謹的風格。授課中要增設必備的指引,提出某一疑難而后摸索并化解。歸結零散的現有知識點,做好舉一反三。

參考文獻

[1]李曉鴻,駱嘉偉,季潔.“數據結構與算法分析”研究型實踐教學的探索[J].實驗室研究與探索,2012(01):121-125.

[2]劉曉靜,黃維通,王曉英.西部地區CDIO理念下的數據結構與算法課程建設[J].計算機教育,2013(17):107-111.

第2篇

關鍵詞:數據結構;算法;教學策略

數據結構與算法是計算機專業的一門核心課程,不僅是程序設計的基礎,而且是設計和實現編譯原理、操作系統、數據庫系統等系統程序和大型應用程序的重要基礎。本課程主要研究非數值計算的程序設計問題中所出現的計算機操作對象、數據之間的關系、數據的操作、算法復雜性分析等內容,教學的突出難點是知識的抽象性和動態性,學習過程也是復雜程序設計的訓練過程,理論性和實踐性均較強。由于學生基礎知識不牢固,再加上課程本身內容抽象,有一定難度,學生普遍反映該課程“難懂、難做、難用”。針對這個問題,本文從教學方法、學習方法入手,進行了教與學的分析和探討。

1教學存在的問題

1.1先導課程不扎實

數據結構與算法課程的先導課程有高等數學、高級程序設計和離散數學等。學生在學習該課程前必須能夠較好地掌握這幾門課程。例如,算法分析的研究必須要以一定的數學理論為基礎;非線性結構的分析必須用到圖和樹的基本知識。另外,數據結構中的算法大多由類C、C++或C語言描述而成,雖然C語言在高級程序設計課程中已經學習過,但由于學生剛剛開始接觸高級程序設計語言,難度較大,用起來就比較困難。尤其是指針、結構體部分是C語言中學習的難點,而這些又是在數據結構中頻頻出現的用法,學生遇到算法時往往感覺很吃力,實驗課也遇到很大困難。在數據結構課堂教學中,老師往往要花一部分時間在C語言的復習上。盡管如此,學生仍然模糊不清,教學效果不理想,久而久之,有些學生甚至失去了學習興趣。因此,先導課程掌握不扎實,給數據結構課程的教學埋下了隱患。

1.2課程內容抽象復雜

課程主要介紹兩部分內容,一是數據結構,二是算法。數據結構部分包括線性結構、樹形結構和圖形結構,教材都用抽象數據類型描述,內容抽象不生動,加之學生C語言基礎不牢固,理解類C語法困難,因此學起來比較吃力。而算法部分在數據結構基礎上展開,包括排序算法、查找算法等,是棧、圖、樹等數據結構的綜合應用,雖然這部分有很多實例輔助,但這些算法涉及的知識較多,都是基于數學模型及其基本操作基礎上的研究,而且主要是基于算法思想的研究,不易理解,因此相當一部分同學學習到這里時,心理上感到恐懼,難度非常大。

1.3實踐能力缺乏

數據結構與算法是一門理論與實踐并重的課程。課程的教學要求之一是訓練學生進行復雜程序設計的技能和養成良好程序設計的習慣,其重要程度決不亞于知識傳授。對涉及的題目,要求學生要能用相應的數據結構和算法解決,提高分析和解決問題的能力。因此在整個教學過程中,完成上機實習是個至關重要的環節。假設每周授課學時為4學時,那么學生每周至少應有4個機時同步實踐算法。但是,在實際教學中,實驗平均每周1.2機時左右,缺少的時間只能靠學生課后自覺完成,但是多數同學不能完成。由于實踐輔助不足,理論課上的算法也就變成了“紙上談兵”,學生學得膚淺,也比較枯燥乏味,對剛剛接觸這門課的學生來說,總有一種不知所措的感覺,教師在講授這門課時也是困難重重,成績平平。

2提高教學效果的思考

2.1重視前導課程的復習

牢固的前導課程知識是學習數據結構與算法的前提條件。離散數學是計算機科學的數學基礎,所提供的訓練十分有益于提高概括抽象能力、邏輯思維能力、歸納構造能力,有益于培養學生嚴謹、完整、規范的科學態度。因此,學好離散數學將為后續課程的學習打下扎實的基礎。在教學中,教師可以對部分前導課程內容加以復習,這樣學生一方面感受到前導課程的重要性,一方面又建立起前導課程同數據結構的內在聯系,對學生學好數據結構起到積極的作用。

另一門非常重要的前導課程是高級程序設計,其中C語言的結構體和指針是描述存儲結構的基礎,靈活地運用指針可以處理各種復雜的數據結構。在教學中,教師要從注重語言語法轉變為注重學生編程能力的培養,要統籌安排各部分內容的授課時間,保證指針、結構體和函數等內容有足夠的教學時間。由于C語言學習一年后才開設數據結構與算法,因此在開展數據結構教學時,要給學生復習C語言的知識,并布置復習任務,尤其是與數據結構相關性大的部分。在教學過程中,教師可以結合學生的學習狀況和相應算法,再適當補充必要的C語言知識,抓住兩門課程的銜接點實施教學。例如,要重點復習數組、結構體、指針等在程序中的具體應用,用一周的時間回顧C語言知識,讓學生上機實驗。

2.2理清知識體系脈絡

數據結構與算法的知識點雖然比較多,但其主體知識框架是非常清晰的。大多數教材都以數據的邏輯結構為主線,順序介紹線性結構、樹形結構、圖形結構和文件結構,介紹每種數據結構時都討論其存儲結構及相關算法。例如對于線性表,如果考慮到存儲,可以分為數組方式存儲和鏈表方式存儲;考慮到運算的特殊性,則可以分為棧、隊列、串、數組和廣義表。對于一些比較重要的算法,再列出單獨的章節來討論,例如排序、檢索、存儲管理等。每個章節之間既相互獨立,又相互聯系。教學中,教師要抓住主線,理清其內在聯系,對整個內容進行有機組合,合理安排,了解課程的知識框架和各種結構的關系后,從簡單到復雜、循序漸進、逐步深入地實施教學。

對于每個章節的內容,也應按照一定的流程展開學習。例如,首先掌握每章節的基本概念,再熟悉該結構的抽象數據類型定義和主要操作的實現方法,然后要理清算法實現的思路以及算法實現的框架,最后通過上機調試進一步掌握該算法。

學生對學過知識的印象是分散的、片面的,無法將知識銜接起來,舉一反三。這就要求教師在教學過程中承前啟后、不斷總結、及時復習、注重理解。以鏈表學習為例,在線性表章節學習了單鏈表、雙鏈表及循環鏈表,它們三者是相互關聯、層層深入的。而后面章節中樹的鏈表表示法、圖的鄰接表和逆鄰接表表示法、鏈地址法解決哈希表沖突都是鏈表的具體應用。在授課的時候,教師應注意復習前面的內容,把有聯系的內容相互串聯起來,使學生形成一個完整的知識體系。

在教學過程中,教師不必拘泥于教學大綱的內容,可以對教學內容進行有機整合,并不斷吸收新內容、新知識和考研內容??梢詫虒W內容進行適當的拆分和重組,做到突出重點、細化難點。

2.3重視課堂教學的趣味性

第3篇

關鍵詞:算法與數據結構;學習興趣;影響因素;實踐性教學

算法與數據結構是一門處于計算機學科核心地位的技術基礎和主干必修課,著重于培養學生的數據結構與算法設計能力、程序設計和實現能力。學生通過對數據結構設計方法的系統學習與研究,理解、掌握、設計和應用數據結構的主要方法,培養對算法的計算復雜性進行正確分析的能力,為獨立地設計算法和對給定算法進行復雜性分析奠定堅實的理論基礎。這些能力對從事計算機系統結構,系統軟件和應用軟件研究與開發的科學工作者是非常重要和必不可少的。

福州大學算法與數據結構課程是國家級精品課程,課程建設的一個重要目標是有效地提高教學效果,激發學生的學習興趣。圍繞這個目標,我們在課程建設過程中進行了以下教學改革:(1)加強了課程的實踐性環節;(2)采取師生互動式教學;(3)建立課程成績的綜合評價模型。

顯然,這些教學改革措施與學生學習興趣之間是互相影響的,好的教學方法對提高學生的學習興趣有一定的作用,但學生的學習興趣對教學改革的效果也會有一定的影響。學生的學習興趣與環境因素有一定的關系[1],探索和分析對學習興趣有影響的因素是教學理論和實踐中的一個重要課題。為了更好地做好算法與數據結構的教學改革工作,有效地激發學生的學習興趣,了解學生對于目前的教改方案的看法,我們對福州大學計算機專業本科生進行了學習興趣及相關因素的調查和分析。

1方法

1.1調查方法

數學與計算機學院2007級本科生在二年級上學期學習算法與數據結構課程,課程教學于2008年12月結束。課程教學小組教師于2009年3月向2007級全體本科生發放調查問卷,于一周后回收問卷,共有學生281人,問卷回收281份,回收率100%。

1.2調查內容

調查內容分為三部分:(1)學生的基本情況、專業基礎課學習情況。專業基礎課主要指數學分析、線性代數、高級程序設計語言和離散數學。(2)對算法與數據結構教學改革的評價。(3)課程學習興趣量表。

學習興趣量表是參考物理學習興趣量表[2]編制而成的(見表1)。量表共有17個條目,將每個條目的得分相加得到量表的總分。以量表的總分作為反映學生對于算法與數據結構課程的學習興趣指標。得分≥13分者為“學習興趣很高”,得分在8~13分者為“學習興趣較高”。該量表用于281名學生的學習興趣測量,得到其Cronbach可靠性系數 =0.8465,說明該量表能夠有效地測量學生對于算法與數據結構課程的學習興趣。

1.3分析方法

對各因素與學習興趣之間的關系用描述性統計分析和Wilcoxn秩和檢驗進行比較,采用多元回歸[3]的方法分析影響學習興趣的主要因素。全部檢驗采用雙側,以P

2結果分析

2.1學生的基本情況及學習興趣

在本次調查的281名學生中,男性239人(占85.05%),女性42人(占14.95%),平均年齡20歲。學生的家庭居住地分布見表2。在課程開始之前的學期中曾參加過“國際大學生ACM程序設計競賽”培訓的學生有57人,占20.28%。

在281名學生中,學習興趣量表的平均得分是8.12分,標準差是4.37分。有16.01%的學生的得分超過13分(學習興趣很高),有39.15%的學生的得分在8~13分(學習興趣較高)。

2.2學習興趣與課程成績的關系

在281名學生中,“算法與數據結構”課程綜合評價成績在優(≥85分)、良(70~84分)、及格(60~69分)和不及格(

2.3與學習興趣有關的因素

男生和女生的學習興趣平均分分別為8.24分和7.40分,差別無顯著性(P>0.05)。城市、縣、鄉以及農村生源的學習興趣平均分分別為8.69分、7.88分和8.05分,差別無顯著性(P>0.05)。在課程開始之前曾參加過“國際大學生ACM程序設計競賽”培訓的學生和從未參加過競賽培訓的學生學習興趣平均分分別為10.40分和7.54分,差別有高度顯著性(P

有66.9%的學生認為作為未來的計算機專業技術人員,學習算法與數據結構課程是很有必要的,這些學生的學習興趣平均分是8.66分,而認為不是很必要或不必要的學生(占33.1%)的學習興趣平均分是6.64分,二者差別有高度顯著性(P=0.016)。

學生的四門基礎課程成績除數學分析之外,其他課程成績均與學習算法與數據結構的學習興趣有關(見表4)。

2.4對課程教改的評價

目前算法與數據結構課程的總學時為90,其中理論課50學時,實習課和實踐性教學共40學時。在281名學生中,認為課程總學時設置偏少、合適、偏多的同學分別有41.64%、40.57%和3.2%;認為理論課教學內容偏少、合適、偏多的同學分別有20.28%、47.33%和10.32%;認為實踐性教學內容偏少、合適、偏多的同學分別有13.17%、61.92%和11.39%;對互動式教學很感興趣、不感興趣、很不感興趣的同學分別有37.01%、27.05%和7.83%;對于課程成績采用綜合評價模型評定的方法,認為很合理的同學有69.04%,認為不如傳統考試方式的同學占8.10%。

2.5學習中存在的主要問題

在本次調查中,學生在學習中自感存在的主要問題如表5所示。有一定比例的學生存在的問題是與教師的教學有關,提高教學的語言藝術水平,注重用通俗易懂的語言講授,把握好適當教學進度是下一步改進教師教學效果的主要措施。

3分析

本次的調查結果顯示,學生的學習興趣和算法與數據結構課程成績之間存在正相關關系,學習興趣越高,課程成績越好。這提示我們在今后的算法與數據結構課程建設工作中要積極探索如何更有效地激發學生的學習興趣。

從本次調查結果可知,學生的學習興趣與學生的專業基礎背景有一定的關系,尤其與學生在一年級時學習的專業基礎課程如線性代數、離散數學、高級程序語言這幾門課程的學習情況有關,在這些課程中,學習成績較好的同學后續學習算法與數據結構課程的興趣也較高。由于算法和數據結構中涉及了許多對算法進行分析的數學工具,因此學好這些課程是學好算法與數據結構課程的基本概念和知識的基礎,同時,學好這些課程也可以增強學生的學習信心,有利于提高學習興趣。

除專業基礎課程之外,與學生學習興趣有關的另一個因素是對學習算法與數據結構課程必要性認識。調查結果顯示,雖然有66.9%的學生認識到作為未來的計算機專業技術人員,學習算法與數據結構課程是很有必要的,但是仍有33.1%的學生對此沒有認識,這反映出有些學生對于課程的學習比較盲目,學習目的性不明,從而學習動力和興趣不足。因此,今后的課程建設要進一步加強實踐性教學和以案例為先導的理論課教學,案例可以取自教師的實際科研課題,也可以是企業或其它實體的實際課題。通過讓學生接觸這些實際案例,引導學生樹立算法與數據結構課程學習重要性和必要性的認識。要做到這些,對教師的自身業務素質有較高的要求,因此,培養一支高業務水平的教師隊伍也是課程建設的重要任務。

從2000年開始,在大學一年級學生中開展“國際大學生ACM程序設計競賽”培訓班,有許多學生都積極參加了程序設計競賽培訓。本次調查顯示,一年級時參加了程序設計競賽培訓的學生,后續學習算法與數據結構課程的興趣高于不參加的學生。由于程序設計競賽培訓主要是訓練學生的算法設計與實現的能力,通過參加培訓班的學習,可以使學生的實際動手能力得到鍛煉,從而使學生能靈活運用所學的知識來解決實際問題。因此,教師應當鼓勵學生在學有余力的情況下,積極參加“國際大學生ACM程序設計競賽”培訓,以提高學生的專業素質和技能。

本次的調查結果顯示,實施教改方案后,有超過50%的學生對于學習算法與數據結構課程有高和較高的學習興趣。這在一定程度上反應出教學改革取得了一定的成效,有效地激發了學生的學習興趣;此外,課程成績綜合評價方式也得到了同學們的歡迎,有60%以上的同學對于課程成績的綜合評價方式給予了充分的肯定。這種課程成績的綜合評價方式結合課程實踐和平時的努力來評定成績,避免了傳統的考試方法重理論輕實踐,一張試卷定成績的弊端,應而能客觀地評價學生的學習成績,這種成績評定模式是今后要繼續堅持和不斷完善的。

課堂互動式教學是教學改革嘗試的內容之一。但是,在本次調查中,有34.88%的學生對互動式教學不感興趣。互動式教學具有活躍課堂氣氛,有效激發學生的計算思維能力的優點,但有如此高比例的學生對此不感興趣,這反映出教師在課堂上與學生的互動存在一定的問題。不斷摸索出有效的互動式教學方法是今后課程建設和教學改革的工作之一。

就學生們學習中存在的主要問題,與教學相關的有:不理解教師對教學內容的表述和不能跟上教師的講課進度。因此,提高教學的語言藝術水平,注重用通俗易懂的語言,深入淺出地講授教學內容,適當把握好教學進度是下一步改進教學效果的主要改革方向。

4結語

通過對算法與數據結構學習興趣影響因素的分析,我們更加認識到學習興趣對教學質量的提高具有重要的促進作用。教學質量與學習興趣兩者既有共性特征,也有各自的個性特征。在課程的教學中要通過多樣化的教學形式,增進教師感染力,激發學生的學習興趣,充分調動學習積極性,不斷提高教學質量。

參考文獻:

[1] 張煥庭,李放. 教育辭典[M]. 南京:江蘇教育出版社,1989:23-45.

[2] 高光珍,胡象嶺,劉生慶. 中學生物理學習興趣量表的修訂與檢驗[J]. 物理教育探討,2004,22(23):16-18.

[3] 何曉群. 現代統計分析方法與應用[M]. 北京:中國人民大學出版社,1998:102-123.

[4] 高惠璇. SAS系統 SAS/STAT軟件使用手冊[M]. 北京:中國統計出版社,1997:112-169.

Analysis of the Relationships between Learning Interest of Algorithms and

Data Structures and Influencing Factors

WANG Xiao-dong1,2, WU Ying-jie2, YU Chun-yan 2, WANG Yi-lei 2, FU Yang-geng 2

(1. College of Computer Science, Quanzhou Normal University, Quanzhou 362000, China;

2. College of Computer Science, Fuzhou University, Fuzhou 350002, China)

第4篇

關鍵詞:數據結構;課程設計;創新能力;團隊精神

中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2016)32-0139-02

算法與數據結構課程設計是在理論課程之后的綜合性實踐教學環節,是理論教學的補充與延伸,是一門非常重要的開放性實驗課程。該實踐教學是軟件設計的綜合訓練,包括如何分析實際問題、如何進行總體結構設計、如何進行用戶界面設計等。要求學生在課程設計中逐步提高程序設計能力、調試能力,逐步培養算法分析能力、創新能力和團隊協作精神,并初步培養科學的軟件工作方法和撰寫規范的軟件文檔的能力。

1 課程設計中存在的問題

課程設計的教學是整個數據結構教學環節別重要的一個環節,其重要性已得到了普遍的認可,但實際教學效果往往不太理想,主要存在以下幾個方面的問題。

1.1 編程基礎差、軟件開發思想欠缺

C/C++語言程序設計是數據結構的先導課程。盡管之前學生已學過這些課程,但由于語言本身規則復雜,面向對象的思想更是不容易掌握,再加上學生沒經過系統的軟件開發訓練,導致學生普遍存在編程基礎差、調試能力弱、代碼編寫可讀性差、拿到問題不事先做需求做規劃就急于寫代碼等,這些都制約著學生完成任務的質量。

1.2 時間安排不合理

一般數據結構課程設計的時間安排在學期末的1-2周內,但是由于這個時候各門功課的復習及考試工作已經展開,學生為了備考,往往應付了事,能力差的學生為了考試不掛科,往往選擇最基礎的題目;能力強的為了考試考出好成績,也會選擇難度系數較低的題目,都是只求順利過關,用在課程設計上的時間和精力非常有限,能夠真正將心思花在課程設計上的學生更是少之又少,這樣就根本談不上創新能力和團隊協作能力的培養。

1.3 選題缺乏統一標準

現有的課程設計教材很難適應所有的院校,而且選題難度區別不大,并未形成應有的層次。其中一些選題還能直接從網上或從資料上獲得解答,導致學生中抄襲現象明顯,課程設計并不能達到我們事先預期的教學效果。

1.4 教師的指導或多或少

整個課程設計中,教師的指導不可缺少但又不能面面俱到。而在現行的課程設計教學中,有的教師,什么都講得清清楚楚卻制約了學生的創新能力;有的教師公布選題后,由學生根據選題自己獨立完成設計工作,對自己對學生完成設計的過程關注指導太少,這樣學生遇到問題后不能及時解決,就會去拷貝一個,從而失去了做課程設計的意義。

1.5 課程設計報告缺乏統一規范

規范文檔的撰寫能力是課程設計需要培養的又一大能力。有些教師一開始不給學生規范的設計文本,學生交上來的報告五花八門,根本不像軟件設計文檔。

1.6 考核機制不完善

一直以來,課程設計報告被很多教師作為評定課程成績的重要依據,而對學生完成課程設計的課程關注不多,這樣就不能考察出學生的真正實踐操作能力,從某種程度上講,可以說是輕重倒置了,課程設計的教學效果自然不理想。

2 實施方案和問題對策

為了實現教學目標,我校制定了規范的課程設計流程,如下。(1)任課教師先布置課程選題,提出實現要求和完成任務流程,然后選取有針對性的問題,跟學生進行示范性、啟迪性地剖析與講解,要求學生必須按流程一步一步進行;(2)學生根據老師提供的選題,填好選題表并提交;(3)學生根據選題,寫出需求分析――完成概要設計――詳細設計――碼與測試;(4)分組答辯,采用組長主要負責制;(5)提交課程設計報告。實踐表明,這樣的教學方法有助于培養學生的獨立思考能力、講述交流能力,規范文檔的撰寫能力,提高學生的積極性、創造性與團隊協作精神,教學效果不錯。

2.1 調整課程設計時間

我院將課程設計時間推到期末考試之后的假期進行,這樣學生就能夠一門心思將精力撲在課程設計上,分組去選擇難度較大的選題,使自我挑戰成為一種可能,也才能夠更好地培養團隊合作精神。

2.2 分層次精心設計選題

為了防止學生互相抄襲程序,課程設計的選題按照老師提供題目,學生自由選擇或者隨機抽取的方式來進行。

在課程設計題目的擬定上,為了能夠更好地激發學習較好、動手能力較強學生的學習興趣,同時兼顧學習較差,動手能力較弱的學生,使各層次的學生都能得到提高和鍛煉,將課題按照難易程度分成了三種級別(一星級,二星級,三星級)。其中,三星級難度相對較大的題目,可由課程學習成績較好的學生選擇。

2.3 培養學生團隊合作精神

學生自主組建課程設計小組,然后共同協商選擇合適的選題。由小組組長負責(建議優秀的學生主動擔任組長,帶動組內基礎和動手能力較弱的學生),小組成員自行對模塊進行劃分和任務安排,要求每個成員都有自己需要獨立完成的模塊,填好選題表。在任務實施的各個重要環節,要求每個組員都要積極參加討論,出謀劃策,相互幫助,形成一個良好的團隊氛圍,最后齊心協力完成設計任務。當然小組之間也可以相互幫助,共同攻克難題,這樣一個任務完成后,學生的團隊合作精神在不知不覺中就培養起來了。

2.4 培養學生交流表達能力

在課程設計的最后階段,我們要求學生分小組集中答辯。答辯的主要目的是訓練學生的表達能力。各小組先由小組長指派一位同學對整個項目進行綜合性講解,包括項目研究意義、整體設計思想、主要功能模塊以及各成員的分工,展示設計成果,回答老師提問;再由小組成員針對自己完成的模塊進行講解,重點要講出自己是如何根據實際問題定義相應的數據結構并解決問題的。

2.5 培養撰寫文檔的能力

培養學生按要點寫出規范文檔是課程設計需要培養學生的又一大能力,教師不光是要給出規范文檔的要求和范例,還要給學生講清楚為什么要這樣寫。我院的文檔要求主要包括以下幾個方面:

(1)問題描述;(2)ADT抽象數據類型定義;(3)模塊調用關系;(4)詳細設計:結構的定義;算法的描述;(5)分析與討論;(6)參考資料;(7)致謝

2.6 考核成績的評定

課程設計的總評成績應包括平時表現、課設檢查(包括成果展示和答辯情況)和課設報告三部分,三部分所占總評的比例分別為20%,50%,30%。

平時表現的成績從學生是否按時出勤、課設過程中是否存在玩游戲的情況、是否服從老師管理等方面酌情評定。課設檢查的成績根據學生完成課設的實際情況來考核。本次課程設計要求課設檢查統一采取學生答辯的形式來進行,即要求學生在完成課設的題目后,演示并講解自己的程序,且回答老師提出的問題。指導老師主要從:問題的理解及解決能力,設計過程中獨立工作能力,設計說明書p程序清單p開發的程序質量與工作量,設計題目的難度、先進性和實用價值,創新能力等方面進行評價打分(難度系數為一星級分數60~75,難度系數為二星級分數75~85,難度系數為三星級分數85~95)。要嚴格控制90分以上的高分人數,我們鼓勵原創、鼓勵創新、鼓勵優化算法、鼓勵擴展知識體系,只有做到了這些中的某些點才能給出90分以上的高分。課設報告的成績根據學生完成的報告文檔質量進行打分。課設報告若出現雷同或抄襲現象,報告的考核成績一律為0分。

第5篇

關鍵詞 數據結構 教學模式 層次化教學

中圖分類號:G424 文獻標識碼:A

1 數據結構在本科生教學中的地位

數據結構是計算機學科本科教學中的核心課程,課程知識豐富,內容抽象,實踐性強,主要研究各種基本的數據結構在存儲器中的映像和各種基本操作在相應的存儲映像上的實現。學習本課程旨在使學生增強分析計算機所加工數據的數據結構特性,選擇合適的邏輯結構、存儲結構和相應的算法的能力,并初步掌握算法的時間效率分析和空間效率分析的技術,編寫出高效的程序。①

數據結構作為實踐性很強的計算機專業基礎課,在計算機科學教育中有著重要的地位和作用。美國IEEE和ACM的教學計劃均把算法與數據結構類課程列為計算機以及信息技術相關學科專業的本科必修基礎課程。②

2 數據結構教學體系的實施和效果

數據結構課程內容比較抽象,教學中長期存在一部分老師重理論輕實踐的現象,即使老師花費很多時間備課和授課,卻經常出現學生只能大致明白算法思想,而無法真正實現算法的情況,學生逐漸對這門課程的學習失去了興趣和信心。

由于我院的授課對象是三本學生,如果只是枯燥地介紹各種數據結構以及算法實現,學生很難理解并掌握相應知識點,最終只能勉強應付考試,而失去了學習該門課程的真正意義。為了實現課程的教學目標,使學生不但掌握數據結構的基本理論知識點,更要掌握各種經典算法,學會分析實際執行的算法,培養學生創造性地應用各種數據結構和算法,解決實際的應用問題的能力,以及探索和創新能力。針對我院學生的特點,在教學中采取層次化教學,既要培養多數應用型人才的實踐能力,又要培養少數研究型人才的科研能力。

2.1 強化實踐,注重培養能力

數據結構是一門理論性和實踐性都很強的課程,培養學生的實踐能力是教學的首要目的,理論知識的傳授是為提高實踐能力的,因此必須通過上機實驗來加強實踐能力。由于學生的學習主動性和學習能力各不相同,為了達到因材施教的目的,每個上機題目既要考慮學生總體的動手編程能力,又要考慮學生的個體差異,上機內容采取層次化思想。上機題目中包括了基礎性、設計性和綜合性實驗,各種類型的上機題目之間存在著承接關系。經實踐證明,采用由淺入深的上機實踐環節,既有全體學生都能順利完成的基礎驗證性題目,可以鞏固并深化理論內容,實現教學要結合實際應用的特點,又考慮到學生專業特點和個性的設計綜合題,培養了學生獨立運用所學知識解決實際問題的能力,最大程度挖掘自身潛能。

2.2 注重引導學生思考,采用多樣化的理論教學

課堂教學應把學生放在一種根本的、重要的位置上,從根本上確立以學生為主體的地位,把學生看成是積極的、富有創造性的程序語言使用者,而不是被動的接受者。為了避免傳統的學生被動地接受書本知識的教學模式,在數據結構的教學中,采用“問題”組織教學,包括問題設置、學生通過思考和討論提出解決方案、教師對學生的解決方案的評價并給出最佳解決方案。這樣可以把課程的知識點轉化為對某個問題的求解過程,使學生通過解決問題掌握知識。強調學生在學習和發展中的主體性和潛力的發揮,同時又不忽視教師的主導作用,通常采用小組協作式、個別化等教學形式或采用多種教學形式組合起來進行教學。數據結構教學的過程,實際上就是師生互相協作的一個過程。在課堂教學中充分發揮學生的主體性,讓學生主動積極地去學習。

在教學方式中,如果只通過傳統的黑板加粉筆的教學模式讓學生通過腦海中執行靜態的程序代碼來了解數據結構的動態變化,這種方式缺乏直觀性效果,難以充分展示算法的動態變化過程,學生難以想象數據之間的復雜關系。因此要充分利用多媒體教學課件動態地演示各種數據結構和算法,把知識生動、形象、動態地呈現給學生。

2.3 加強前導課程復習

學習本課程前學生雖已學過C語言程序設計與離散數學,但僅僅是初步掌握,并不精通,不能熟練運用程序設計語言進行編程。很難將算法轉化成程序設計語言中的函數并編寫出調用該函數的主函數,有的同學甚至直接將算法放到機器上運行,這是擺在學生面前的難題。針對以上情況,在開始講授數據結構前,都會將之前學習的C語言程序設計中的數組、指針、函數、結構體和離散數學中的樹和圖相關知識進行復習,然后再開始學習數據結構。對于課程中的算法,除了講解之外,部分算法在課上都會寫出完整的源程序并運行,使學生理解算法和源程序之間的關系。

2.4 激勵個性化學習,改革考核方式

在教學內容和實施上,適當考慮多樣性和靈活性,對于應用型人才著重培養學生通過典型數據結構和算法實現的學習和訓練,逐步掌握根據實際問題分析數據和數據結構,設計相應的運算和處理算法。對于研究型人才著重培養學生建立數據結構與算法的思維方法,形成數據結構和問題求解的知識體系,理解抽象的概念和復雜算法。對于能力較強的同學,可以選擇一些數據結構應用等高級主題予以介紹,例如紅黑樹、伸展樹、后綴樹等復雜結構。學生在將來的科學研究和工程項目實踐中將廣泛接觸到這些實用的數據結構和算法技術。

為了體現上機實踐對該課程的重要性,我們在數據結構課程考核中采取重視上機實踐成績的考核方式,即平時成績30%(其中上機占20%)+期末考試成績70%的形式對學生學習成績予以評價。

3 結語

以“學”為中心的教學設計,設計起來容易,因為那只是做一些決策。難在具體地教學實施。只有在教學實施過程中才會檢驗出教師是否真的堅持以“學”為中心的教學。教學過程中,以學生為主體,教師為主導,讓學生體會到數據結構是一門與實踐緊密聯系且非常有趣的課程。通過數據結構的學習提高了學生的邏輯思維能力和數據抽象能力,提高了設計高質量程序的能力,為學生奠定了扎實的軟件開發基礎。

注釋

第6篇

關鍵詞:數據結構;教學設計;教學目標;內容體系

中圖分類號:TP3-0 文獻標志碼:A 文章編號:1674-9324(2013)08-0209-04

一、引言

《數據結構》是計算機科學與技術及相關專業的一門非常重要的專業基礎核心課程,其主要研究內容是數據之間的邏輯關系和物理實現,即探索有利的數據組織形式及存取方式。有關計算機的各類軟件的開發和設計,首先要考慮數據的表示,即使用何種類型的數據結構。因此,如何更好地解決實際問題,僅僅依賴幾種計算機程序設計語言是不夠的,還必須學習和掌握好數據結構的有關知識。當我們使用計算機來處理一個具體問題時,一般需要經過下列幾個步驟:首先要從該具體問題抽象出一個恰當的數學模型,然后設計出解決此類數學模型的算法,再編寫相應的程序并進行調試、測試,運行程序并最后得到答案,如圖1所示。

早期計算機為解決問題而涉及的運算對象都是一些簡單的數據類型,如整型、實型或布爾類型數據,所以一般把著重點放在程序設計的技巧上,而不必重視數據結構。隨著計算機的發展,它的應用領域的不斷擴大,涉及非數值計算問題的應用所占的比例越來越大,許多問題涉及到的處理對象不再是簡單的數據類型,其形式更加多樣,結構更為復雜,因此,解決這類問題的關鍵不再是數學分析和計算方法,而是要設計出合適的數據結構,以便更有效地解決問題。

二、課程說明

1.課程的定位。《數據結構》這門課程,是計算機理論與技術的重要基石,該課程一般是在大學二年級上學期開設,具有承上啟下的重要作用,既要對前一年學習的軟件技術進行總結提高,又要為后續專業課程提供基礎。它貫通始終,是計算機科學與技術人才素質培養框架中的中堅課程,對學生的軟件開發能力培養至關重要,也為學生今后的專業生涯打下牢固的基礎。所以《數據結構》課程是計算機專業提高軟件設計水平的一門關鍵性課程,它在整個課程體系中具有非常重要的地位。《數據結構》課程在計算機學科中與其他課程的關系如圖2所示。

2.課程的教學目標。溫州大學甌江學院作為獨立學院,其定位為培養“應用性”本科人才,同時結合本課程的地位,因此,在本課程的教學中體現“基礎性”和“應用性”。本課程的定位與目標是:①注重基礎性:掌握基本數據結構的特點,了解數據結構與算法的關系;培養學生的算法設計與分析的基本理論知識和技能;培養學生設計及選擇有效的算法、設計合適的數據結構的能力;增強學生發現問題、分析問題和解決問題的能力。②突出應用性:本課程強調理論和實踐的統一,突出對學生的動手能力的培養。在對學生進行基本數據結構的理論、技術和設計等的知識運用和技能培養的同時,突出對學生進行將實際問題轉化為基本數據結構和算法問題的分析能力。鼓勵學生學以致用,用學到的知識來解決實際問題。

3.課程內容體系。數據結構課程的內容主要是圍繞著數據的邏輯結構、數據的物理結構(數據在計算機中的存儲方式)和選用合適的算法來實現對數據的相關操作展開。數據的邏輯結構有:線性結構、樹形結構、圖結構;數據的物理(存儲)結構有:順序存儲結構和鏈式存儲結構。在教學中引入抽象數據類型(ADT)觀點介紹數據結構技術,采用算法時空分析來判斷算法的好壞。在此基礎上介紹數據結構的具體應用。數據結構課程的內容體系如圖3所示。

我們把數據結構課程的內容劃分為基礎部分、數據結構與算法部分和應用部分?;A部分的內容有數據結構與算法的基本概念,抽象數據類型(Abstract Data Type,簡稱ADT)的表示,算法時空分析(算法復雜度)等。數據結構與算法部分是課程的核心內容。介紹各種基本數據結構的特點、ADT、各種存儲實現方法、相關的操作的實現。應用部分主要介紹排序、查找(或檢索)、索引和散列等經典算法。

三、理論教學設計

1.教學方法與手段。由于獨立學院的學生本身基礎不夠扎實,加上《數據結構》課程理論性強,內容抽象,學生在學習該課程的開始階段,容易產生畏懼和茫然的情緒。為了提高教學質量,我們在對教學方法和教學手段等方面進行了有益的探索和嘗試。要處理好多媒體教學模式與傳統教學模式之間的關系。多媒體教學模式以其形象性、生動性和信息量大等特點已成為主要的課堂教學手段,但也存在一些不足,一方面影響教師的即興發揮,而這恰是傳統黑板教學的長處;另一方面,由于多媒體教學具有信息量大、呈現快速、表現直觀、操作簡便的特點,教學活動很容易出現“課件喧賓奪主”的不良傾向。筆者認為,在講述如算法思想、編寫程序時,采用傳統的教學模式更能清晰地表達。因此,在教學中要綜合使用多媒體教學模式與傳統教學模式兩種教學手段,以達到良好的教學效果。

2.把握課程的重點和難點。①課程的重點。基礎部分:數據結構的有關概念術語、算法特性、算法描述和算法分析;數據結構與算法部分:線性表、棧、隊列、串、樹、二叉樹、圖等數據結構的邏輯結構、存儲結構、相應基本操作的實現,這些基本數據結構的應用:一元多項式的運算、遞歸算法的設計和實現、哈夫曼算法的實現和哈夫曼編碼的設計、最小生成樹和最短路徑的求法及實現;應用部分:順序查找算法的設計,二分查找算法的設計,二叉查找樹的創建、查找、插入和刪除的算法的設計,散列表的建立和查找算法的設計;直接插入排序算法、冒泡排序算法、簡單選擇排序算法、快速排序算法、堆排序算法和歸并排序算法的實現,這些排序算法的性能比較。②課程的難點?;A部分:抽象數據類型(Abstract Data Type,簡稱ADT)概念的理解和描述,算法時間復雜度和空間復雜度的估算方法;數據結構與算法部分:棧在遞歸函數中的應用,模式匹配KMP算法。圖的遍歷方法、Dijstra、Floyd、Prim、Kruskal等典型的圖應用算法;應用部分:排序算法的復雜性分析,排序方法在各類實際問題中的應用。散列表的建立和查找算法的設計。

四、實驗教學設計

1.實驗類型。根據獨立學院應用型人才培養目標,注重培養實踐動手能力,結合教育部的“面向21世紀教學內容和改革計劃,保留少量必開的經典驗證型實驗,增開綜合型、設計型實驗”的精神,為了保證實驗課的正常運行,完成實驗教學目標,針對獨立學院學生普遍編程能力比較弱,C程序設計語言基礎較差的情況,我們打算增開一些鞏固C語言的課程預備型實驗,保留了必要的經典的驗證型實驗內容,增加設計型實驗,加強綜合型實驗,使得實驗類型不再單一,實驗內容更顯層次化,做到既要有基本實驗的訓練,又有獨立思考、綜合運用知識、創新等能力和素質的培養。預備型實驗:主要加強學生C語言的薄弱環節,如結構體、指針、數組、函數調用等,掌握C語言的這些知識點是完成數據結構實驗的有力保證。驗證型實驗:主要是為了理解和鞏固數據結構的基本知識點,用來驗證典型數據結構的邏輯定義及在具體存儲結構下的相關操作實現。綜合型實驗:實驗內容涉及本課程的綜合知識或本課程相關課程知識,主要是為了培養學生的綜合分析能力、實驗動手能力、數據處理能力及查找參考資料的能力。

2.實驗方法。對于驗證型實驗,學生在做實驗的任務基本上,只是將課本的算法修改為在某種編程語言環境下可以運行的程序而已。但對于設計型和綜合型實驗,尤其是綜合型實驗,它是多個知識點的綜合訓練,包括問題分析、總體結構設計、程序設計等基本技能,需要用更科學的實驗方法系統地完成。所以,為完成《數據結構》實驗,我們引入軟件工程的方法來指導實驗,以實現實驗方法的規范化。需求分析:說明實驗的主要任務,如輸入的形式和輸入值的范圍、輸出的形式、程序功能和測試數據等。概要設計:說明本實驗中用到的所有抽象數據類型的定義、主程序的流程以及各程序模塊之間的層次調用關系。詳細設計:實現概要設計中定義的所有數據類型,對每個操作用程序設計語言編寫代碼;畫出函數之間的調用關系圖。調試分析:調試過程中遇到的問題是如何解決的以及對設計與實現的回顧討論和分析;算法的時間復雜度與空間復雜度的分析;算法的改進設想。

3.實驗過程。數據結構課程實驗同其他課程不同,在上實驗課之前需要做大量的準備工作,整個實驗從開始到結束不可能在有限的實驗計劃課時中全部完成,因此對整個實驗過程的控制和管理顯得非常重要,要求對每一次實驗課都進行精心地策劃,我們主要從課前預習階段、實驗操作階段和實驗總結階段等三個階段進行改革,以實現實驗過程的規范化。課前預習階段:以往的實驗教學環節,往往是學生到了課堂上才知道實驗的內容,學生往往措手不及,這不利于實驗教學的正常開展。現在我們采用把每個實驗內容提前放在網上,要求學生課前充分預習,詳細了解實驗目的和原理、實驗要用到的數據結構和算法,在實驗之前必須提交實驗預習報告。通過課前預習,保證學生在實驗中思路清晰,能及時發現問題,易于取得實驗的成功。實驗操作階段:學生上機實驗的過程是實驗成敗的關鍵,我們一方面培養學生在實驗過程中養成做實驗記錄的良好習慣,另一方面引導學生在實驗過程中積極思考,當出現異常情況時,教師要指導學生分析其產生問題的根源,尋求解決問題的方法。學生在每次實驗結束后,要將實驗記錄交給教師檢查簽字。實驗總結階段:這一階段要求學生完成高質量的實驗報告,實驗報告中除了包括數據結構定義、算法思路、異常情況分析、測試數據及運行結果等必備的內容外,更重要的還要包括實驗設計實施的成敗得失、經驗教訓和心得體會。整理和填寫實驗報告的過程,即是學生對自身存在的問題進行修正和完善的過程,通過分析整理實驗報告,學生可以更深刻地認識到自己在實驗中存在的問題,加強其設計思維的訓練,也能不斷地積累解決實際問題的動手能力。

五、課程考核

1.《數據結構》課程的考核學生成績以100分制評定,其中,平時成績(包括書面作業、課堂測試、期中測試),占總成績的15%;考勤和學習態度,占總成績的5%;上機實習(加實習報告),占學期總成績的20%;期末考試,占總成績的60%。

第7篇

(玉林師范學院 數學與信息科學學院,廣西 玉林 537000)

摘 要:提出在主流數據結構教材基礎上進行課程改革,包括降低課程難度、充實核心章節、精簡次要部分、引入面向對象思想描述抽象數據模型、增加4類習題和上機任務等。

關鍵詞 :數據結構;抽象數據類型;教學改革

基金項目:2014年廣西高等教育教學改革工程項目(一般項目A類)“移動互聯網背景下信息與計算科學專業應用型人才培養模式的研究與實踐”(2014JGA207)。

第一作者簡介:程裕強,男,講師,研究方向為中文信息處理、本體論、語義網,chegnyuqiang@qq.com。

0 引 言

人類解決問題有三種途徑,一是理論分析,二是計算(也稱算法),三是實驗。數據結構課程屬于第二種計算范疇。數據結構的學習有利于培養學生的模型抽象能力和算法設計能力以及創新性思維?,F在越來越多的專業開始將數據結構課程設置為核心專業課程,數學類、經管類等專業也設置數據結構為選修課。數據結構是數據庫、操作系統、計算機網絡等課程的先修課程,數據結構課程的學習效果對后繼課程有著重要的影響。

1 數據結構教學中存在的問題

與其他專業課程不同,國內高校選擇的數據結構課程教材相對單一,主要是1997年嚴蔚敏和吳偉民主編的《數據結構(C語言版)》[1]。該教材的最大優點是數據結構描述較為全面、言簡意賅,適合學習能力較強的985和211等重點高校相關專業的學生使用。對于非重點本科高校以及高職高專的學生而言,該教材具有一定難度,存在如下問題:①該教材使用類C來描述數據結構,使用了部分C++特性,而大部分非重點高校的學生在學習數據結構之前沒有學習過C++語言,讓他們將類C描述的數據結構轉換為具體的C語言代碼時具有一定難度。②C語言在描述數據結構時表述不方便。由于C++語法較為復雜,如果引入C++相關語法,又會大大增加數據結構課程的教學難度。③該教材于1997年編寫,至今已過去將近20年,有些章節沒有更新過。④該教材每章結束處缺少習題,雖然編者提供了另一本配套的習題參考書[2],但在實際中需要重新購買,且該習題參考書所設計的習題難度較大,不適合非重點院校使用。

2 數據結構教學改革措施

2.1 使用純C語言描述,降低難度

1)刪除&參數傳遞。

在描述數據結構操作算法時,可能需要實現參數雙向傳遞。教學實踐中,我們將C++的&參數全部轉換為C語言的指針操作,雖然增加了算法表達的復雜性,但是在算法具體實現時帶來了極大方便。

2)減少復雜的動態內存分配操作。

在構建數據結構時,不宜面面俱到,應做到主次分明,重點分析問題的核心流程,次要問題的處理點到為止即可,不需作深入描述。比如對于數據存儲結構中關于存儲空間擴展問題,在數據結構設計中可以簡單說明或者注釋一下,不宜使用大量代碼來處理這個問題,容易造成代碼結構復雜,主次混亂,增加學生理解的難度。例如,嚴蔚敏主編的數據結構教材出現最多的順序存儲結構的代碼如下:

這種結構對于數據結構的初始化操作和添加新元素的操作帶來了復雜性,雖然考慮問題周全,但是算法語句的主次情況不清晰,可讀性差,算法邏輯結構復雜。比如對于添加新元素的操作算法,需要考慮“當前存儲空間已滿,增加空間”的問題,在算法中需要增加如下代碼:

可以使用數組來描述順序存儲結構,這樣做的好處有兩個:一是大部分二本院校的學生C語言基礎不扎實,特別是對于指針操作,采用數組可以減少指針的使用,降低數據結構表述的難度;二是數組描述的順序存儲結構不會改變相關操作算法的本質。比如對于棧使用順序存儲結構描述時,簡化后的代碼如下:

其他代碼省略。對于棧滿情況,只是簡單判定,沒有進行存儲空間擴展操作,這樣對于進棧操作push()的核心流程更加清晰。

3) 刪除指針函數。

在數據結構設計中,較多涉及數據元素的比較問題,而對于不同類型元素的值比較,C語言沒有通用的函數。嚴蔚敏主編教材中引用函數指針來解決這個問題,對指針函數,學生大多望而生畏??梢栽诮虒W中暫時刪去指針函數,不會改變算法設計的本質。

4) 統一數組下標。

與C語言保持一致,數據結構中涉及數組,其下標統一從0開始。

2.2 引入面向對象思想描述數據結構

數據結構課程的主要任務是培養學生對模型的抽象能力,可是C語言在數據模型抽象時存在先天不足。在實際教學中,甚至出現學生編寫的數據結構代碼不能運行的情況,因為學生沒有理解數據結構的本質,沒有明白數據結構代碼實現是對某一數據模型的實現,不知道對該數據模型的測試需要再提供一個主函數。

面向對象語言具有較強的數據模型抽象能力,但是數據結構課程開設時學生還沒有學習面向對象語言,這也是國內數據結構教學主要使用C語言或類C的原因。我們提出使用面向對象思想來描述抽象數據類型ADT,在算法具體描述時使用純C語言,最后在數據結構實現時提供純C語言版和Java語言版[3]。兩種不同語言實現的數據結構,通過純C語言版代碼可以方便閱讀Java語言版代碼,反過來通過閱讀Java語言版代碼又可以加深對純C語言版代碼的理解。

我們以順序存儲結構的棧為例來說明,首先從抽象數據類型角度來看待數據結構Stack。

抽象數據類型的描述以及面向過程語言和面向對象語言實現對比,可以讓學生更好地從抽象數據類型角度來思考數據結構。

2.3 刪除次要章節,充實核心章節

首先,增加“預備知識”一章,復習C語言的主要語法,補充Java語言的簡單語法部分(不涉及Java語言高級特性)。對于非重點院校來說,部分學生的C語言基礎不扎實,需要復習一下C語言的核心語法。由于采用面向對象思想來描述抽象數據類型,需要引入簡單的面向對象語法。而C++語言本身語法較為復雜,沒有C++語言基礎的學生難以看懂C++描述的數據結構算法,Java語言在C++語言基礎上進行了簡化,在C語言的基礎上,學生只需了解簡單的Java語言即可掌握使用Java語言來描述數據結構[4]。Java語言最大的特點是有完善的描述抽象數據類型的類定義機制[5]。

其次,對于棧與隊列一章,棧與隊列是一類特殊的線性結構,重點不是鏈式結構而是順序存儲結構,補充共享棧和兩類循環隊列以及遞歸機制的描述。

第三,對于串一章,使用合并定長與堆兩種描述的優點,統一使用數組存儲結構描述。

第四,簡化數組與廣義表一章,刪去m元多項式與廣義表相關內容。

第五,簡化哈夫曼樹問題和最短路徑問題等非線性結構的描述。哈夫曼樹算法較為復雜,如果引入堆結構進行描述,可以降低其算法難度。對于多源點最短路徑,可以增加矩陣計算過程來降低算法理解的難度。

第六,充實快速排序相關內容??焖倥判蛞约案倪M方案是IT企業面試中最常問到的問題,這部分內容需要充實。

第七,刪去動態存儲管理和文件兩章內容。

2.4 增加習題與上機任務

單獨提供與數據結構教材配套的習題集和上機指導參考書,雖然可以有足夠的空間來展現豐富的習題和詳細的上機指導,但是獨立的參考書使用不方便。我們提出在數據結構教材中適當添加具有階梯難度的習題和上機任務。

1)增加習題。

在每章內容結束時,增加相關習題,習題內容需要涵蓋基礎概念題、全國二級等級考試題、經典考研試題和企業面試題。每章習題平均為10道,對于不同章節可以適度調整,比如關于樹與圖兩章,相關內容較多,可以增加題目數;關于排序一章,企業面試題較多??傮w習題設置見表1。

2)上機任務。

由于教材版面限制,每一章提供兩道精選的上機任務。比如對于棧,設計一道上機任務:編碼實現抽象數據類型棧Stack,并利用Stack求解一個整數的2進制形式。該上機任務包含了棧Stack基本概念與編碼實現,進而進行簡單應用。上機指導教師可以根據所在院校上機報告具體形式和實際的教學效果進行指導。

3 結 語

多年的數據結構教學實踐表明,我們提出的數據結構課程改革方案,對于非重點院校來說是急需的、可行的。新的教學方案一方面降低了課程教學難度,方便學生自學,提高了學生的學習興趣;另一方面增強了前后課程的聯系,特別是C語言、數據結構和面向對象程序設計語言。下一步工作是總結教學經驗,編寫適合廣大非重點二本院校以及高職高專院校的數據結構教材。

參考文獻:

[1] 嚴蔚敏, 吳偉民. 數據結構(C語言版)[M].北京: 清華大學出版社, 1997.

[2] 嚴蔚敏, 吳偉民, 米寧. 數據結構題集(C語言版)[M]. 北京: 清華大學出版社, 1999.

[3] 梁燕來, 程裕強. Java面向對象程序設計[M]. 北京: 人民郵電出版社, 2013.

[4] 程裕強. 編程語言中浮點數精度丟失問題[J]. 計算機安全, 2013( 6): 59-61.?

第8篇

關鍵詞:python;數據結構;算法;圖的遍歷

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2013)33-7593-03

計算機信息處理依賴于有效算法的設計,信息處理時間是衡量算法有效性的重要測度,算法是基于特定的數據結構實現的,所以算法的設計與數據結構的選擇會影響到算法的執行效率。算法程序的實現需要使用某種特定的語言,Python語言是一個混合體,豐富的工具集使它介于傳統的腳本語言和系統語言之間,工具集中提供了Python內置數據結構作為語言的基本組成部分。

本文分析了python內置數據結構,基于python內置數據結構構建了棧、隊列、圖等數據結構,并實現了圖的深度優先遍歷算法,熟練應用python內置數據結構可以構建算法依賴的如樹或圖等較為復雜的數據結構,有助于大型開發項目數據信息的高效規范處理。

1 python內置數據結構

Python中有四種內置數據結構——列表、元組、字典和集合,它們用來存儲一組相關數據,可以應用于簡單的算法操作中。

1.1 列表

列表(list)是處理一組有序元素的數據結構,類似于java中的ArrayList,常作為函數的返回類型,列表中的元素應該包括在方括號中,每個元素之間用逗號分割。列表可以實現添加,刪除,查找等操作,列表元素的值可以被修改。

列表的append方法將添加的元素排在列表的尾部,被添加的元素可以是元組、列表、字典等任何對象,remove方法刪除指定元素,insert方法將給定元素添加到指定位置。列表支持分片、負索引操作和連接操作,所以列表是一種可變的數據類型。

列表的查找有兩種方式,一種是使用index方法返回元素在列表中的位置,另一種方法是使用保留字in來判斷元素是否在列表中。

列表分別用sort方法和reverse方法實現列表自身的排序和逆序。

1.2 元組

元組(tuple)相當于只讀數組,由不同的元素組成,每個元素可以存儲不同的元素,如字符串、數字甚至元組,元組中的元素應該包括在圓括號中,每個元素之間用逗號分割。

python中創建元組的過程成為打包,元組創建后其內部元素的值不能被修改,不能添加或刪除任何元素,和字符串一樣是不可變的。

元組中的元素可以通過索引方式即一對方括號指明某個元素的位置來訪問,元組的下標可以為負數,即支持負索引、分片操作。

可以將元組的元素分別賦給各個變量,避免用循環去獲取每個元素的值??梢杂胮ython內置函數range()和len()遍歷元組,len()計算出元組中元素的個數,range()返回由一個數字組成的列表。

1.3 字典

字典(dictionary)是由鍵/值對組成的集合,值通過鍵來引用,鍵必須是唯一的且只能使用不可變的對象(比如字符串),值可以是不可變或可變的對象。

鍵/值之間用冒號分割,鍵/值對之間通過逗號隔開,并且被包含在一對花括號中,鍵/值對是沒有順序的。

通過一對方括號和索引可以訪問字典。字典的添加、修改通過一條賦值語句如dict["x"]= value可以實現,如果x對應的值在字典中,則可以修改字典的內容,如果x對應的值不在字典中,則添加相應的字典元素。python內置函數del()可以刪除指定的字典元素。字典方法pop()可以刪除參數索引所指定的元素,方法clear()可以清空整個字典。

通過字典方法items()可以實現字典的遍歷,items()方法返回由若干元素組成的列表,items()把字典中每對鍵/值組成了一個元組,并把這些元組放到列表中返回。

1.4 集合

集合(set)是沒有順序的簡單對象的聚集。當在聚集中一個對象的存在比其順序或者出現的次數重要時使用集合。使用集合,可以檢查是否是成員,是否是另一個集合的子集,得到兩個集合的交集。

2 python內置數據結構的應用

基于python的內置數據結構可以構建其它較復雜但更實用的數據結構,可供相關算法采用。下面主要實現了棧和隊列的構建、圖的表示和深度優先遍歷算法的實現。

2.1 棧和隊列的構建

棧是只允許在一端進行插入或刪除的線性表,具有后進先出的操作特性。隊列也是一種操作受限的線性表,只允許在表的一端進行插入,而在表的另一端進行刪除,其操作特性是先進先出。棧和隊列都可以基于python內置結構列表實現,進棧/隊列用列表的append方法,出棧/隊列用列表的pop方法,并且需要用python內置函數len檢測列表的長度。棧和隊列的實現類似,棧結構實現代碼如下。

class Stack:

def __init__(self,size = 16):

self.stack = []

self.size = size

self.top = -1

def setSize(self, size):

self.size = size

def isStackEmpty(self):

if self.top == -1:

return True

else:

return False

def isStackFull(self):

if self.top +1 == self.size:

return True

else:

return False

def getTop(self):

if self.isStackEmpty():

raise Exception("StackIsEmpty")

else:

return self.stack[self.top]

def push(self,obj):

if self.isStackFull():

raise Exception("StackOverFlow")

else:

self.stack.append(obj)

self.top +=1

def pop(self):

if self.isStackEmpty():

raise Exception("StackIsEmpty")

else:

self.top -= 1

return self.stack.pop()

def show(self):

print(self.stack)

2.2 圖的表示和深度優先遍歷算法實現

圖G由頂點集V和邊集E組成,如果點對是有序的,那么圖就是有向圖,無向圖中頂點間的連接是沒有方向的。若給定某有向圖G1=(V,E),其中V={1,2,3,4,5,6},E={(1,2),(1,4),(2,1),(2,3),(3,5),(4,3),(4,5)},通過python內置列表和字典可實現圖的表示,如graph={1:[2,4], 2:[1,3],3:[5],4:[3,5],5:[] },graph是一個字典,每個鍵都是圖的頂點,每個鍵的對應值是一個列表,列表包含與鍵所代表的頂點鄰接的頂點。

圖的深度優先遍歷算法是指首先訪問某個源頂點vi,然后由vi出發,訪問與vi鄰接且未被訪問的任一頂點w1,再訪問與w1鄰接且未被訪問的任一頂點w2,……,一次遍歷能夠訪問圖中的一個連通分量,訪問的頂點和邊存儲在表示圖結構的字典graph中,代碼編寫如下:

class Graph():

def __init__(self, graph):

self.visited = []

self.visited = [0 for i in range(len(graph)+1)]

self.dict = graph

def DFSGraph(self, source):

self.visited[source] = 1

print source,

if self.dict.get(source):

for v in self.dict[source]:

if self.visited[v]==0:

self.DFSGraph(v)

圖的深度優先遍歷在有向無環圖的拓撲排序或尋找圖的關節點等算法中有重要的應用。

3 結束語

文中利用python內置數據結構構建了棧和圖,實現了圖的深度優先遍歷算法,諸如二叉樹、二叉排序樹、散列表等程序中常用的數據結構,都可以在字典、列表等python內置結構基礎上實現,多注重靈活運用內置數據結構將會提高解決程序實際問題的能力。

參考文獻:

[1] David B.Python Cookbook[M].New York:O'Reilly Media,2013.

[2] Wesly M.Python for Data Analysis[M].New York:O'Reilly Media,2013.

[3] Robert S.Algorithms[M].New Jersey:Addison Wesley,2011.

第9篇

關鍵詞: 數據結構;教學方法;學習興趣;專業素養

中圖分類號:G424 文獻標識碼:A 文章編號:1009-3044(2013)14-3338-02

任何軟件開發人員和計算機相關專業人員都離不開編程,而編寫的程序性能如何往往取決于采用什么樣的邏輯結構、存儲結構以及解決問題的具體方法和步驟。數據結構是c語言程序設計的后續課程,也是計算機相關專業的一門核心課程,主要分為樹型結構等邏輯結構、存儲結構及其相關運算,算法是解決問題的步驟,因此,編程需要考慮數據結構和算法兩個方面的問題,算法的設計取決于數據的邏輯結構,算法的實現依賴于數據的存儲結構,編寫程序時所依據的算法采用哪一種數據結構嚴重影響程序的執行效率。通過最近幾年的教學調研筆者發現只有5%的學生對數據結構學習感興趣并會在優化算法時巧妙使用,20%左右的學生對數據結構學習感興趣,也知道在算法設計時有用,但懶得去用,75%左右的學生對數據結構學習毫無興趣,只是為了應付考試和拿到學分。因此,如何通過改進《數據結構》的教學方法來提高學生學習興趣并使學生具備較高的專業素養是一個值得探討[1]和研究的話題。

1 教學現狀

在諸多高校的《數據結構》課堂教學中教師講課以教師為主體,對學生進行填鴨式教學,以完成教學任務為目的,只要學生會做題就夠了,從不考慮其應用價值,將理論與實踐相互分離,導致有些學生對于學習數據結構課程的目的和意義不明,或者不知道學習本節課到底對編程有何用,缺乏學習主動性,缺乏發現問題、獨立思考問題和解決問題的能力,專業水平不高,再加上《數據結構》本身又是一門比較抽象的課程,學生學起來更覺得比較枯燥乏味,學習興趣不高。

2 教學策略分析

教師除了認真備課、講課以及督促學生養成課前預習、課后復習并進行鞏固練習的習慣之外,還要講究授課技巧和方法,該文運用任務驅動法和啟發式教學法從學生比較熟悉的嵌套的if語句著手深入淺出地去講解最優二叉樹,既可以將所學知識點由繁變簡,將不同學科的知識點進行融會貫通,又能強化學生的編程能力,培養學生的專業素養,調動學生學習主動性,使學生成為課堂的主體,激發了學生對《數據結構》的學習興趣。

3 新型的數據結構教學方法在教學中的應用舉例

首先創設問題情境,要求學生用嵌套的if語句表示一個分段函數并給出對應的判定過程,學生在黑板上編寫出不同的算法,提示學生執行時間越少的算法效率越高,然后通過比較每個算法的執行時間找到最高效的算法,最后明確教學目的,通過構造Huffman樹尋求程序的最優解。教學實踐表明,這樣上課會激發學生學習興趣,增強學生學習的好奇心和求知欲,變“要我學”為“我要學”,使學生成為課堂的主體,教學效果較好。

3.1任務一:創設問題情境

3.3 任務三:最優二叉樹的構造方法[2]

在同等條件下,依據最優二叉樹可以直接快速編出最高效的算法3,下面以21,38,20,14,7為權,闡述構造一棵有5個葉子的最優二叉樹的方法。

1)將每個權值看成是只有一個結點的二叉樹,則它們構成一個森林T。

2)從T中取出兩棵根最小的二叉樹作為左右子樹構造一棵其根為這兩棵二叉樹的根之和的二叉樹并將這棵新生成的二叉樹放入T中。

3)重復步驟2),直至森林中僅有一棵二叉樹為止。

通過構造最優二叉樹可以得到描述判定過程的判定樹,它可使大部分輸入的數據結構成績經過最少的比較次數得出所有學生的考試等級,按此判定樹即可編寫最優的程序,學生學習興趣增強,從“要我學”變成“我要學”的學習態度。

4 結論

筆者以最優二叉樹為教學實例,將任務驅動法和啟發式教學法用于課堂教學,揭發了數據結構的實質性問題即優化程序,進而使學生真正體會學習這門課的意義,使學生從思想上真正重視這門課程并對這門課感興趣, 主動學習,認真聽課,不僅培養了學生專業素養,又提高了課堂教學質量。

參考文獻:

第10篇

關鍵詞:高職;數據結構;實驗教學

中圖分類號:G424 文獻標識碼:A 文章編號:1006-4117(2012)01-0275-01

數據結構課程是計算機專業的重要基礎課,主要介紹和研究數據在計算機中的存儲和處理方法[1],其實驗課程通過上機實踐,利用C/C++等高級程序設計語言對理論知識進行驗證,達到理解和鞏固理論知識的目的,是整個課程學習中的一個重要環節。

一、高職數據結構實驗課程存在的問題

在傳統的數據結構實驗中,有指定的實驗課教材,記錄了理論課中所有算法的實現程序,由教師向學生詳細講解算法的理解、實現過程和運行結果,學生只要按照教材上機編輯并調試通過,驗證一下結果就可以了。這樣的教學模式使學生毫無學習興趣,也不用動腦思考,并且由于高職學生大多學習基礎較差,對于程序設計語言中的數組、結構體和指針等知識掌握不夠,根本不能理解大量的復雜算法,只是機械的錄入,使上機調試變得十分困難,這就失去了開設該課程的意義。為了能夠更好的發揮實驗課程的作用,使學生提高程序設計能力,理解數據結構研究數據處理方法的意義并掌握基本的算法設計,我針對高職學生特點,在實驗課程的教學內容、教學方法及考核方式進行了初步探索。

二、實驗教學改革的具體措施

為了能夠更好的發揮實驗課程的作用,使學生提高程序設計能力,理解數據結構研究數據處理方法的意義并掌握基本的算法設計,我針對高職學生特點,在實驗課程的教學內容、教學方法及考核方式進行了初步探索。

(一)夯實基礎,彌補先行課知識的不足

由于程序設計語言課程課時少、內容多,學生接受能力差等原因,導致其教學內容往往停留在初級階段,關于數組、指針、循環、結構體等內容,學生沒有成分的時間去理解和吸收,但這些內容是數據結構實驗課必不可少的基礎內容,所以,在課程的初期,教師要帶領學生彌補先行課知識掌握的不足,深入解析指針和循環的有關內容,設計一些簡單的應用數組及結構體編程的任務,讓學生上機獨立完成。這樣不僅可以夯實學習數據結構實驗課程的基礎,達到良好的知識遷移效果,而且可以使學生在完成任務的同時,體會成功,建立學習的興趣和信心。

(二)逐步添加,合理安排教學內容

在數據結構這門課程中,根據數據的不同邏輯結構,又結合數據的存儲結構,總結出數據處理的許多具體算法,在實驗教學中逐一實現所有算法是不必要的也是不實際的。所以教師必須對該課程的知識點進行梳理和規劃,合理安排教學內容,使實驗中的知識點隨著教學進度逐漸增加。

考慮到高職學生的接受能力,實驗的內容不宜選擇較復雜的實驗項目,只要能夠使學生通過典型算法的實現,循序漸進地理解算法的實現方法及后續改進策略,掌握數據結構的本質,提高程序設計能力就可以了。

如C++程序設計語言中的數組與數據結構中順序存儲的線性表是不同的,但學生在學習之初并不能透徹理解二者的差異。教師可以先設置一個對10個整數進行升序排序的算法,學生只要在main()函數中定義int a[11]及循環變量 int i,j,應用循環嵌套就可以實現了,然后教師再增加任務,要求在數組中連續插入若干不同數據,使數組仍然保持升序,并輸出每次數據插入前后數組的狀態。如果學生仍然應用數組,在原程序基礎上修改就會十分繁瑣,并且輸入輸出語句和插入程序代碼不斷重復出現。這時教師再引導學生通過三方面修改程序,首先應用線性表的順序存儲,將數據定義修改為

const int m=50; //設不超過50個數據

struct L{

int list[m];

int n; //n為線性表當前長度

};

其次,針對輸入輸出及插入代碼的不斷重復出現,定義插入、輸入和輸出算法,并添加函數聲明。最后完成主函數的設計。

通過這樣逐漸添加任務要求,可以從完成任務的過程中體會到學習數據結構的意義,掌握算法的具體實現方法,在知識的逐漸積累和更新中,增強學習信心,提高編程能力和理論應用于實踐的能力。

1、組建學習小組,促進學習互助與提高。考慮到高職學生學習水平的差異性及數據結構實驗課程的難度,教師無法在課堂上對程序的編輯、調試及改進做逐一的指導,這樣將造成一部分學生跟不上教學進度,當無法完成任務時就以抄寫實驗報告等方式蒙騙過關,久而久之喪失了學習的興趣和信心。對此可以在教學中組建5人左右的學習小組,將程序設計水平較好的學生與學習困難的學生組織到一起,共同完成各項學習任務,促進學習互助和自主探究,達到實踐水平的共同提高。

2、改變考核方式,保證學習效果。合理的考核方式是數據結構實驗課程取得良好效果的保證,為了切實達到促進學習的目的,要徹底改變過去單純依賴實驗報告定成績的現象,針對課前準備、上機實踐和實驗效果三個方面制定考核標準。要求學生在上機實驗前做好相關知識的預習,完成算法的初步設計,擬定實驗數據,在上機實踐過程中要求學生邊實踐邊記錄所遇到的問題及解決方法,記錄算法的實現和運行結果,實現算法的改進并記錄未解決的問題形成新的記錄報告;對實驗過程及結果及時作出總結,如怎樣設置輸入輸出能改進程序的可讀性,采用哪種存儲結果使算法更加簡單靈活,怎樣定義算法更利于修改等等??傊?,教師要針對實驗的各個環節提出具體要求和考核標準,定性定量地從各個方面評定實驗成績,調動學生的積極性和自主性,保證實驗教學的學習效果。

作者單位:營口職業技術學院計算機系

作者簡介:郭洪榮(1974―),女,漢族,遼寧營口人,營口職業技術學院計算機系,講師,計算機專業學士學位,教育學原理碩士學位。

參考文獻:

[1]徐卓群.數據結構[M].北京:中央廣播電視大學出版社,2001.

第11篇

關鍵詞:數據結構;研究型人才;工程型人才;案例教學法

作者簡介:王作為(1980-),女,山東莘縣人,天津工業大學計算機科學與軟件學院,講師。(天津 300387)鄒曉?。?978-),男,吉林德惠人,軍事交通學院政治部,講師。(天津 300387)

基金項目:本文系天津工業大學高等教育教學改革研究基金項目的研究成果。

中圖分類號:G642.0 文獻標識碼:A 文章編號:1007-0079(2013)04-0058-02

“數據結構”是一門研究非數值計算的程序設計問題中有關計算機的操作對象以及它們之間的關系和操作等的學科。[1]“數據結構”作為計算機和信息等專業的核心課程,在教學體系中起著舉足輕重的作用。

2006年,教育部計算機專業委員會提出了計算機科學與技術本科專業的“分類培養”的教育目標,并具體將計算機專業人才培養分為“研究型”及“工程型”兩大類。[2]該目標的提出為計算機課程建設及改革提出了新的要求,計算機專業課程的改革應該根據社會的需求及學生自身的實際情況,為學生提供不同類型的教學計劃和培養方案,并具體改革相應的教學方法。因此,加強“數據結構”課程建設,探討不同類型培養目標的教學方法是非常必要的。

目前,“數據結構”課程建設主要關注教學手段的完善,例如“數據結構”課程教學網站的建設、[3]動態教學軟件的研究以及案例式教學方法的實施,[4,5]很少顧及不同類型的人才需要不同的案例引導。另外,我國計算機專業的本科教育一般著重于培養工程型計算機專業人才,對于研究型人才的培養從研究生階段才開始重視,這樣導致了不少學生對于研究生階段的學習不能很快適應,他們的創新能力差。

本文重點探討針對不同類型的培養目標,提出“因材施教”的教學模式。實施的重點在于案例選擇的側重性、學生的主動性以及針對不同類型學生所要采取的教學方法,力爭突出研究型人才的培養模式,經過課程組多年的摸索與實踐,不斷地改進與發展,在培養不同類型人才方面取得了良好的效果。

一、“數據結構”教學現狀分析

“數據結構”課程的核心可概括為以下幾個方面:數據的邏輯結構;數據的存儲結構;在不同存儲結構的基礎上對不同數據結構的操作并討論一些經典的算法。在教學過程中發現,學生對數據的邏輯結構的理解較容易,對數據存儲結構的理解相對較難,對不同存儲結構基礎上的不同數據結構中算法的理解則僅限于表面,對算法在計算機中的實現過程難以理解,并且缺乏舉一反三的能力。綜合分析,產生上述問題的原因在于以下幾個方面:

1.學生的算法設計能力普遍薄弱

著名的計算機科學家沃思說過“程序=數據結構+算法”,足以見得算法在程序設計中的重要地位。在合理的數據結構基礎上,算法是對數據結構的操作(運算),是數據處理的核心。對于傳統“數據結構”的教學,偏重于基礎理論知識的傳授,對于學生的算法設計能力的培養則顯得比較單薄。算法設計能力的提高必須通過多做多練,在解決實際問題中達到自我提升。因此,在“數據結構”的教學過程中,采用案例教學法可以達到較好的學習效果。

2.前導課程基礎較弱,尤其指針部分

“數據結構”以學生對編程知識的掌握為基礎,數據結構的描述語言主要為類c語言,并且大量地用到了里面的指針等知識內容。大部分同學對指針運算掌握不扎實,不能將其靈活運用,導致了算法無法實現,學生缺乏成就感,降低學習興趣。因此,在“數據結構”的教學過程中,除了要復習指針部分知識以外,還要利用實驗實踐教學達到教學目的。

3.缺乏多元化的人才培養方式,與實際應用相脫節

從實際的教學過程來看,教師對“數據結構”相關內容的實際應用講述得不夠清楚,學生學習過程中比較困惑。即便講述過程能夠理論聯系實際,也主要偏重于工程應用,對數據結構科研方面的意義探討極少,這樣導致了很多學生在讀研究生階段時非常吃力,很難將自身調整到研究的狀態。為了響應國家的“研究型人才”及“工程型人才”的分類培養目標,必須兼顧學生進一步學術深造和提高工程實踐兩個培養目標的需求,在教學內容和案例選擇上要有側重性,引導學生將理論知識與以后實際的應用相結合?!皵祿Y構”不僅對于工程實踐非常重要,同時對于培養學生的數據抽象能力以及提高學生的研究水平和創新能力也非常重要。教師應該結合自己的研究方向,盡量給出一些偏重算法研究的案例來培養學生的科研能力,為學生以后繼續深造打下堅實基礎,同時也幫助學生盡早定位自己未來的發展方向。

二、不同培養目標下的課程教學改革

1.教學內容的改革

在理論教學內容的安排上,筆者將近幾年國家研究生統考題穿插在每章最后,檢驗學生的學習效果,提升學生的應試能力。除此以外,為了更好地激發學生的學習興趣、使學生能夠學以致用,提高其專業素質,在授課過程中采用基于案例引導的教學方法,并且對于不同類型人才的培養采用不同的案例。

基于案例的教學方法是將案例的實施貫穿到課堂教學中,教師根據需要講的知識點設計一個具體案例,在講授過程中以該案例為切入點,引導學生去思考解決這一應用問題所需要的知識,逐漸引出概念和原理。讓學生在具體的案例實現過程中消化知識,這是培養學生分析問題、解決問題的一種教學方法。

案例的設計是案例教學的核心內容。案例的設計除了一些驗證性的外,還應設置一些綜合性的。驗證性案例用來幫助理解教材中的各個知識點,建立起數據結構和相應算法的概念,培養學生基本的算法設計能力。驗證性案例較簡單,可以讓學生獨立完成,因此驗證性案例對于不同培養目標的學生沒有特殊區分。綜合性案例是指一些實用性強、應用價值高的案例,包括問題分析、總體設計、詳細設計、用戶界面設計、多人合作以及一整套軟件工作規范性強的工作。研究型綜合案例需要學生查閱算法、模糊數學、圖論等資料,這對學生的研究學習能力和創新能力都有更高要求。因此,對于綜合性案例,學生可以根據自己的特點以及興趣選擇不同的設計性題目,自愿結成小組,并且協調好內部分工,定期舉行小組討論等。

2.教學方法的改革

傳統的教學方法一般采用以教師在課堂上講授基本知識點為主,以學生上機實踐以及做課后作業為輔的教學模式。這樣會導致學生動手能力差、只會應試不會實踐。

在教學過程中,重點實施“以學生為中心”的教學模式,教師在整個教學過程中扮演“導師”的角色。學生根據自己的興趣愛好選擇案例,根據案例任務需要按照3~5人建成標準組并細化分工。教師重點負責準備案例,并且根據每組完成任務的不同,與學生共同討論問題、分析問題,并能指導調研、引導學生找到解決問題的方法等。在案例完成后,教師需帶領學生分析和總結案例解決方案的優缺點。

為了提高教學效率,達到教學效果,除了采用課堂授課的教學方法外,還采用了其他教學方法,例如課堂討論、案例分析、小組匯報、教師或學生總結等多種教學方法。對于不同的培養目標,教學方法相似,但是教學內容和教學手段的側重點則有所不同。對于工程型人才的培養來講,教學目標應側重于軟件工程規范的訓練及培養,提高學生組織數據及編寫大型應用程序的能力,教學內容側重于需求分析、概要設計、詳細設計、用戶界面設計、程序設計、軟件測試、多人合作等基本技能和技巧的培養和學習。教學手段除了依賴于動態ppt、動畫演示、算法演示軟件等,還應該針對不同的培養目標選擇不同的教學手段,比如引導工程型學生參與程序設計論壇、學習群等;培養研究型學生的學術論文檢索能力;鼓勵學術型學生參加算法設計論壇以及學習一些算法分析工具的使用等。在教學過程中,對相關的知識給出一些延伸的閱讀文檔,指導感興趣的同學在課后進一步拓展思維、拓寬視野。

不同于傳統教學的評價方法,此教學更加關注學生最終所能達到的專業能力及實踐能力。廣泛借鑒國外高校的Assignment的評價形式,采用階段性作業、期末大作業、撰寫實驗報告等多種方式相結合的考核方法。為了防止學生從網上下載源代碼或者抄襲等非誠信行為,還要對學生進行匯報答辯。對于不同的培養目標,應采取不同的評價標準。對于工程型學生,應注重程序設計文檔是否規范、完善;程序的調試和測試是否科學、合理。對于研究型學生,應注重問題調研是否夠全面、算法設計是否合理、是否具有創新性等。

三、結語

在適應IT行業快速發展的新形勢下,我國教育部提出了計算機科學與技術本科專業的“分類培養”的教育目標,該目標的提出為計算機課程建設及改革提出了新的要求。我校從“數據結構”課程入手,針對不同的培養目標,提出了“因材施教”的培養模式。通過課程組多年的摸索與實踐,在不同類型人才的培養方面均取得了良好的效果,尤其對于研究型人才培養方式的探索積累了寶貴的經驗,這些經驗可以推廣到其他計算機相關課程當中,對于不同類型人才的培養方案尤其是研究型人才的培養方案的實施都具有重要的現實意義。

參考文獻:

[1]嚴蔚敏,吳偉民.數據結構(c語言版)[M].北京:清華大學出版社,1997.

[2]教育部計算機專業委員會.發展戰略研究報告暨專業規范[R].北京:高等教育出版社,2006.

[3]張麗萍,劉東升,王春暉.計算機應用型人才培養與數據結構課程改革[J].計算機教育,2010,(5).

第12篇

關鍵詞:數據結構;實驗;編程;教學

中圖分類號:TP3-4 文獻標識碼:A文章編號:1007-9599 (2011) 06-0000-01

Teaching Research on Data Structure Experiment

Zhang Xiujian

(Guangzhou University Sontan Collehe,Guangzhou 511370,China)

Abstract:Data structure is a course that emphasizes that exercise of logical thinking and programming ideas.In this paper,we argue that the appropriate experimental program and integration of software engineering can improve student’s innovative ability.

Keyword:Data Structure;Experiment;Programming;Teaching

《數據結構》,是一門重要的理論學科。通過調研看出,該科目在各個院校的實驗教學情況存在較大差異。學生學習理解過程緩慢,教師教學也不能得心應手,尤其是實驗課,由于部分學生對編程語言掌握不熟練,實驗內容抽象,而有較大畏難情緒,甚至不參加實驗課。雖然曾經有些教師參考了任務驅動、實例教學等方法,但過于強調某種教法,也會影響教學效果。所以,該課程宜結合課程特點設計教學,切實通過貼近于實際的方法傳道授業,結合實驗落實教學效果是非常重要的。

一、數據結構課程實驗教學中問題所在

(一)實驗課時欠缺。有的學校壓縮實驗時間,讓位于理論教學,這對學習效果的落實來說是本末倒置。沒有足夠的實驗課時,學生就無法把理論知識加以系統地整理,進而在實驗中消化吸收。

(二)綜合性、創新性實驗科目欠缺,系統性不強。開設的數據結構的實驗課程中,雖然安排了相關知識點的實例,但是對設計的創新性和綜合性上有待提高,要加強知識點的綜合運作。

(三)沒有很好地結合課堂教學和實驗教學。作為一門比較抽象的理論教學課,尤其要重視課堂和實驗教學相結合。實驗中要突出該課程的實踐性,教學中要注重理論和實踐的結合?,F在,不少教師只重視知識的灌輸,在實驗中任務不明確,要求不明晰,讓學生在實驗中迷失了對理論的進一步實踐的方向。

二、實驗教學的改革探索

(一)教學模式的改變?;跀祿Y構課程理論難于理解的特點,要突出實驗課的效果,要注重“課堂.一章的基礎性實驗.綜合實驗”相結合的框架。注意從邏輯機構到存儲結構,再到實現基本算法,繼而具體應用的方法,一以貫之地落實到數據結構教學中去。算法的講授要先分析算法,再運用編程語言演練算法,最后進一步分析算法。如能采用多媒體演示算法的步驟,會使學生更加清晰地理解。課堂教學始終要把應用的要求作為做種目標,輔以實驗訓練,加強學生動手編程和自我創新的能力。

(二)基礎實驗環節要重視。實驗環節要讓學生進一步理解數據結構的特點,明確相關概念,熟練各種基本算法的實現。枯燥的理論講述的再多,也不如配合實驗讓學生一練,所以教學要重視基礎實驗環節。要想獲得扎實的教學效果,教師要提供實驗編程語言,Turbo C、Visual C++、Delphi等都可以。根據教材確定實驗方案,明確實驗目的、內容、要點和必備注意事項,最后安排幾個演練題目,比如矩陣的遍歷、數據的折半查找等。實驗課程要貼近學生的編程水平,不可偏離太過。實驗中,學生有章可循,對要點有較強的針對性,實驗效率就會大大提高,使學生真正能舉一反三。

(三)課程實驗要理論應用相結合。實驗要注意結合原理和應用,讓學生在解決實際問題時學會調用學過的知識點,養成動手練習語言編程的習慣,所以,這個層面的綜合實驗要求要高于普通的課下練習和基礎實驗,更貼近于應用。平時雖然側重練習簡單的算法程序,但綜合實驗課是軟件設計的高級訓練階段,融合了問題的分析,系統結構設計、操作界面設計、編程技能技巧,是軟件設計的系統工程。教師分階段擬定數據機構在實踐中的各種應用,比如:漢諾塔問題、約澀夫環問題、Huffman Coding方式、班級信息管理系統等,把任務分配給學生,讓學生組織課題公關。課題的結題要提供課題表述、基本要求、實驗數據、實現結果和關鍵實現步驟等內容,這能協助學生破題解題,以免形成錯誤的認識,同時也講解了程序設計的基本路線,確保實驗目標的實現。最后每個課題組都集中展示實驗過程接結果。試試證明,這樣的實驗環節,綜合了數據結構知識、編程語言技能和軟件工程思想,讓學生系統地理解各門課程的聯系,融合相關專業課的精髓,鍛煉了學生的團隊合作互助精神,提高了組織能力和管理水平

三、重點組織好教學實驗的各個環節

(一)實驗題目的設計。鑒于實驗環節教學時間的限制,學生的編程基礎和技能較為薄弱,所以,設計和擬定合適的實驗題目尤為重要。實踐題目應該由易到難循序漸進:

1.常用算法練習。主要講解各章節知識點,深入貫徹算法理論的理解;2.基礎性應用練習。主要讓學生針對單一的數據結構解決應用難題,其難度中等;3.綜合應用題目練習。要涵蓋多個章節的內容,系統性強,難度較高,可以組織學生成立課題組,在課外實驗環節共同研討解決,再集中展示。課題的設計要注意:(1)常用算法的練習要有一定代表性,重點練習各個章節的知識點,難度較小,目的在于理論知識的掌握。課堂教學要和實驗環節對應,學生在試驗中重點演練課上講授的內容。(2)基礎性應用練習難度要適中,既要帶動基礎薄弱的學生,又要注意發揮基礎好的學生的能動性,可以加以延伸,或是鼓勵提供多種解決方法,進行不同思路的性能的比較,讓各個層面的學生都能參與實驗。(3)綜合應用練習題不宜太難,但要引起學生的興趣,宜于結合實際中的事物或應用系統,讓學生宜于接受和理解,這樣才能促進學生的積極性。

(二)實驗環境的搭建?,F在很多學校選取譚浩強教授出版的《數據結構(c語言版)》作為教材,應用C語言進行數據結構的設計語言,用TC搭建實驗環境。而在實際教學中,應用C語言講解數據結構常常對算法設計和實現上較為突出,對數據結構的系統性容易忽視。如果用C++進行數據結構的實驗練習,可以注重其整體性和系統性,先定義數據結構的類,再分析其邏輯特性,然后把存儲結構延伸到算法的實現中去,能幫助學生構建數據機構的概念。

(三)實驗過程的組織與實施。實驗中可以采取學生分組、一人負責的機制進行實驗。提倡互動探討和交流,既能讓學生接觸更多的實驗題目,也能提高學生的團隊合作精神。

(四)實驗結果的檢驗和考核。對實驗結果,教師要輔以必備的檢查來進行督導。對于實驗報告的書面匯報,要設計題目、要求、步驟、結構、程序代碼和改進方法,以及最后的體會等。教師通過實驗報告書可以詳細了解學生的實驗情況,進而發現共性的問題集中解決。

(五)實驗問題的總結與彌補。通過實驗,教師對于學生學習中存在的問題要進行系統總結和分析加以更正,有些不良的編程習慣,教師要著重強調。

四、結束語

《數據結構》的實驗課注重學生動手能力的培養,強調創新思維的養成,通過實驗,結合應用案例,能夠進一步提高該課程的教學質量,加深學生對知識點的理解,具有積極的現實意義。

參考文獻:

主站蜘蛛池模板: 岳池县| 达州市| 清水县| 会理县| 通州市| 思茅市| 苏尼特左旗| 安庆市| 宣恩县| 马鞍山市| 新闻| 陇西县| 独山县| 县级市| 台州市| 时尚| 闽侯县| 西平县| 银川市| 蓝田县| 环江| 恩施市| 丽水市| 册亨县| 登封市| 宝坻区| 长垣县| 吉木乃县| 米易县| 洛阳市| 大冶市| 延川县| 揭东县| 长乐市| 宜兰县| 衡南县| 邢台市| 云林县| 社会| 浦北县| 辽阳市|