數據結構與算法范例6篇

前言:中文期刊網精心挑選了數據結構與算法范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。

數據結構與算法范文1

關鍵詞:數據結構;課程體系;實踐教學;課程群

1背景

數據結構與算法是計算機類專業的一門核心基礎課程,是計算機、軟件工程等電子信息類專業的必修課。本課程較系統地介紹了軟件設計中常用的數據結構以及相應的存儲結構和實現算法;介紹了常用的多種查找和排序技術,并對其進行性能分析和比較,內容非常豐富[1-2]。本課程的教學目標是加強學生對數據邏輯關系的分析與認識,培養學生數據抽象的能力,通過理論分析與編程實踐相結合,增強學生求解復雜問題的能力以及控制算法復雜性的能力。

在計算機科學中,數據結構不僅是程序設計的基礎,而且是設計和實現編譯程序、操作系統、數據庫系統等系統程序和各種大型應用程序的重要基礎[3]。數據結構與算法是計算機類專業部分專業課的先導課,如操作系統、編譯原理和數據庫原理等,因此它為后續的專業課程學習提供必要的知識和技能儲備[4]。數據結構與算法課程一直以來都是本學科的核心專業基礎課程,而且正逐漸發展成為眾多理工科專業的熱門選修課。只有學好了這門課,才能在今后的計算機專業課程的學習中游刃有余。因此,本課程在國內同類課程中有較明顯的先進性和示范性。

根據新世紀對人才培養的要求,教學應重在學生能力、素質的培養,尤其是思維能力、實踐能力、創新能力的培養。多年來我們致力于數據結構核心課程的建設,從完善課程體系、加強團隊建設、深入教學改革和豐富教學資源等各個環節不斷探索和實踐。從提高學生的學習興趣和加強實踐環節教學方面入手,在教育教學方面持續、深入地改進教學方法,開展教學研究,提高教學質量。

2完善課程體系

首先,完善以“扎實基礎,強化實踐,引導創新”為培養目標的課程體系。計算機類專業核心基礎課程體系主要由離散數學、面向對象的程序設計、數據結構與算法、操作系統、編譯原理、計算機組成與結構、數據庫原理7門課程組成,用于支撐計算機科學與技術、軟件工程、網絡工程、信息安全、數字媒體技術5個計算機科學相關專業的教學。

我們將課程群的理念引入計算機專業基礎類課程教學,建立了以數據結構為核心的計算機類基礎課程群,如圖1所示。課程群以培養綜合運用計算機基礎知識能力為目標,打破課程間的壁壘,強化課程聯系。本課程群以數據結構為核心,將數據結構的一些基本內容如鏈表、排序等滲透到“C/C++程序設計”課程中;將編譯原理、數據庫原理等需要使用數據結構內容的部分在數據結構課程中以應用的實例進行講解,從而將相關課程的授課內容形成統一的整體。

在實踐環節我們強化數據結構對程序設計語言的訓練及解決相關課程問題的訓練。除各門課程有單獨的實踐課程外,獨立設置貫徹整個教學環節的實踐課程,將數據結構課程群中各門課程較為關聯的綜合大作業進行歸并整合。自身實驗課程注重雙基訓練,但大實踐課程要求對整個數據結構課程群教學經驗豐富、能夠精確把握該課程體系要點的教師進行授課,在教學中能夠結合本學期相關課程設置大作業,在講授中能夠根據學生的具體情況進行誘導性教學,使學生通過完成大作業來更深刻地認識學科體系的全貌,強化學科綜合素質的培養。

以數據結構課程為中心構建計算機類專業的核心基礎課程體系,將與計算機科學相關專業的專業基礎課程教學打通,在課程、課件、教材、師資隊伍等多方面進行統一的規劃和建設,以不同的著重點組織課程教學內容、進行大學生計算機實踐能力和創新能力的培養。該體系打破了原有實驗教學附屬于理論課程的模式,理論教學與實驗教學既相對獨立、又相互聯系,改變了單一的知識驗證的實驗模式,增強綜合應用設計和創新實踐內容,全面提高學生的實驗實踐技能。“扎實基礎,強化實踐,引導創新”培養目標體現了當前計算機類專業教育的發展趨勢,走在國內高校的前面,在全國各類會議作專題報告近30次。

3加強團隊建設

目前我院數據結構與算法教學團隊共有5位主講教師,其中教授2人,每50名學生配一名助教(博士或工學碩士)。該教學團隊主要由30~40歲的年輕教師組成,盡管精力充沛,工作熱情很高,但教學經驗尚有欠缺。團隊建設是本課程建設的重中之重,要把提高教師的綜合素質和教學科研水平,強化教師的責任心放在首位。堅持教學與科研相結合,以國家自然科學基金項目為依托,為提高教學質量,不斷提高科研水平和能力;以國家特色專業建設項目為依托,加強教學研究,以理論指導教學實踐,吸取好的教學方法和經驗,不斷改進教學方法和手段,迅速促進教學團隊成長。

在青年教師培養方面注重教學和科研能力的同步培養。要求青年教師在首次上課之前聽課助課,培養基本教學能力;實行集中備課,統一課件,互相監督,保持教學一致性和教學內容一致性;定期召開教學研討,及時總結教學經驗方法,教授言傳身教;以特色專業建設項目為依托,鼓勵青年教師開展教學研究,以國家級項目為依托開展科研課題研究。青年教師成長迅速,已具備一定的科研能力,教學效果良好,學生滿意超過90%;獲得校教學質量優良獎,青年教師講課競賽二等獎,多媒體課件二等獎等多項獎勵,已經成為學院的業務骨干。

4深化教學改革

4.1不斷探索新的教學模式

1) 實踐性教學。

實踐是獲得真知的根本源泉,主動探索真知是研究型人才的基本素質,我們在基礎課中的創新能力培養主要體現在,讓學生在自由的實驗環境中積極實踐、主動探索,自己發現新的知識和理論。如圖2所示,在實踐環節建設方面,建立書面作業,上機作業和課程設計3個層次的實踐教學環節,以通過書面作業形式消化理解教學內容;通過上機作業培養動手能力,將課程單元知識轉化為實際技能;通過課程設計培養解決實際問題的能力,融會貫通本課程的知識。

為了滿足強化實踐的教學要求,本課程團隊經過多年實踐,精選、整理了包括卡內基梅隆大學、斯坦福大學、麻省理工學院等國內外著名大學教授布置的實踐作業,結合我們的教學要求,每學期給學生布置18道有一定創新性的上機題目。這些題目既反應了數據結構教學的基本知識,又來源于實際應用。達到了理論和實踐的完美結合。本課程實踐教學和理論教學環節的學時比例為1.5∶1。經我們多年實踐,這個比例符合我國高等教育實際,達到了良好的能力鍛煉目的,值得推廣和借鑒。

2) 研究型教學。

在研究性理論教學方面,以教學大綱為主線,整理數據結構領域的經典論文,以提出問題為課堂教學的第一步驟,引導學生思考,將科學家的研究方法和研究思路融入課堂教學中。依托科學研究項目,提出本學科領域的最前沿課題,鼓勵學生思考并解決。對有明顯創造性的成果可以在教師指導下撰寫學術論文。

將研究型教學融入數據結構實踐教學課堂,鼓勵學生從解決問題的角度研究如何設計數據結構與算法,在傳授基礎知識的同時注重創新性思維方式的培養,發現問題和解決問題能力的培養。

4.2全方位的課程改革

課程建設的核心是提高教學質量。為提高教學質量,我們從教學內容、教材、教學方法和手段、考試方法、實踐教學等方向進行了全方位的改革。

1) 教學內容改革。

課程組參考國內外其他院校本課程的教學大綱和優秀教材,對數據結構課程的教學大綱進行了多次修訂,逐步穩定了理論教學的教學內容、教學要求,細化了教學目標,明確了教學任務、教學內容、教學重點和難點、不同知識點的掌握程度。理論教學采用以共性化課堂教學為主,并利用輔導答疑和實踐教學組織以學生為主的個性化教學,培養學生創新能力,輔助課堂教學。在教學過程中采用啟發式教學方式,即注重學生基礎理論知識的掌握,也注重學生分析問題、解決問題等基本能力的培養。

為了配合理論教學,我們也多次修訂了實驗大綱,使實踐內容更加符合專業的發展和其他各方面的要求,并且與前序課程和后繼課程很好地銜接。在實踐環節中注重學生能力的培養和科學的開發方法的培養。實踐教學內容采用梯度組織,具有不同的難易程度,方便學生鞏固學習和拓展知識。

2) 教材選取。

目前本課程使用教材為高等教育出版社出版的《數據結構與算法》,許卓群、楊冬青等編著。該教材除了講授基本數據結構外,突出作為面向對象程序設計的基礎概念――抽象數據類型,強調算法與數據結構的密不可分性、封裝性等;在處理知識面的寬度和知識點的深度上,既滿足作為基礎課的要求又達到一定的水平,完全適合本專業對人才培養的要求,是普通高等教育“十五”國家級規劃教材。目前課程組已經開始著手準備根據我們自己的教學特點、專業要求等實際情況自主編制一套教材。

3) 教學方法改革。

(1) 啟發式教學:學生的主動性是學習,我們在教學過程中注重啟發學生的思維,采用循循善誘的方式引導學生自己發現問題,并逐步解決問題,培養學生思考問題、分析問題和解決問題的能力。這極大調動了學生的主觀能動性,培養了學生分析和解決問題的能力。

(2) 共性化與個性化相結合教學:從教學形式上,我們積極探索新的教學方法,以便能夠調動和發揮學生的主觀能動性。具體有以教師為主體的課堂教學、習題課等共性化教學環節,也設置了答疑p質疑等教學環節,引導鼓勵學生通過實踐和自學獲取知識。共性化與個性化相結合,既可以起到教師主導作用,也可以滿足學生個性學習的需求。

(3) 理論與實驗相結合:數據結構課程主要介紹數據的邏輯結構、物理結構以及算法。算法的思想需要通過一種程序設計語言加以描述并在計算機上實現。我們在重視理論教學的同時,也很注重實驗課,注重學生靈活應用知識能力的培養。理論與實驗相結合,可以使學生更好地理解“數據結構”的思想與概念。

5豐富教學資源

建立本課程網上課堂及在線智能教學系統。網上課堂設計的目的是能夠給不同層次、不同需要的學生提供幫助,提高教學質量。根據網絡教學環境的要求,

系統主要包括課程概況、師資隊伍、教學資源、實驗指導、教學錄像、課程擴展、課程論壇等多個模塊。系統主要具有以下特點:

1) 在線學習。

知識內容結構化,主體結構采用網頁形式組織教學內容,以單元、章、節等知識點為中心組織教學,以關鍵詞或標題為線索進行任意的查找。各知識點在整體上搭建框架式結構,思路明晰;在細節上環環相扣,前后關聯緊密,便于學生更好地理解和掌握知識要點。

2) 動畫演示。

以數據結構部分的講授為例,這部分內容包含許多的算法,其描述大多數采用類高級語言的形式進行,有些算法無論是時間復雜性或是空間復雜性都比較高,采用動畫的形式將算法的執行過程和思想呈現給學生,使學生很容易理解這一過程,再配上教師的解釋做旁白,可產生與上機親身實踐和跟蹤執行相似的效果。

3) 在線測試。

用數據庫對練習題和模擬題進行有效的管理,在學生進入到考核子系統后,能交互式進行試題的選題與答題。當學生提交答卷后,系統又能對答分進行自動評判,并給出相應正確的答案和綜合得分。

4) 課程擴展。

為更好地促進教學,本課程在鞏固基礎知識,提高實踐能力的基礎上,對學有余力的同學擴展了本課程的內容。引入了卡內基梅隆數據結構教學網站,這是一套全英文系統,上面提供了豐富的工程性題目訓練,更加注重數據結構算法在實際中的應用,讓學生開闊了思維和眼界;還為學生提供了ACM競賽以及大連理工大學程序設計競賽的模擬題庫,通過這些略有難度又很新穎的題目進一步提高學生的學習興趣,培養其解決實際問題的能力。

6結論

在近幾年的課程建設實踐中,我們的任課教師認真組織教學內容,與實際相結合,積極探索有效的教學方法,利用多媒體技術動態演示復雜數據結構的變化,并補充學生比較感興趣的知識,拓寬學生的知識面。逐步完善和充實現有課件,做到內容充實,畫面生動,具備聲像效果,收到了很好的教學效果。作為計算機科學的核心內容,數據結構與算法的理論研究及應用研究一直在不斷發展,在以后的工作中要注重研究型教學,鼓勵學生從解決問題的角度研究如何設計數據結構與算法,并將學科領域經典研究成果和最新研究成果及時地反應在課程教學中,相信數據結構與算法這門課的教學效果和教學質量在我們持續深入的教學改革中會越來越好。

注:本文受教育部第二類特色專業建設項目――軟件工程特色專業建設項目資助。

參考文獻:

[1] 嚴蔚敏,吳偉民. 數據結構[M]. 北京:清華大學出版社,2002.

[2] 殷人昆. 數據結構(用面向對象和C++描述)[M]. 北京:清華大學出版社,2007.

[3] 殷人昆,鄧俊輝. 清華大學“數據結構”精品課程建設[J]. 計算機教育,2006(5):20-22.

[4] 錢紅兵,唐發根. “算法與數據結構”課程教學體系的建設[J]. 計算機教育,2009(17):65-66.

Development of the Data Structure and Algorithm Core Course

LIU Xinyue, ZHANG Xianchao, YU Hong

(School of Software, Dalian University ofTechnology, Dalian 116620, China)

數據結構與算法范文2

關鍵詞:數據結構;算法;換位思考法;問題求解

數據結構與算法是計算機科學與技術專業的核心基礎課程之一,同時,它也是算法分析與設計、操作系統、軟件工程、數據庫概論、編譯技術、計算機圖形學、人機交互等專業基礎課和專業課的先行課程。本課程主要以抽象數據類型為主線,研究常用數據結構的邏輯結構、存儲結構及其所支持的運算操作;研究能夠解決實際問題的經典算法;學習基本的算法分析方法。它為學生后續課程的學習以及進行計算機軟件的設計和開發打下良好的基礎。

1教學過程中存在的問題

數據結構與算法課程是計算機專業教學的難點。在教學過程中,我們發現學生對這門課不僅感到入門困難,而且難于駕馭,其主要表現有以下幾點。

1) 高職高專學生的先導知識學習儲備不足。由于高職高專的教學以“理論夠用”為教學原則,因此,學生掌握基礎理論知識的程度無法與本科院校學生相比。例如,數據結構與算法需要學生具備結構體類型和指針的知識,甚至能夠掌握內存模型的運行機制,而對于高職高專學生來說,其先導課程C語言程序設計屬于非重點或選學內容。

2) 概念過多,不利于高職高專的學生掌握。本課程涉及的基本結構包括順序表、樹、圖,以及查找、排序等算法內容。特別是樹和圖兩項內容包含大量概念和理論,其中許多必須掌握的內容使學生產生畏難情緒。

3) 高職高專學生在實踐課中沒有養成閱讀英文文檔的習慣。學習編程的最好方法是閱讀和查看MSDN,但高職高專的學生英語底子差,不太愿意閱讀英文文檔,這影響了實踐課的教學效果。

從高職高專院校的教師角度來看,存在以下問題。

1) 高職高專院校的老師的教學模式過于單一,較少傳授學生解決現實問題的方法。在數據結構教學過程中,高職教師一般將授課重點放在講授數據的基本結構上,選擇的案例只能用于數據結構算法的驗證和說明[1]。這種教學模式對高職學生非常不利,因為,僅從基本結構這個單一的角度進行教學,只能使大多數學生在學習過程 “依葫蘆畫瓢”,一旦遇到問題就束手無策,乃至產生畏難和厭學情緒。很多學生常常覺得教科書的內容與具體的項目設計相距甚遠,給人一種無從下手的感覺。在學完數據結構與算法課程后,學生既不能靈活運用所學知識,也難以實現從數據結構基礎知識的掌握到實際應用的飛躍,這與高職院?!皩嵱脼橹鳌钡慕虒W原則不符,也不利于應用型人才的培養。

2) 高職高專院校的老師的教學手段豐富,但是往往不涉及具體問題的分析,以及基于問題提出對應的解決方法,只是一味地追求直觀效果。有些老師甚至根本不講數據結構的抽象表示,在數據結構算法的處理上也不考慮應用場合,而是直接提供代碼給學生。當然,這樣做似乎對初學者有一定好處,但無助于學生培養正確的思考方法,另外,它讓學生只注重實現程序,而不考慮如何進行算法設計以及怎樣選擇合適的數據結構來表達自己的算法思想。我們認為,在“夠用為度”的教學原則下,教師只能在教學內容上進行適當的刪減,而不能僅局限于“簡單地教,簡單地學”。

3) 對于高職高專院校而言,很多老師不具備完整的教學體系思想,不知道如何處理數據結構、算法和實現代碼之間的聯系和區別。有些老師對課程內容的理解不夠深入,特別是沒有把理論與實際應用問題聯系起來。這勢必造成學生不能理解學習數據結構課程的意義,不能形成對課程內容的整體概念,也不知道學習這門課程有什么用,不知道這門課程在專業體系中的位置。對于高職學生而言,數據結構為什么存在?在項目實踐中如何靈活應用?這些問題如果不得到解決,那么在高職院校開設這門課程就變得毫無意義。

2教學改革中的幾點建議

對于高職高專院校的學生來說,提高他們的學習興趣至關重要。雖然高職生的基礎知識薄弱、學習動力不足、自信心不強,自我管理以及自我約束力較差,但是,他們思想比較活躍,動手能力和社會適應性較強。因此,他們更需要老師耐心、正確的引導。對此,我們可以從以下幾個方面進行改進。

2.1激發學生的學習興趣

“興趣是最好的老師”。培養學生的興趣和維持前期的學習熱情,并讓學生在以后的項目實踐中主動運用本門課程中學習到的知識,這是每個高職教師的責任和義務。我們知道,在這門課程中存在很多經典算法,而每一個經典算法的背后都有一個計算機界的傳奇人物[2]。例如KMP算法中的D.E.Knuth,最短路徑算法中的Dijkstra,等等,他們每個人都有一個傳奇人生,上課時,教師可以通過講述他們對計算機發展所作的突出貢獻,鼓勵學生,激發學生的學習熱情。而在實踐課程中,我們主要采用“換位思考法”,鍛煉學生獨立編程能力。梁肇新在《編程高手箴言》一書中提到:我就是程序,程序就是我。學生在上實踐課時,很多程序細節問題都搞不清楚,這嚴重挫傷了學生的學習積極性。由于這些編程問題不可能在上課時被一一解答,所以,學生只能通過平時積累和應用,逐步提高自己的動手能力。上這門課時,教師要多鼓勵學生把自己想象成“編譯器”,不要只是簡單地把它作為一個工具,而要把我們的編程工具“人性化”,編程過程只是我們在和一個“法官”聊天而已,而這個法官又無比“公正”。如果把自己想象成“編譯器”,在學習語法時就可以很好地進行“換位”思考,知道自己需要什么,如何做才能編譯和調試成功,學習興趣也會隨之提高。

2.2選取合適的教學內容

高職院校在開設數據結構與算法課程時,考慮到學校和學生的特殊性,總課時一般安排為64個課時,理論和實踐各32個課時。內容多、課時少這對矛盾如何解決?如何在比較短的時間內培養學生獨立解決問題的能力?這都是值得研究和探討的問題[3]。

眾所周知,本門課程包括表、樹、圖3種數據結構,而每一種數據結構又包括3個方面的內容――邏輯結構/存儲結構/操作實現;還包括兩類典型算法――查找/排序。這么多教學內容不可能在一個學期內完全教授給學生,所以,我們對教學內容進行了適當的刪減,以便重點突出。在不影響高職院校教學原則的前提下,我們將教學重點放在線性表結構和通過時間復雜度分析選擇合適的數據結構這兩部分內容上(如圖1所示)。對于非線性結構這部分內容,我們著重

講解概念,具體用法可以留給學生作為課外作業。這種選擇可以使學生養成良好的思維習慣和正確的學習方法,以求達到“運用之妙,存乎一心”。

2.3鞏固先導課程的基礎

在先導課程C語言程序設計中,學生沒有系統地學習結構體和指針類型,也沒有掌握動態內存分配的知識,所以,在本門課程教學中必須首先彌補以前的不足,但我們又面臨新的問題,即系統學習與學時數不足的矛盾。對此,我們有如下建議:講解在運行期時程序在內存中的分布區域,以及各個內存區的作用就足夠學生理解本課程知識(如圖2所示)。圖2中模型[4]的講解適合貫穿整個實踐課程的教學過程,把這個模型講深講透,讓學生徹底掌握,有利于高職學生獨立思考和解決問題能力的培養。這個程序內存分布模型可以很好地滿足高職院校的教學目標,讓學生在具備較強編碼和調試能力的同時,又具備解決實際問題的思想和技術。

2.4傳統和現代教學手段相結合

高職院校一般硬件設施齊全,教學條件優越,給教師和學生提供了現代化的教學環境。不可否認,現代教學手段具有生動、直觀和信息量大等特點,對于提高教學效果有促進作用,例如,多媒體教學課件(PPT課件和Flas等)和豐富的網絡資源,等等。從本人多年的教學實踐來看,現代媒體對提高某些課程的教學效果作用顯著,但對于理論性很強的數據結構等課程而言,只能起到輔助作用。事實上,美國數據結構教學仍以講授為主[5],所以,傳統教育手段對本門課程不可或缺。在本門課程中,講解三種數據結構的概念和性質時,可以多用PPT等現代教學手段;講解算法的動態變化時,多用黑板+粉筆頭的方式演示其動態變化過程[6-8]。

2.5問題驅動教學法

福州大學吳英杰等老師[9]在該校引入面向問題的教學模式,取得了良好的效果。在高職院校采用該教學模式,選擇的問題必須具有代表意義,足夠簡單而且能夠幫助學生快速入門。從圖3可知,在傳統的教學模式下,教師只是按照“邏輯結構存儲結構編程實現”的流程講解,學生并不能理解數據結構的意義。如果采用問題驅動的教學方法,教師必須按照“問題定義算法設計選擇數據結構”的流程講解,這種講解方法可以幫助學生很快抓住數據結構的精髓,了解算法與數據結構之間的關系。在教學實踐中,我們選擇了3個典型問題:最大子序列和問題、二分搜索問題和快速排序問題。選擇這3個問題的根本原因在于它們只需要用順序表或數組就可以實現;第1個問題的引入在于其歷史發展過程符合我們的思維習慣,就是一個不斷深入理解問題,不斷優化的過程;第2個問題的引入在于90%的計算機專家不能在2小時內寫出完全正確的二分搜索算法;第3個問題的引入在于快速排序算法的實現只能選擇順序表或數組實現,而不能選擇鏈表來實現。通過上面3個典型算法的實踐課,高職學生能夠很快地掌握驗證和優化程序以及選擇合適數據結構實現算法思想等能力。

2.6調整實踐內容,提高學生能力

如果實踐課只是使用枯燥的控制臺程序界面,許多學生很快就會失去學習的興趣和鉆研的動力。實踐課應該生動、活潑、有趣,因此,我們在實踐課中引入簡單游戲開發項目,例如走迷宮和5子棋等游戲。這些游戲都用到了順序表等簡單的數據結構和查找等算法知識,完全滿足高職院校的教學要求。在教學實踐中,我們一般提供游戲的整體框架代碼,要求學生獨立完成算法設計和代碼實現。我們之所以這樣做,一是因為實踐課只有32個課時,沒必要讓學生設計軟件的整體框架;二是因為不能讓學生產生“程序=軟件”的錯誤思想。

2.7改變考核方式

數據結構與算法課程一般采用最終卷面成績的考核方式。根據高職院校的教學原則,應加大實踐課在最終成績的比重。通過實踐,我們發現階段性成果

的展示和分階段打分在教學中有良好的教學效果,通過這種考核方法,在平時即對學生從嚴要求,高職學生的綜合能力得到提高,潛力也能得到充分挖掘。

3結語

作為一所高職院校,我院在數據結構與算法教學改革與實踐中取得了一系列豐碩的成果。我院ACM- ICPC代表隊在2007、2008、2009年度亞洲區現場賽中曾獲得優勝獎,2007、2008年四川省大學生程序設計大賽中曾獲得二三等獎。同時,計算機科學與技術系的普通學生的出勤率和及格率得到提升,學習興趣也有所提高。

數據結構與算法課程盡管難教難學,但如果采用正確有效的教學方法+生動活潑的學習方式+嚴格管理的考核方式,仍然可以取得良好的效果。

參考文獻:

[1] 周澤輝. 淺談高職學院數據結構課程的算法驅動教學[J]. 科教文匯(中旬刊),2009(3):121-122.

[2] 蘇前敏. 計算機科學技術史的獨特教育功能探討[J]. 上海工程技術大學教育研究,2007(1):20-23.

[3] 盧潔,馮家勛. 理工科課程教學整體改革探索[J]. 高等工程教育研究,2009(2):137-139.

[4] 錢能. C++程序設計教程[M]. 2版. 北京:清華大學出版社,2005:145-149.

[5] 嚴莉,楊宗凱,劉三 . 關于高校教師與網絡教學的研究綜述[J]. 電化教育研究,2009(4):39-42.

[6] 蔡敏,鄭尚志,梁寶華. 數據結構課程教學改革之我見[J]. 計算機教育,2009(4):50-51.

[7] 張桂芬,李海濱. 數據結構實驗教學的改革與探索[J]. 高教論壇,2008(3):103-104.

[8] 周玉林,賴鑫生. 數據結構教改中的問題研究與探討[J]. 上饒師范學院學報,2008(3):84-88.

[9] 吳英杰,王一蕾,王曉東. 面向問題求解的實踐教學模式:算法與數據結構實踐教學改革[J]. 計算機教育,2007(7):29-31.

Suggestions of Teaching and Learning Data Structures and Algorithms on the College

FAN Jun-qing1, CHEN Wen-fei2, XU Xue-feng3, YU Xin-qiao3, HOU Zong-hao3

(1. School of Computer, China University of Geosciences, Wuhan 430074, China; 2.Department of Computer Science, Wuhan

University, Wuhan 430072, China; 3.Department of Computer Science, Chengdu Neusoft Vocational Institute of Information

Technology, Dujiangyan 611844, China)

數據結構與算法范文3

關鍵詞:應用轉型;算法與數據結構;任務驅動;教學改革

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

教育部于2013年,提出一項重大的改革,即計劃將大約600所地方性高等本科院校轉型為應用型本科院校,2014年被列入教育部當年工作要點[1]。在高等院校向應用型本科轉型的形勢下,高校教學面臨著新的機遇和挑戰。商洛學院作為陜西省首批應用轉型試點高校,實現畢業時與社會、企業零距離對接,完成高等學校為社會輸送有用人才的最終目標[2]。

算法與數據結構課程是計算機相關專業的專業基礎課程,是設計各種應用軟件的重要基礎,是我校電子信息科學與技術專業課程體系中的核心專業課程。本文主要針對當前教學過程的問題,進行探討研究,提出一種新的教學模式,達到教與學的有機結合[3]。

一、課程教學改革的必要性與緊迫性

算法與數據結構課程主要涵蓋數據結構的闡述分析、應用以及經典算法的應用,主體內容比較抽象,難以直觀描述,掌握相對困難。此外,電子信息科學與技術專業的學生計算機基礎知識薄弱,電子和計算機專業之間培養差異,導致電子信息科學與技術專業學生學習更加困難。隨著互聯網行業的迅猛發展,網絡教學資源的日漸豐富以及算法與數據結構課程地位的愈加重要,傳統教學模式中的問題日益突出[4]。

(一)數據結構課程自身特點

(1)高度抽象化,需要扎實的數理邏輯、圖論、高等數學、拓撲幾何、離散數學和數值分析等理論基礎;(2)內容涵蓋面廣泛豐富。(3)隱含的技術方法豐富,各部分問題解決方式種類多樣、沒有固定解法、靈活性強。

(二)應用轉型下發展算法與數據結構課程的教學目標

(1)重視算法與數據結構基礎理論知識學習,理解數據邏輯、數據存儲及數據運算等基本概念術語;(2)從實際問題出發,培養學生運用算法與數據結構的基本理論知識分析解決實際問題的能力;(3)重視學生實踐動手能力和工程項目思想的培養。

二、傳統教學過程中現存問題

根據長期從事算法與數據結構的教學過程,發現當前算法與數據結構教學中主要存在以下一些問題。

(一)難理解:本課程需要較高的邏輯思維和抽象思維能力,學生聯系實際比較困難這一問題始終縈繞在整個教學過程中。

(二)難把控:電子信息科學與技術專業本科二年級學生,其計算機基礎、建模能力、軟件工程的思想薄弱。

(三)難實現:體現在遇到問題不知如何數據結構類型;面對具體算法不清楚如何進行優化;書本上的程序不能直接運行,學生自主學習有一定困難[5]。

(四)難應用:數據結構相關實驗的課程設計主要采用高級程序語言(如C,C++)等來編寫,我校電科專業學生對該程序語言的掌握程度直接影響到數據結構課程的實際應用情況。

三、教學模式改革與探索

針對現有傳統教學中存在的問題,為了提高學生算法與數據結構應用能力,需完善并加強實踐教學內容。

(一)調整課程體系

當前教學是依據傳統的知識理論體系順序授課:然而當前應用轉型環境下這種模式已難以適應。根據學生學習認知一般規律及我校電子信息科學與技術專業自身特點,在傳統教學基礎上進一步優化課程培養體系,針對每一知識點配備相應實踐項目,將理論與實踐有機結合。

(二)優化教學手段

傳統課堂教學主要以教師粉筆板書講授為主,不能用動態直觀的方式講解抽象知識,難以激發學生學習熱情,無法達到課題教學目的。

1.將微課引入教學中

借助微課這一新興教學模式,將算法與數據結構課程重點、難點設計開發成網絡視頻資源,供學生課后自主學習。我們將算法與數據結構中每一個知識點的內容,制作成微教案、微視頻、微練習、微點評、微互動等傳至課程網絡中心。

2.將案例驅動引入教學中

案例驅動的算法與數據結構教學方法,是將教學案例引入到課程教學過程中。教師通過一個完整案例的分析解決,借助板書、多媒體等手段與學生互動,達到培養學生發現問題、分析問題、解決問題的能力。

3.加強課外創新實踐活動

算法與數據結構課程需要增加學生的課外創新實踐活動。具體通過以下方式開展:(1)組建算法和數據結構學習創新小組,定期舉行學習經驗研討交流活動,分享實際設計過程的困難、解決途徑和最新成果;(2)定期組織以算法為核心競賽活動,(3)鼓勵學生申報研究學習與科技創新性實驗項目,組織參加省市級或國家級各類學科競賽。

3.改革課程考核模式

傳統實驗課的課程,實驗動手部分只占10%,很多學生把重點放在報告書寫上,為適應應用轉型發展,加強學生實踐能力,課程考核提出以下改革方案:(1)平時(考勤+開卷隨堂測試+課堂表現),占學期總成績的10%;(2)課程上機實驗(源程序+實驗報告)30%;(3)期末卷面成績60%;(4)鼓鈦生到相關優秀企業進行培訓實習

四、結語

針對當前電子信息科學與技術專業算法與數據結構教學模式中培養目標及存在的主要問題,在轉向應用型本科院校新形勢下,為培養創新型、應用型人才,提高學生邏輯思維、編程運算等能力,本文主要從課程體系調整、教學手段優化、創新實踐教學加強、考核模式改革共4個方面都出發,以提高算法和數據結構應用能力為教學目標,結合工程項目與市場實際需求,指導并加強實踐教學。

參考文獻:

[1]陶影,張斌.數據結構實驗教學應重視算法設計與分析能力的培養[J].實驗室研究與探索,2008,12:119-122.

[2]張銘,趙海燕,王騰蛟,宋國杰,高軍.北京大學“數據結構與算法”教學設計[J].計算機教育,2008,20:5-11.

[3]唐劍梅,譚平.《數據結構與算法設計實訓》課程教學研究[J].軟件導刊,2016,01:193-194.

[4]李治軍,廖明宏,張巖.數據結構與算法課程設計教學模式的探討[J].計算機教育,2006,02:54-56.

數據結構與算法范文4

關鍵詞:網絡精品課程;遠程教育;網絡資源建設

中圖分類號:G642文獻標識碼:B

1引言

實施網絡教育精品課程建設對于促進優質網絡教育資源的建設和共享,減少低層次重復開發,促進網絡教學改革和創新,提升網絡教育的社會地位等都具有十分重要的意義。2007年4月,教育部頒發了《關于2007年度國家精品課程申報工作的通知》(教高廳[2007]25 號),把網絡教育精品課程納入到國家精品課程建設體系。網絡教育精品課程是具有一流的教師隊伍、一流的教學內容、一流的教學方法、一流的資源和教材、一流的教學管理和支持服務的高水平網絡課程。因此,網絡精品課程的建設是“高等學校教學質量和教學改革工程”重要內容之一。本文針對網絡教育的特殊性,從網絡資源建設、師資隊伍建設、教學和學習活動設計以及網絡服務支持等幾方面,介紹了國家級網絡教育精品課程“數據結構與算法設計”的建設與實踐。

2針對網絡教育的特殊性,構建資源豐富的網絡教學平臺

網絡教育是指遠程網絡教育。這種教育不同于一般的在校面授教育,其教育的對象不像全日制學生那樣有大塊的學習時間,而是利用零散的、業余的時間學習,而且學生的基礎也不一樣。他們更多的是為了學習實用的知識幫助他們解決工作中的問題。在學習的過程中還會有工作和學習的矛盾、家庭負擔等影響因素。因此,遠程教育課程教學設計的總體原則應該是,所教授知識有充分的實用價值和可實踐性,適合于在職從業人員業余學習和終身學習,滿足遠程教育對象最緊迫的工作和應用需要。而在教學內容的選取上,則應采用教學與應用相結合的方式,將課程的基礎性的理論與綜合應用知識相結合,優化課程知識內容體系,達到應用型人才培養目標。

遠程教育師生時空分離導致遠程學習中學與教的時空分離,這是遠程教育的重要特征之一。因此,要構建資源豐富的網絡教學平臺,將教學內容與學習資源整合起來,以實現遠程教育。

北京理工大學現代遠程教育學院成立于2000年,是經教育部2000年批準的15所現代遠程教育試點高校之一。在發展和建設中,逐步形成了以人為本的教育理念。在實施遠程教育過程中,加強對教學過程管理,并不斷完善教育質量管理體系。“數據結構與算法設計”課程作為計算機基礎教學基本要求的第三層次課程,2003年開始了網絡教學和網絡輔助教學。

“數據結構與算法設計”網絡教學平臺充分利用了多種媒體技術,構建了多種媒體資源優勢互補的、支撐網絡教學的立體化資源,風格獨特,特色鮮明,實現了以“學生為中心,教師為主導”的教育思想。在選取教學內容和學習資源的建設時依據以下四個原則:第一,以學生為中心的原則,按照業余學習特點進行教學設計;第二,圍繞網絡教育應用型人才培養目標,選擇適合遠程教育對象學習的教學內容組織教學;第三,緊扣時代和學科最前沿,為學生提供多種形式的學習資源的原則;第四,緊扣網絡教育特點和要求,選擇適當課程授課方式。在學習資源建設方面,根據學生的學習條件和自身基礎的差異性,采用多種媒體(文字、音頻、視頻、模擬、仿真、動畫等)技術的應用呈現課程內容,為學生自主學習提供最大方便。我們編寫并開發了該課程的教材、實驗指導書、視頻、電子教案、流媒體課件、Flas、實驗案例、素材庫、網絡課件等,形成了豐富的立體化的教學資源,并將這些資源放在教學網站上供教師和學生瀏覽。在媒體設計上一體化,突出各自優勢、形成優勢互補。除具備課程所需的課件外,還設置了諸如實時交互、網上答疑、遠程網站、自學導讀、電子閱覽等網絡教育可以實現的現代教學形式。

課程的教學平臺是立體化的,在設計上既體現了基于建構主義理論的教師主導型,引領型的價值理念,又給予學生自主選擇、自主討論、自我測試的平臺空間,實現了教師主導引領和學生自主選擇的統一。通過導學,學生可以快速掌握網絡學習的方法,利用教學平臺進行師生交互。同時,我們還創建了一個完整的教學支持服務體系,可以合理、有效地組織每個教學環節,注重教學過程和教學質量的跟蹤管理,以確保應有的教學成效,培養了學生網絡環境下的自主學習能力與實踐能力,達到培養優秀應用型人才的目標。

3針對網絡教育的特點,建設師資隊伍

在網絡教育中,師生分離的特征決定了師生之間的交流不方便、不及時,教師從學生身上獲得的信息很少,相反也是如此。這就從客觀上決定了網絡教學中的師生需要建立更多同步或異步的交流途徑,以彌補師生交互的缺失,而教師則需要投入大量的時間和精力與學生進行交流,如解答學生疑問,指導學習過程,組織網上教學活動等。

在現代遠程教育中,教師通常由學校教師兼任,教師的學校教學和網絡教學之間經常發生矛盾。為了解決這些問題,我們在師資隊伍建設時注意了各種不同類型人員的配備,包括了主講教師、教學輔導教師、班主任以及網絡維護技術人員。其中,主講教師主要負責課程的學術質量,包括:制定課程目標,設計教學大綱,組織教學內容,完成教學設計,錄制課程講解,設計考試試題等;輔導教師主要負責教學過程的指導與支持,包括:課程信息,組織教學活動,指導學習過程,答疑討論,布置和批閱作業,批閱試卷等;班主任則負責學生的管理工作,隨時在網上和學生溝通,一方面增加了學生的歸屬感,另一方面能及時把握學生各方面的動態,及時解決他們的問題,對促進學生持續、有效的學習,降低輟學率有很大的幫助。網絡維護技術人員則全天候為學生提供技術支持服務,維護與建設網絡教學資源,確保系統平臺正常運行。

經過幾年的建設,目前我們已經形成了一支穩定的教師隊伍。在完善的網絡教學制度管理下,促進了學生個性化的自主學習,規范學生個性化自主學習的行為,引導學生按照開放教育的要求學習,并保證學生個性化自主學習的質量。

4網絡資源建設中的教學設計與學習活動設計

在網絡教育中,網絡教學資源是學生進行自主學習、獲得知識和技能的基本途徑。遠程學習者與本科生在自身特征上存在很大不同,需要建立導學策略和組織學習活動,引導和督促其完成學業。通過網絡教學資源,應該能為學生系統化呈現教學內容,促進學生對課程的理解,引導學生進行學習。因此,我們在課程的網絡教學資源建設時,精心進行了教學設計,主要包括以下幾個方面:

(1) 學習內容設計:選擇適應應用型人才培養的課程內容;打破課程內容的線性章節結構,設計出適合學生自主學習的內容組織結構。

(2) 教學策略設計:設計教學內容的呈現方式和使用方式,如文字呈現、教師講解、動畫演示、效果對比、模擬操作等。

(3) 動機策略設計:設計富有激勵性的學習環境,激發和維持學生的學習動機,如技術的新穎性、界面的藝術性、反饋語的歸因導向、學習伙伴的伴學等。

(4) 學習指導設計:設計學習指導的內容和呈現策略,包括學習的重點、難點、學習方法的建議等。

(5) 學習評價設計:設計學生自我評價的內容和評價策略,如自測練習、模擬考試、學習游戲等。

(6) 學習資源設計:設計并提供與教學內容緊密相關的擴展學習資源。

同時為滿足學習者的需要,學習活動則設計了以下一些模塊:

(1)“課程概況”,包括“課程介紹”、“課程大綱”、“考試大綱”和“參考資源”等模塊,為學生提供學習的準備性材料。

(2)“自學周歷”模塊為學生的學習時間和活動安排提供指導。

(3)“教學互動”中“主講教師”、“課程論壇”、“小組論壇”、“語音答疑”、“留言信息”、“問題解答”等模塊是學生與老師和同學進行交流討論學習的平臺。

(4)“教學互動”中“學習進度”、“在線作業”等模塊,幫助學員把握自己的學習進度以完成學習任務。

(5) 每一章的學習中,給學生提供了“學前指導”、“內容講解”、“總結評價”和“擴展學習”模塊?!皩W前指導”為學生學習章的內容提供準備性的材料,使學生明確學習的目標、方法、重點難點等;“內容講解”是學生學習的主要內容,由老師進行講授;“總結評價”讓學生及時地評價自己對內容的學習情況及效果;“擴展學習”為學生提供更多的學習資料,滿足學生的個性化學習需求。

(6)“原理動畫”模塊將課程中比較難以掌握的學習知識點內容,以動畫和具體操作的方式呈現,幫助學生更好地理解學習內容。

(7)“概念速查”為學生學習提供一些輔的工具。

(8)“參考資源”模塊給學生以廣博的輔助材料,拓展學生的理論視野,增強學生的學習興趣和知識面。

上述的教學設計和學習活動設計,在課程的遠程教學方面起到了重要的作用。

5網絡支持服務

遠程教育不僅要為學生提供教學內容和資源、組織學習活動,還要提供強大的學習支持服務。這不僅包括提供關于課程內容答疑、資源、實踐等與學習有關的服務,而且包括提供與教學管理及其他相關的支持服務。

為了網絡教育的順利開展,在本課程在網絡資源建設中,提供了包括授課、課程發送、學習輔導、學習資料提供、作業批改和意見反饋、考試實施和成績管理,技術培訓等支持服務內容。

授課過程中,注重培養學生的自主學習、協作學習和探究性學習的能力,包括對資料的收集、整理、分析、判斷、評價、綜合等能力。

通過在線課程基本信息和課程導學完成了“學習目標、學習要求、學習內容、學習模式、學習方法、考核方式、評價標準、評價內容”等課程發送功能。

在學習過程中提供“語音答疑”,使學生能跟老師實時地交流學習中問題;在“主講教師”、“小組論壇”、“班級論壇”等教學互動的模塊中,可以通過發帖提問、跟帖學習的方式,讓師生共同參與,討論學習中出現的問題,引導學生積極思考,逐步提高;另外,學生還可以通過“友情鏈接”進入到與課程相關的資源網站。

完成課程學習后通過“總結評價”、“自測習題”、“模擬試題”等模塊,幫助學生總結所學的知識,并對學習效果進行評價;通過“擴展學習”、“參考資源”等模塊,幫助學生拓寬學科的視野,把握學科前景。

提供的學習資源具體包括:靜態資源和動態資源。教學視頻、教學講義、教學實驗錄像、參考書目、歷年考卷、在線習題、案例討論、在線答疑、網絡課堂、課程論壇、優秀作業等等。

考試實施和成績管理,具體包括“編制考卷、施測、評閱考卷、成績查詢”,考卷的編制,由教學辦公室組織,任課教師具體完成??荚嚬ぷ鞯拈_展,由學院統一組織,各教學點配合,統一按北京理工大學考試管理制度進行實施。教師閱卷后,在線登錄成績,學生可在線查詢成績。

專職技術人員全天候為學生提供技術支持服務。北京理工大學現代遠程教育學院還設立了技術支持免費網絡電話,用來提供關于網絡學習、操作指南、常見問題的支持。

另外,北京理工大學遠程教育學院堅持定期開展教學效果評價和實時跟蹤評價。建立了包括教學內容、教學手段、教學過程、媒體應用、考試管理等方面的多種評價措施,對教學效果進行全面評估。

對學習過程的監控,則利用教學管理平臺,統計學生網上資源使用情況和教師對學生開展支持學習服務的情況。

經過幾年的建設,本課程的學習支持服務系統全部實現了網絡化,極大提高了服務的效率和水平。

6結論

“數據結構與算法設計”網絡教育精品課程的建設,主要是針對遠程教育的特性進行的。通過對“一流的教師隊伍、一流的教學內容、一流的教學方法、一流的資源和教材、一流的教學管理和支持服務”的建設,體現了一流網絡教學的特點,體現應用型人才培養目標,符合科學性、先進性及網絡教育規律和教學改革的方向,適合于在職從業人員和業余學習和終身學習。通過現代教育技術、方法和手段的運用,到位的學習支持服務,發揮著示范、輻射和共享的作用?!皵祿Y構與算法設計”2008年被評為國家級網絡教育精品課程。該課程所建設的網絡教學資源始終開放,這些資源已經與北京理工大學該門課程的本科教學共享。課程資源網址為/2008/ public/。課程資源今后將會不斷地更新維護,以保障該課程的可持續建設與發展。

參考文獻:

[1] 教育部辦公廳. 關于2007年度國家精品課程申報工作的通知(高教廳函[2007]25 號)[EB/OL]. jpkcnet. com/new/ zhengce/default.asp.

[2] 教育部高教司. 關于2007年度網絡教育精品課程建設與申報工作的通知(教高司函[2007]103 號)[EB/OL]. /new/zhengce/Announces_detail.asp?Announces_ID=98.

數據結構與算法范文5

關鍵詞:數據結構;知識點;課程體系;程序設計

中圖分類號:G642.41 文獻標志碼:A 文章編號:1674-9324(2015)27-0125-03

一、引言

《數據結構》一直被認為是計算機、信息管理與信息系統、電子商務等專業重要的基礎課程之一。該課程的知識涉及到多學科與多專業,掌握該課程將對學生后續課程的學習起到重要的知識鏈接作用。數據結構課程的主要知識點包括:①線性表的順序存儲結構與鏈式存儲結構及對應算法;②棧的順序存儲與鏈式結構及對應算法;③隊列的順序存儲與鏈式結構及對應算法;④串的順序與鏈式存儲結構及對應算法;⑤數組和廣義表的存儲結構及對應算法;⑥樹和二叉樹的順序與鏈式存儲結構及對應算法;⑦查找方法;⑧排序方法等。為學好這門課程,必須依據課程體系,明確數據結構課程中的概念與術語,靈活運用這些知識點,以達到扎實掌握該課程難點的目的。

二、數據結構的先修后繼課程及知識體系結構

1.掌握數據結構課程的先修與后繼課程。以信息管理與信息系統專業課程體系為例,清晰了解和掌握與數據結構相關聯的先修與后繼課程(如圖1所示)。先修課程主要有:計算機信息處理概論、匯編語言程序設計、高級語言程序設計(C、C++、Java等)、計算機組成原理、離散數學、運籌學、圖論等。后續課程主要有:數據庫原理、信息系統開發方法、編譯原理、信息檢索、數據倉庫與數據挖掘、操作系統、信息集成技術及應用、電子商務與物流信息管理、大數據分析等相關課程。

2.數據結構課程實施框架體系的創新模式。圍繞如下頁圖2所示的數據結構課程實施框架體系的創新模式講授數據結構課程。明確數據結構課程的知識體系和主要知識點。該模式的優勢在于:能夠使學生快速掌握數據結構的概念、術語,客觀世界問題對應在計算機外部的表示方式,在計算機內部的存儲方式,以及如何對它們進行操作(運算);除此之外,還能夠嚴格按照數據結構課程的各個知識點進行梳理,清楚地歸納出數據結構與其他相關課程的關聯關系。

三、運用歸納總結方法對數據結構課程的知識點進行分類

以嚴蔚敏教授出版的數據結構經典教材為例,將數據結構的知識點進行分類:第一類將第二章“線性表”、第三章“棧與隊列”、第四章“串”、第五章“廣義表”劃分為數據的線性結構部分;第二類將第六章“樹與二叉樹”、第七章“圖”劃分為數據的非線性結構部分。

將自然界的線性問題對應的數據結構實例例舉出來,形成數據結構問題的感性和直觀的認識;然后再由淺入深地掌握其相關的知識點。例如:①為使管理人員快速找到客戶相關信息,用計算機處理該業務應首先確定所使用的數據結構形式,如果希望將電話號碼作為關鍵字,姓名的拼音作為次關鍵字,那么,會容易地查找出“陳”性拼音順序排在“周”性之前的線性關系。②到銀行辦理業務對應的數據結構形式是隊列模式,即滿足“先來先服務,后來后服務”的服務規律。③對字符串進行存儲與處理時,其存儲結構具有緊湊和非緊湊形式,因此需按照形式的不同,進行分類處理后,再對其進行操作(如:插入、刪除、查找、模式串匹配等)。④到圖書館借書時,圖書管理員檢索的模式與圖書的存放形式有關。

與線性結構相比,非線性結構要復雜得多,即線性表的數據結構中數據元素的邏輯結構與物理結構之間存在一一對應的順序關系;而非線性的數據結構中數據元素的邏輯結構與物理結構之間不存在一一對應的順序關系,它們之間的順序是任意的,也就是說非線性的數據結構中數據元素之間不存在前驅和后繼的順序關系,為使初學者掌握其存儲結構對應的操作等相關知識點,必須將數據結構教科書中關于樹與圖的遍歷進行深入而細膩的講授。以二叉樹的遍歷問題為例,說明非線性結構應該著重講授的知識點與教學方式。一般遍歷某二叉樹的原則是:先確定樹根,然后按照樹的遞歸原則進行先序、中序和后序等遍歷,下圖3所示。從三種遍歷的序列可以看出,其每種遍歷的結果序列都有其唯一的前驅和后繼結點。這個規律說明一個道理:任何的非線性結構的結點元素都可以通過先確定遍歷的名稱,然后通過遍歷方便地對其進行訪問,比如:在前序遍歷的序列“-+a*b-cd/ef”仿照線性表的定義找出它們之間的前驅與后繼之間的關系;另外,同樣中序和后繼的遍歷結果也可以仿照線性表的定義找出它們之間的前驅與后繼之間的關系。同時,注意對學生發散性思維的培養,可通過三種遍歷結果,進一步解釋難以理解的概念推理,推論一:若已知一棵二叉樹的前序序列和中序序列,則可以唯一地確定這棵二叉樹;推論二:若已知一棵二叉樹的后序序列和中序序列,則也可以唯一地確定這棵二叉樹。在講授該本課程知識點的同時,應考慮對后繼課程的鋪墊與銜接,上述三種遍歷結果,對后續《編譯原理》課程的前綴碼、中綴碼、后綴碼等概念的理解與掌握將起到重要作用。

四、運用靈活的教學方式講授難點章節

由于數據結構課程設計到多學科(專業)知識點,因此,教與學的過程中,難免存在難點、“瓶頸”問題和難以理解的算法。為解決此問題,在教學中應注重選用具有代表性的例子,如:在第七章的許多工程類例子與運籌學的例子非常相似,因此,在講授此章節時,注重教材例子與運籌學學習的重點,但不同專業基礎課程的側重點不同。

1.非線性數據結構的講授方法。以第七章為例,該章的相關知識內容有:圖論、數據的邏輯結構及其對應的物理結構、算法實現的技巧與方法、優化問題、非線性問題的映射方法。主要存在如下難點:①非線性問題的邏輯表示方法。根據工程類例子的實際需求,找出該問題的邏輯表示方法是解決問題的核心。如:將符合多種方案選擇的工程類的工序問題(如:排課問題、具有先后時間次序的問題),運用有向圖的知識點將該問題表示清晰;應該標明該數據元素屬于鄰接表還是順序存儲形式。②非線性問題的物理表示方法。通過問題的邏輯表示方法可以將工程類的工序問題轉換成有向圖的存儲方式,然后再選擇圖的存儲結構,如:數組(順序)存儲、鄰接表(鏈式)存儲等方式。③如何編制實現解決非線性問題的算法(程序)。上述的邏輯結構確定了之后,再根據實際問題的要求進行實現程序的核心部分即算法的編制工作,當算法太復雜時,則先設計算法流程圖然后再編寫實現算法的程序。

2.非線性數據結構的上機實踐方法。最為有效的方法是選擇學生日常生活中與工程類算法處理流程相近的例子。如在拓撲排序的上機實踐選擇的題目是給某專業課程進行排序,這個例子的選課過程正好符合工程類工序(周期)施工排序的案例;設計報文或字符編碼時,按照第六章中的哈弗曼樹的存儲結構對報文進行編碼;選擇順序線性表的上機例子是在一張學生登記表中進行插入和刪除運算;選擇鏈式線性表的上機例子是在一張按照拼音順序進行插入和刪除運算的線性表。

五、閱讀程序的技巧與必備知識

數據結構的大量算法都要靠其對應的程序來驗證,那么,如何針對數據結構經典算法來編程并且閱讀這些經典的算法(程序)呢?這也是學好數據結構這門課程的關鍵。

1.讓學生通過閱讀程序,了解如何科學選取一個好的程序(算法)。由于程序是依靠“算法+數據結構”實現的,對一個實際問題來說,可以有不同的程序來實現。僅以一個簡單的例子說明,如:運用計算機進行n的平方計算,有3種方法:n的平方=n n;n的平方=1+3+…+2n-1;高級語言自帶的求平方函數,如double pow(n,2)。上述算法一個采用乘法,一個采用加法,一個是高級語言自帶的,究竟哪種方法好呢?主要還是看其運算精度、算法的復雜度和空間復雜度等綜合指標。

2.讓學生通過閱讀程序,了解和掌握相關知識點。應補充程序設計分類的相關知識。程序包括:直接程序設計,條件控制的程序,循環控制的程序(計數器控制的循環結構程序的算法、條件控制的循環結構程序的算法、變量控制的循環結構程序的算法)。還應該向學生介紹算法轉換為運行程序的經驗,如:數據的初始化如何處理;程序中的循環計數器與判斷條件以及檢驗結果如何檢驗;遞歸程序中的出口條件判斷問題;邏輯變量、精度、機器零、數值零、文本非結構化等歸一問題。

3.快速閱讀程序的必備知識。按照數據結構的課程要求,必須在讀懂經典算法的基礎上,才能夠編制一個邏輯結構嚴謹的程序。但是,在教學中發現,有的學生學習方法不當,導致閱讀程序的能力低而不能系統掌握數據結構課程的知識點。為了解決這一“瓶頸”問題,在講授數據結構第一章緒論內容中,增加了程序設計方法、編制算法流程圖的標準與規定、算法與程序的區分、如何選用大O來計算算法的時間復雜度和空間復雜度等知識點。遞歸程序的閱讀是數據結構中較難掌握的內容。為讓學生順利閱讀遞歸程序,必須在閱讀遞歸算法之前,補充相關的知識,如:計算機原理“中斷”的概念;程序設計中的過程調用的步驟和閱讀方法;遞歸程序本身的特點,以及遞歸過程與一般過程的區別等。

六、小結

數據結構課程是計算機相關專業重要的基礎課程之一,但課程學習難度較大,為提高該課程的教學質量和教學效果,本文梳理了數據結構的先修后繼課程,構建了課程的知識體系結構,提煉出數據結構知識點分類的線性與非線性兩條主線,強調將理論學習與工程實踐的有機結合,提出實現程序設計與具備閱讀程序的技巧是解決課程難點的重要手段。

參考文獻:

[1]嚴蔚敏,吳偉民.數據結構[M].北京:清華大學出版社,2011.

[2]陳燕,等.數據結構[M].北京:科學出版社,2014.

數據結構與算法范文6

關鍵詞關鍵詞:數據結構;算法;程序設計

中圖分類號:TP3-0文獻標識碼:A文章編號文章編號:16727800(2013)011002202

0引言

《數據結構》不僅是計算機各專業的一門重要的專業基礎課,而且是其它理工專業的熱門選修課,在整個課程體系中處于承上啟下的核心地位。數據結構這門課程旨在介紹各種重要的數據結構及有關算法,使學生對數據結構有全面的認識并能熟練運用于程序設計,為今后從事科研和開發打下良好的基礎。這門課要求學生掌握數據結構的概念及有關算法,如線性表、數組、樹、圖、排序、查找、文件等,并能運用這些常用的算法去解決一些實際問題,為其它專業課提供程序設計基礎。

通過《數據結構》的學習,使學生了解數據對象的特性,學會數據組織的方法和把現實世界中的問題在計算機內部表示的方法,以培養學生良好的程序設計技能,并初步掌握算法的時間和空間復雜度的分析技巧,以便在實際的工作中,能根據工作中的數據對象特性,選擇適當的數據結構和存儲結構以及相應的算法。同時使學生了解本課程及內容在計算機科學中的應用和地位,為編譯原理、操作系統、數據庫原理等后續專業課的學習打下堅實的理論基礎和實踐基礎。

1《數據結構》難學原因

很多同學都覺得學好《數據結構》很難,以筆者的經驗分析原因如下:

(1)大多數學校《數據結構》課程是安排在C語言程序設計之后,而C語言雖然相對而言是比較簡單的計算機語言,但作為一門入門語言,能夠學好的同學本身就不多,學精通的就更少了。特別是結構體、指針以及函數的應用,而《數據結構》中都是用的結構體數組、指針,而且都是以函數形式出現的。對于抽象的數據存儲結構、消化算法,將算法轉化為C語言函數,并要編寫出運行該函數的主程序,這無疑是擺在學生面前的第一道難關。

如果C語言的基礎沒打牢固,學習數據結構當然就會覺得很難。

(2)《數據結構》中的算法較多,在數據結構的教學中,很多學生反映算法多,而且其中的部分算法非常不容易理解。對于一個算法,我們首先要了解它的思想,然后分析它的概要,接下來再考慮細節,然后讀代碼,要花很長時間才能徹底搞清楚一個算法??傊瑢W生要多下功夫,往往這個算法剛理解得差不多了,又來了下一個算法。比如講到圖這種數據結構時,圖的深度遍歷算法、圖的廣度遍歷算法、生成樹算法接踵而來,學生要學好,只有刻苦學習。

(3)學生掌握了算法,還要將算法轉化為程序代碼,再寫出主函數到調試運行,需要很扎實的程序設計功底,這要求學生需掌握好某種程序設計語言(如C語言)才能做得到。因為實踐中的問題往往比平時的習題要復雜得多。實踐使學生所學的書本知識“活”起來,起到深化理解和靈活掌握教學內容的目的。由于上述幾點原因,致使學生學習《數據結構》的難度變大。

2學好《數據結構》方法

《數據結構》是計算機課程中的一門專業基礎課,但它又有著不同于其它一些基礎課的特點,在于它有很強的綜合性,不僅僅涉及計算機軟件研究,包括“操作系統”、“編譯原理”等,還與計算機硬件有著相當大的關系,從編碼理論到數據存儲都離不開數據結構。因此可以說,《數據結構》是介于數學、計算機硬件和計算機軟件三者之間的一門核心課程。但是由于課程內容繁多,許多內容有著相當的難度。所以學好它并不是一件很容易的事情。那么,如何才能學好《數據結構》呢?

(1)立足課本。學好課本上的理論知識?!稊祿Y構》不是一種計算機語言,不會介紹新的關鍵詞,而是通過學習可以高效地組織數據,設計出良好的算法。學習這門課,要熟悉對算法思想的一些描述手段,包括文字描述、圖形描述和計算機語言描述等。因此,計算機語言基礎是必須的,因為它提供了一種重要的算法思想描述手段——機器可識別的語言描述。

(2)抽象問題具體化 ?!稊祿Y構》的一大特點是比較抽象,因此學生較難理解,所以要想辦法把抽象的問題具體化,一旦問題具體化了,學生理解起來就相對容易。例如本課程一開始就介紹了4種基本的邏輯結構:①集合結構:實體間除了“屬于同一個集合”的關系外,再沒有其它的關系;②線性結構:實體間除了“屬于同一個集合”外,還有一對一的關系;③樹型結構:實體間有一對多的關系;④圖型結構:實體間存在多對多的關系。這4種抽象的邏輯結構形式是人們通過分析研究大量的實際問題而抽象出來的數據結構特性,很多同學很難理解,因此,可以先從實例開始討論用計算機解決具體問題的各個步驟:①提取與此問題相關的數據信息并分析數據特性;②把該問題中的各種數據按某種方式存儲在計算機中;③對數據進行相應操作以便得到想要的結果;④對各種存儲形式和操作方法進行對比分析。然后再討論另一個相似問題的求解步驟,并找出這兩個問題具有的共同數據特性,讓學生明白以上問題因為有著相同的數據特性,所以對數據處理的方法也相似。以此讓學生明白集合結構、線性結構、樹型結構和圖型結構是根據現實世界中實體之間關系的不同特性歸納出來的數據結構特性。

(3)加強練習。在學習這門課程的過程中,要多加練習,以便學生能消化課堂上學習的知識,也能加強學生對所學知識的理解以及應用,并能夠觸類旁通,舉一反三。

(4)注重實踐?!稊祿Y構》是一門理論與實踐相結合的課程,如果只注重理論,學生容易造成“眼高手低”的情況,理論知識學的很扎實,但實際動手能力很差,不符合我們的培養要求;反過來,如果只注重實踐,又會造成只見“點”不見“面”的情況,造成系統解決問題的能力差。實踐有兩個作用:①驗證算法是否正確。比如,在設計一個新的數據結構時,我們腦中想到的設計算法并不一定是完美的,且往往是不完善的,甚至可能是錯誤的?!皩嵺`是檢查真理的唯一標準”,我們通過程序來驗證算法的正確性;②實踐可培養我們完整、徹底解決問題的能力。 我們在思考時,只是簡單、粗略地解決了一個問題,而很多細節問題并沒有考慮到。而動手實踐過程中,不得不考慮各種細節問題,不然,程序編譯通不過,或者編譯通過了,但沒有達到預期的結果。因此在學習這門課的過程中,要采用實踐與理論學習緊密結合的方式,通過上機解決一些典型問題,通過分析、設計、編碼、調試等各環節的訓練,深刻理解、牢固掌握所用到的一些技術。實踐是對學生全面綜合素質進行訓練的一種方法,是課堂教學的一種延伸。每個問題的正確求解,都要通過分析問題、建立模型、設計算法、編制程序、調試優化等步驟。通過實踐后,可以提高對《數據結構》課程內容的深入理解,同時也能使學生更有成就感,從而更加積極地學習這門課程。

(5)注重總結。在《數據結構》的內容中,線性結構、樹型結構、圖型結構都遵循首先是邏輯結構、其次是存儲結構、接下來是基本操作的實現這一原則;而且各種數據結構在存儲時,均有兩種方法:順序存儲和鏈式存儲。順序存儲是以數據元素在存儲空間位置間的某種關系來表示邏輯上的關系。如以位置相鄰表示線性表中數據元素之間的前驅和后繼的關系,一般用數組來存儲。鏈式存儲則不再要求數據元素在存儲空間的位置之間保持某種關系,而是在存儲實體屬性值的同時存儲一個或若干個指針指向其有關系的實體存儲單元的首地址,一般用鏈表實現。順序存儲時插入和刪除操作因為要大量移動數據元素(末尾除外),所以效率不高,鏈式存儲則不需移動;如果按序號查找,順序存儲則可直接找到所需數據元素,而鏈式存儲則效率不高。通過這些共性化問題可以理清思路,幫助我們理解本課程,同時針對這幾種結構的不同特點,再強調它們各自在邏輯結構、存儲結構和基本操作上的個性化,加深理解。所以,在學習這門課程的過程中,應該不斷吸收、總結、歸納。

3結語

要學好《數據結構》這門課程,要多學、多練、多實踐。同時,學習《數據結構》,能加強對某門計算機語言(如C語言)的理解和掌握;而對計算機語言的理解,又能促進《數據結構》的學習,兩者相輔相成,互相促進。

參考文獻參考文獻:

\[1\]耿國華.數據結構:用C語言描述\[M\].北京:高等教育出版社,2011.

亚洲精品一二三区-久久