前言:中文期刊網精心挑選了數據結構范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
數據結構范文1
關鍵詞:MOOC;在線教育;DIY;實踐教學;PAT
一、引言
隨著人類社會進入網絡時代,以大規模開放在線課程(MOOC)為代表的基于互聯網的在線教育模式正迅速形成對傳統教育的沖擊。如李曉明在《慕課》一書中所定義:MOOC應該是“主講教師負責的,通過互聯網開放支持大規模人群參與的,以講課短視頻、作業練習、論壇活動、通告郵件、測試考試等要素交織的,有一定時長的教學過程”[1]。雖然其中提到的各個要素看似在傳統教育特別是傳統遠程教育中都有包含,但由于“對參與者學習過程無監督”這一特性,使得MOOC的教學方式與傳統方式相比,面臨著更大的挑戰。本文是兩位筆者根據自己在愛課程網“中國大學MOOC”和網易云課堂這兩個平臺開設MOOC課程一年多時間的親身實踐,總結分析互聯網環境下在線教育課程的實施經驗,包括:教學內容設計、短視頻制作、互動與實踐指導等方面的內容。
“數據結構”是計算機科學與技術專業、軟件工程專業甚至于其他電氣信息類專業的重要專業基礎課程。它所討論的知識內容和提倡的技術方法,無論對進一步學習計算機領域的其他課程,還是對從事大型信息工程的開發,都是重要而必備的基礎?!皵祿Y構”課程所應該培養的高級程序設計與算法分析能力不僅是學生進一步深造的潛力體現,也是用人單位選拔優秀畢業生的重要指標。
課程要求學員在掌握數據結構基本概念和基本方法的基礎上,能夠針對具體求解問題設計合適的數據結構和算法,并具有采用程序設計語言實現的能力。其中,一個重要目的是,幫助學員明白一些經典的數據結構為什么存在以及在什么情況下可以最好地解決什么樣的問題。針對課程教學目標和在線課程的對象特點和學習特點,我們在MOOC課程設計和實施時,重點考慮:(1)內容如何組織,以滿足不同對象的學習需求和碎片化的學習特征;(2)視頻制作如何更有吸引力,能突出問題求解思路以及不同方法的特點;(3)教學過程如何實施,特別是如何加強實踐能力培養和協作式學習,不斷激發學習者的熱情和動力。
為了促進學員自己動手編程實踐、解決問題,一個功能強大的實踐教學平臺就是必不可少的支撐。另一方面,由于MOOC的教學實施與考核都是在無監督的狀態下進行,目前尚無有效技術手段保證考核結果和證書獲得者與課程完成人具有可信的對應關系,所以MOOC的學習結果很難得到用人單位(包括高校與企業)的充分重視。美國的MOOC組織者(如Coursera、edX等)是通過線下有監督的考試來頒發更有參考價值的證書,但其規模受到人力資源(閱卷教師)的限制。一個有監督的、由自動判題系統支持的線上考試將可以部分解決上述問題。本文也將介紹筆者在平臺建設方面所做的部分工作。
二、碎片化的教學設計
MOOC與傳統教育的一個很大的不同在于,傳統教育中學生是被組織在一起學習的,各種教學環節的“有組織性”非常強,形成了強大的外在驅動力。在這種前提下,即使教學方式枯燥呆板,即使學生的內在動力不被激發,也可以在一定程度上用外力“推”著學生們向前走。而且同一教學環境中學生的年齡和基礎背景相似,也使得教學內容的組織較容易統一。
而MOOC的學員來自社會各界,具有跨度很大的年齡層、截然不同的基礎背景、五花八門的學習目的,在各自內在動因的驅使下,聚集到同一門課程中學習。這種組織方式下形成的內聚力比學校中專業的內聚力弱很多,所以教師必須努力讓自己的課程產生足夠大的吸引力,“吸”著學員們向前走。而吸引力最主要的基礎,就是課程內容的組織。
由于互聯網讓各種信息的獲取變得越來越容易,各種針對人類注意力的心理學研究表明,過多信息消耗了接受者的注意力,導致信息碎片化成為不可避免的趨勢。MOOC課程教學設計面臨的首要問題就是,如何利用碎片化的信息為學員提供系統化的知識。傳統課堂要求的按45~50分鐘組織的教學內容,在MOOC中必須被更細致地梳理、切分,成為每個6~10分鐘的短小視頻――這使得學員可以隨時隨地充分利用自己業余時間的零星碎片,在注意力最能有效集中的時間區間里進行學習。同時,碎片化的教學內容組織也容易滿足不同學習者的學習目標。
例如:在“數據結構”的第一次課上,我們需要講清楚兩個基本概念,即“什么是數據結構”以及“什么是算法”。在傳統課堂上,我們大約分別需要花32分鐘和23分鐘完成講授,并且最后花20分鐘通過講解一個具體的應用實例來幫助學生更感性地認識理解這兩個抽象的概念。而在MOOC上,一段長達32分鐘的理論講授視頻足以令絕大多數學員關閉視頻窗口,因為他們比傳統課堂里趴在教室后排呼呼大睡的學生多了隨時拔電源的自由。為了適應學員碎片化的學習習慣,我們必須把這三大塊內容進行更細致的切分,如表1所示。
這種碎片化設計的要點是圍繞課程的教學目標進行“自頂向下”的內容設計:整個課程需要劃分哪些專題(相當于“章”),每個專題下又需要劃分哪些主題(相當于“節”),每個主題又是如何引入問題、如何展開、如何通過例子強化以及如何收斂等等。每個主題下具體的內容就可以由一系列相對獨立的短視頻來實現。
注意到我們強調應該設計6~10分鐘的短視頻,是因為有不少心理學研究表明,成年人的“倒U型注意力曲線”在峰值附近持續的時間長度大約為6~10分鐘[2]。但這并不是說我們必須把一段復雜的、不可能在10分鐘內講清楚的內容硬性壓縮成10分鐘,或者不惜破壞內容的完整性也要切分。這個“6~10分鐘”的規律只是提醒我們,應該知道學員在這樣一個時間段附近會出現注意力不集中現象。教師可以通過產生額外的刺激――比如突然變換語調,或者在視頻中插入一個提問(“中國大學MOOC”和網易云課堂都提供在視頻中插入提問的功能,視頻播放會在提問后暫停,學員必須回答了問題后才能繼續播放),哪怕是開一句玩笑,達到將學員的注意力拉回到峰值水平的目的。例如表1中列出的10段短視頻中就插入了6處提問。
碎片化內容設計的另一個關注點,是為基礎不同、學習能力不同的學員提供不同層次的幫助。例如我們在課程中除了有常規的授課內容,還設計了“小白專場”,針對基礎比較薄弱的學員,詳細講解部分練習題的C語言程序實現細節。而這一部分又細分為三個步驟,即:問題的理解和算法思路、程序框架的搭建、關鍵細節的實現。學員在這個逐步細節化的過程中,有可能根據自己的理解能力在任何一個環節恍然大悟,退出視頻開始自己動手實踐。而這種教學效果卻是傳統的課堂難以達到的。
三、重實效的樸素制作
MOOC的制作方法多種多樣,有豪華的,也有樸素的。根據我們的理解,決定學員去留的關鍵因素,是課程內容的組織和教師講授的技巧,至于視頻制作的專業技巧、聲音和畫面的質量等等,則屬于錦上添花。不過,從實踐情況看,與畫面相比,聲音的作用更大,因此一個好的話筒是MOOC視頻制作的要素。
在個人有限的精力和教學效果之間權衡之下,我們選擇了注重實效的DIY樸素制作方案,即采用簡單的“居家”制作設備,完全自己動手,甚至沒有動用任何助教,就完成了全部138段視頻的錄制與后期制作。
我們制作視頻的主要工具有:具有錄制短視頻功能的相機(配三腳架和遙控器)、麥克風(配三腳架、調音臺)、補光燈、視頻編輯軟件。事實上,真正重要的工具就是相機、麥克風和視頻編輯軟件。當室內自然光線充足時,適當調大相機ISO可以基本達到專業補光燈的效果。
由于后期制作是自己動手,所以錄制過程可以比較自然,不必強記臺詞。缺點是后期制作如果精益求精,則需要花費較多時間剪輯。剪輯的要點,并不在于制作出多么炫目的視覺效果,而在于牢牢把握住對學員視線以及思路的引導。
視線引導是刺激聽眾注意力的一種方法。在傳統課堂上,教師可以通過在講臺上移動以及豐富的肢體語言引導學生的視線變化,用教鞭等工具指引學生跟隨自己的思路。在MOOC視頻中,可以通過人像的動作、課件放映中鼠標箭頭的移動以及視頻編輯軟件提供的高亮、筆畫等功能達到同樣的效果。至于人像和課件出現的比例、頻率到底應該多少為宜,其實并無一定之規,關鍵點是:盡可能在屏幕上保持變化。切忌讓一個充滿了文字的、完全靜止的畫面持續若干秒鐘。
思路引導較視覺引導更為重要。我們的課件設計是極簡風格的,對所有課件中動畫的設計,原則上是對思考過程的展示;而所有無助于此的元素,都不必出現,以節省學員下載課件的時間。例如,在展示一個復雜算法的偽代碼時,并不是一次性將全部偽代碼放映出來,再逐行講解其功能――這是計算機執行的過程,并不是人類思考的過程。我們會從整體思路入手,先根據算法流程展示出代碼框架,再逐步演示框架內各個模塊的細化過程,必要時輔以實例的動畫演示。
四、教學過程中的互動與實踐
對于習慣于在課堂上與學生頻繁互動的教師而言,MOOC在師生互動方面具有明顯的弱點。不過,各大平臺都提供了多種彌補的方法,如:視頻內插入提問、視頻間插入測驗、學員討論區等。充分利用這些工具,也可以在一定程度上達到較好的互動效果。
視頻內插入提問在第二節已經提到,等價于教師在傳統課堂上拋出一個較為簡單的問題,期待學生在短時間內給出反饋。這樣做的目的并不是考查學生對知識的掌握,而主要是刺激學生的注意力,將可能開始懈怠的思維拉回到主題。MOOC在這方面甚至可能達到比傳統課堂更好的效果,因為課堂上總有懈怠的學生根本不理會教師的問題,往往只有少數積極的學生回答;而MOOC中所有在看視頻的學員都會被打斷,必須進行一些思考才能繼續。
視頻間插入測驗則是有傳統課堂無法達到的良好效果。當一個知識點講解完成,及時的小測驗可以非常有效地幫助學生檢驗自己的聽課效果。而在傳統課堂中,頻繁的測驗不僅對教學進度造成負擔,而且增加教師課后批改的工作量,結果反饋也不能做到十分及時。MOOC支持在任何一段視頻結束后,插入一個小測驗,由系統自動判題,即時給出結果。學員通過這樣的測驗,可以檢查自己對前一段視頻中關鍵內容的理解程度,及時發現問題,還可以反復觀看學習。
討論區是課堂的延伸。我們充分利用討論區功能,在每次課后布置了一些討論話題,這些話題多為視頻講解內容的深入延伸,供學生課后思考討論。例如在介紹完平衡二叉樹之后,提出“是否可以用左右子樹結點數差來衡量二叉樹是否平衡”;在介紹了圖的兩種遍歷方法后,要求學生“試比較DFS和BFS的優點和缺點”等。論題一般在一個主題結束后,最好為生生互動留一段時間教師再介入,可以點評學生的回答,1~2周后參考答案。
對于“數據結構”這種實踐性比較強的課程而言,還有一個非常重要的環節,就是動手實踐。目前各個MOOC平臺對于程序設計類課程的實踐支持較弱,而遍布各大高校的在線裁判系統(Online Judge,簡稱“OJ”),其初衷是為參加ACM大學生程序設計競賽的學生而建立,普遍存在幾個問題:
(1)題目類型單一。一般OJ只支持競賽類型的編程題。
(2)題目難度偏大。因為面向的用戶是各校頂尖的參賽選手,所以題目多為競賽型,即涉及知識點的綜合性很強,但缺乏針對單一知識點的基礎訓練題目,也無顯性的知識點關聯。
(3)判題過程為黑盒測試,很難強制學生必須使用某種指定的數據結構解決問題。例如最常見的問題是,企圖考察鏈表處理基本功的題目,基本上都可以用數組解決。
(4)判題方式嚴苛。一般為0/1式,即通過全部測試用例可得到滿分,否則零分。這種方式對初學者打擊較大,并且從教學的角度考慮,區分度也較差。
(5)教學管理功能欠缺。OJ的風格是直接面向自我訓練的學生,并不考慮教師的參與,因此絕大多數OJ不具有教學組織功能。
針對上述問題,我們聯合網易公司開發了“程序設計類實驗輔助教學平臺”(英文名“Programming Teaching Assistant”,簡稱“PTA”,網址:http:///),作為基礎程序設計類課程、數據結構、算法分析等課程的實驗平臺,免費向全國高校教師開放。目前平臺中有判斷題、選擇題、程序填空題、函數題、編程題共千余道,并具有以下特點:
(1)面向教師,提供出題、布置作業/考試、成績一鍵導出等基本教學組織功能。
(2)題目具有靈活的課程知識點關聯,方便教師根據教學進度布置針對單一知識點的強化訓練,也可以關聯多個知識點設計綜合性題目。
(3)題目有難度標記,方便教師組織不同強度層次的訓練。
(4)函數題、編程題按測試用例評分,具有良好的區分度。
(5)測試用例提供“要點提示”,當教師注意到大多數學生都不能正確通過某些測試用例時,可以開放針對該用例的提示,對保持初學者的信心會有幫助。
這里特別值得一提的是“函數題”的設計。函數題要求學生嚴格按照題目給定的接口描述,完成具有指定功能的函數代碼。這類題目的優點是訓練重點突出,可以讓學生關注復雜算法的核心流程,而不必糾結于輸入輸出的格式處理或是以前已經訓練過的簡單函數的重復實現。例如要實現“最小生成樹”的Kruskal算法,我們需要用到最小堆和并查集。這兩個結構都已經在學習“樹”的過程中訓練過,且編程量較大,但只是Kruskal算法的輔助工具。如果不想讓學生在輔助工具的實現上花費太多時間,教師就可以將這個訓練出成函數題的形式,由教師準備好最小堆和并查集的功能函數,學生只要在建立最小生成樹的過程中調用即可。另一方面,函數題由教師規定接口,就使得指定數據結構成為可能。例如要訓練處理鏈表的能力,只要規定鏈表結點的結構,并規定函數傳入的參數為鏈表頭指針即可。
五、課程實施數據及思考
迄今我們已經先后在愛課程網“中國大學MOOC”和網易云課堂兩個平臺上分別開設了一個完整學期的課程,表2列出了部分統計數據。
總體上看,如大多數MOOC課程一樣,對證書有興趣的學生占比很低,這與我們在討論區與學員互動得到的印象是基本一致的。部分學員表示,注冊課程只為看其中某一章節,作為課堂學習的補充;另外也有學員表示自己的目的是應對IT業求職的筆試和面試等等。一個重要的原因,可能是MOOC的教學實施與考核都是在無監督的狀態下進行的,所以證書尚未得到用人單位的充分重視,考取證書的必要性不大。
我們自2011年8月起創辦了計算機程序設計能力考試(Programming Ability Test,簡稱PAT),采用分級式在線考試及自動評測方法,客觀地考核考生的算法設計與程序設計實現能力。目前在全國18個省/直轄市設置了考點,有包括谷歌、微軟等“世界500強”企業以及百度、網易、阿里、騰訊等96家知名企業簽署合作聯盟協議,接受將PAT測試成績作為衡量應聘人員程序設計能力的標準(劃定分數線、提供介紹信),受到考生和企業的歡迎。我們也將達到PAT甲級考試浙江大學計算機專業學生平均分的成績作為MOOC課程優秀證書的標準,目前有2位學員確認得到了優秀證書。
另一方面,從開課階段和結課階段的參與人數比較來看,也體現了MOOC學員的特點:大多數人在沒有足夠外力驅使的情況下,非常容易放棄。在此我們不斷檢討自己的教學方法,還有很大的提升空間。兩次開課之間,我們所做的比較重要的調整主要是兩方面:一是將課時從10周延長到12周;二是補充了部分程序實現的源代碼。做這樣的調整,主要是根據第一次開課得到的反饋,發現學員的學習能力差異巨大,我們需要補充更多細節幫助不同層次的人跟上進度。從數據比較來看,第二次開課雖然選課總人數下降,但堅持的人數百分比略有上升。這使得我們繼續增加了“小白專場”系列以及討論題參考答案系列,以加大對基礎薄弱學員的幫助力度。筆者著此文時,本課程正在“中國大學MOOC”平臺上再次開課,并且已經吸引了2.4萬余名學員注冊學習。后期努力的效果尚有待檢驗。
參考文獻:
數據結構范文2
關鍵字數據結構高效學習知識框架
1 引言
數據結構課程主要討論各種數據組織中的邏輯結構、存儲結構以及有關算法,研究如何根據實際應用的要求,對數據進行有效的組織、存儲和處理,進而編制出高效率的程序,是一門邏輯性和實踐性很強的課程。不少同學剛開始學習時,覺得這門課程很難學,知識點很多而且靈活多變,有些同學花很長時間學習該課程,卻收效甚微。因此,如何充分利用時間,高效地學習數據結構成為很多同學共同關注的話題。
2 關于高效學習的界定
不同時期和不同課程高效學習的內涵與特征會有所不同,目前關于高效學習的定義主要有以下幾種。
第一種定義認為高效學習應強調有效學習,認為那種死記硬背、生搬硬套的學習是無效的學習,不能夠真正理解、靈活運用所學知識。
第二種定義認為所謂“高效”是指能夠掌握有效的學習策略和思維策略,提高學習效率,從而既減輕學習負擔,又提高學習質量。
這些“高效學習”的界定或強調學習的結果,對學習質量的要求側重于認知和能力;或重視學習效率,但對學習結果沒有給出具體的評價標準。本文所討論的高效學習是指高效率、高效益的學習。高效益學習是學習效率追求的目標,而高效率學習是提高學習效益的前提。高效地學習數據結構,一方面指學生能充分利用時間,積極、主動地參與學習;另一方面是指學生能夠達到獲取知識、形成技能、培養能力的目的。
3 數據結構的高效學習
本課程的學習過程中,同學們應根據數據結構課程的特點,注意改進學習方法,提高學習效率,以達到高效學習的目的。此外,還應注意如下幾個問題。
3.1熟悉課程大綱,學習循序漸進
要學好數據結構,首先應該熟悉課程的教學大綱。整個大綱是本課程的主體知識框架,所涉及的范圍不是一些“點”的東西,而是“面”的東西。掌握課程大綱,就能容易地理清知識框架,抓住課程重點,可以充分利用有限時間掌握課程主要的知識結構。了解課程的知識框架和各種結構的關系后,可以從簡單到復雜、循序漸進、逐步深入地學習。
例如,對圖1所示的數據結構內容體系,可以圍繞線性結構、樹型結構、圖型結構和查找、排序這兩種重要的算法,以順序和鏈式兩種存儲結構為貫穿整個課程的主線進行理論學習和實踐學習。
對于每個章節的內容,也應該按照一定的流程進行學習。例如,首先掌握每章節的基本概念,再熟悉該結構的抽象數據類型定義和主要操作的實現方法,然后要理清算法實現的思路,以及算法實現的框架,最后通過上機調試進一步掌握該算法。
3.2不要過分關注數據結構的語言實現
數據結構是存在一種或多種特定關系的數據元素的集合,并不是“某種語言的”數據結構,它和具體語言無關。一些同學在學習數據結構的時候,往往不自覺地把數據結構與某種具體的程序設計語言(如C語言)聯系起來。
例如,講到數組時,同學的第一反應很可能是“[ ]”符號;說到鏈表時,也許很多同學首先聯想到的是“*”符號。雖然在實際應用中,數據結構總是要由某種高級語言來實現,但在學習數據結構的過程中,如果過分關注于數據結構的語言實現,思想就會被束縛在這些語言的語法規范中。
學習數據結構時,應該關注的是不同數據結構的特點是什么,為什么要用這種數據結構,在什么情況下用什么樣的數據結構,幾種數據結構的聯系和區別是什么……計算機程序設計語言作為數據結構的實現方式,是多變的,但數據結構作為框架和思想,是相對穩定的。學習數據結構,重要的是學習數據結構中的框架、原理和思想,只有理解和掌握這些,才能夠很好地運用數據結構來解決實際問題。
3.3加深理解,培養思維能力
學習數據結構,特別是學習算法時,應重視對知識的深刻理解,理解得越深,學習效果越好。首先應該從根本上認識數據結構的本質、數據結構和算法之間的密切關系,對知識應該“知其然,也知其所以然”,不然很容易陷入各種數據結構的復雜特性中。
有部分學生學習數據結構時會做大量的習題,但希望大家了解數據結構課程的邏輯性很強,同學在學習過程中應注意培養自己的邏輯思維能力,鍛煉理解能力,使自己分析問題的綜合能力得到提高。無論做的題多還是題少,都應將解題過程當作訓練自己思維的過程。應該在每次做完練習之后及時地歸納、整理、總結,從中找出自己的缺點加以補救,要注意比較,善于總結和反思,這樣就能夠做到舉一反三,提高效率。
3.4重視實踐
我們不過分關注數據結構的語言實現,并非不重視動手實踐,而是因為學習并掌握數據結構中的框架、原理和思想,目的是為應用打好扎實的理論基礎。
例如,在設計一個新的數據結構時,我們腦中產生的數據結構設計思路并不一定是完美的,而是不完備的,甚至是錯誤的?!皩嵺`是檢驗真理的唯一標準”,通過上機編寫程序,可以驗證想法的正確性。在動手實踐的過程中,會遇到很多細節問題,這些是在思考時無法考慮到的,但對解決問題又是十分必要的。因此,動手實踐的過程,實際上是培養完整、徹底地解決問題能力的過程。只有將理論與實踐緊密結合,才能學好數據結構。
4 結束語
本文對于什么是高效學習進行了初步探討,并結合數據結構課程的特點,討論了高效學習數據結構需要注意的事項。
參考文獻
1 張慶林.高效率教學[M].北京:人民教育出版社,2002
數據結構范文3
關鍵詞:數據結構;教學方法;教學手段;多媒體教學
中圖分類號:G642 文獻標識碼:B
文章編號:1672-5913(2007)14-0024-03
“數據結構”是計算機及相關專業中一門重要的專業技術基礎課,用計算機解決任何實際問題都離不開數據表示和數據處理,而數據表示和數據處理的核心問題之一是數據結構及其實現。數據結構課程要求達到知識學習和技能培養兩個目標,是理論和實踐要求都非常高的課程。其研究思想和研究方法在計算機科學中許多有深度的研究領域得到廣泛的應用,為學生今后從事理論研究、應用開發、技術管理工作提供了堅實的理論基礎。
“數據結構”課程的特點是邏輯性強、概念多且抽象、實踐性強,學生不容易掌握。學生在剛開始學習這門課程時,不知道怎么學,課程學完后也不知道學了些什么,對學過的知識也不知道如何應用。針對這些現象,如何使學生更好地掌握最常用的數據結構,理解數據結構內在的邏輯關系,數據與關系在計算機中存儲表示以及在這些數據結構上的運算和實際的執行算法,培養學生解決實際問題的程序設計能力以適應學科迅速發展和知識更新的需要,是本門課程的目的和宗旨。如何教好數據結構課程是一個值得探討的問題。
筆者對近年來教學經驗的總結,針對我校學生的狀況,在教學資源條件滿足的情況下,對教學方法和教學手段做了相應探索。
1教學方法改革
在“數據結構”課程的教學過程中,積極探索新的教學方法,以便能夠調動和發揮學生的主觀能動性。具體有形式有:
1.1以學生為主體,改變教師在教學環節中的作用
樹立以學生為中心的新的教育觀,從“以傳授知識為主”轉變為以培養學生具有獨立獲取知識、發現創新知識的能力為主,把學生創新能力的培養放在重要的地位。利用指導法教學、啟發式教學來體現 “以教為主導,以學為主體”的教學原則。
1.2有針對性地選擇學習內容,不再滿堂灌,整本講
在理論部分,根據“數據結構”教學大綱的要求,對教學內容去粗取精,提煉出該課程每章、每節的框架體系,從數據結構的邏輯結構存儲結構和數據的運算三個方面去組織教學內容,重點突出、簡潔明了,而不求面面俱到。在了解學生實際情況的基礎上進行分析研究,預見學生會對那些內容感到困難,要求學生提前預習,并把需要的知識提前做交待,使學生有充分的準備。在實踐部分,考慮到學生編程能力上的薄弱,選擇實驗題目不太難,但知識點明確,同理論部分很好的結合的內容。注重提高實驗課的質量,通過預先講解程序流程,要求學生編寫程序草稿,講解程序實例的方式,讓學生準備充分。對基礎較好,學習能力較強的學生,布置一些技巧性較強的題目,鍛煉學生的邏輯推理能力。同時對本門課程的前序課程―計算機程序設計語言(目前是C語言)的教學安排也做了改進,為本門課程的實踐環節做好鋪墊。
1.3共性化與個性化相結合教學
從教學形式上有以教師為主體的課堂教學、習題課等共性化教學環節,也設置了答疑p質疑等教學環節,還通過網絡將課程電子講義、電子教案、上機實驗、課程設計、算法的動畫演示,以及相關中、英文參考資料等資源上網,為學生提供了自主學習的條件或自主實驗時間,引導和鼓勵學生通過實踐和自學獲取知識。共性化與個性化相結合,既可以起到教師主導作用,也可以滿足學生個性學習的需求。
1.4注重范例教學
課堂講授應符合學生的認知規律,從感性到理性,從理性到實踐,從直觀到抽象,再從抽象到具體實踐,范例教學在數據結構的算法思想講解中能發揮其無法比擬的優勢。對數據結構中的主要算法和一些抽象的概念,可以盡量先從直觀意義或具體實例解釋著手,讓學生更容易理解。因此在教學過程中宜多畫圖,多舉例,多解釋。這種從特殊到一般,從具體到抽象的方法在數據結構中的很多內容都可以這樣處理。例如:講解隊列的概念時,可通過日常生活中的購物排隊的過程來反映隊列中插入、刪除的原則,再結合計算機中的操作隊列、打印隊列的應用來說明。對二叉樹的遍歷的算法過程可通過一個特定的二叉樹的例子說明其遍歷思想,再推廣到一般的二叉樹的情況等等。
1.5理論與實驗相結合
數據結構課程主要介紹數據的邏輯結構、物理結構以及算法。算法的思想需要通過一種程序設計語言加以描述并在計算機上實現。我們在重視理論教學的同時,也很注重實驗課,注重學生靈活應用知識能力的培養。理論與實驗相結合,可以使學生更好地理解“數據結構”的思想與概念。
2科學授課,充分調動學生的積極性和創造性
課堂教學是整個教學活動的一個重要環節,課堂組織是否科學合理會直接影響學生學習的質量和效果。任課老師非常注重課堂教學方法,總結出了一些有效的措施。
2.1明確學習目的,激發學習興趣,采用啟發式教學
興趣是促進學習的巨大動力,教師有義務激發學生的學習興趣,尤其是理論性較強的課程。所以,在課程之初就必須清楚地告訴學生學習該課程的目的,講清不同學習對象的學習目的(這個目的因人而異)。傳統的教師講、學生聽的填鴨式的教學已經不能適應現代教學。為了在課堂上激發學生的學習熱情,發揮學生的學習積極性,同時更好地把理論知識與實際應用結合起來,在講每一種基本的數據結構之前,準備一些實際應用的例子,讓學生一邊逐步學習理論知識,一邊思考如何應用。比如在學習線性表之前,舉幾個常用的線性表的應用實例,讓學生在學習的過程中考慮一個簡單的集合運算的實現。讓學生帶著問題去學習,使學生的學習熱情提高了。
2.2根據教學內容,合理安排教學進度,注重節奏教學
數據結構課程內容的概念多而抽象,而從抽象到設計又是理論到工程的轉換,本科學生缺乏系統和工程的概念,因此是一個難點。我們在課程進度方面采用“先慢后快”的節奏。“先慢”是為了讓學生有充足的時間消化新概念,也讓學生適應教師的授課風格?!昂罂臁笔钱攲W生基本掌握了該課程的主要概念以后,可以適當加快教學進度,以便按時完成教學計劃。
2.3精心準備,激情授課,強調交互式教學
教學方法需要強調講課的高度激情,以教師高昂的情緒感染學生。為避免滿堂灌,我們要求教師課前根據內容需要設計準備幾個適當的問題,在課堂教學適當的時候提出,留給學生適當的思考時間。同時鼓勵學生提問,根據學生反饋信息和問題,與學生探討問題的解決,而非給出答案。這種交互式方式,學生非常樂于接受。
2.4深入淺出,理論聯系實際,突出原理的應用
如何將高深的理論用淺顯的語言表述是教學方法的技巧。數據結構中的“圖的存儲結構”、“求最短距離”等內容是理解的難點,我們教師以五棟大樓之間網線的布局為例進行講解,從應用角度和生活常識形象生動地解釋了理論,開拓了學生的思維。
2.5以人為本,誠心與學生交朋友,推崇親情教學
數據結構課程的講授大多面向大學二年級學生,此時,很多學生正處于人生規劃決策的關鍵時期,作為老師與長者,幫助他們健康成長是義不容辭的職責。以講授課程知識為基礎,輔以講授人生發展與規劃,幫助他們解除成長過程中的煩惱,把他們當作朋友,對于推動教學工作是非常有益的,這種“親情式”教學手段往往能收到良好的教學效果。
3教學手段改革
在教學過程,本課程采用多媒體手段并結合網上教學資源輔助課堂教學,有力地促進了教學手段的改進、教學質量的提高和教學方法的變革。
3.1采用多媒體教學
多媒體教學有很多優點:它集講課、習題課、演示算法為一體,具有生動、形象、直觀的特點,所顯示的版面規范、文字精練、形式多樣,多重感官刺激,極大地調動學生聽課的積極性,有助于學生很好地理解和掌握所學內容。
“數據結構”課程的內容抽象難懂,教學時輔以多媒體教案和算法演示系統,可以提高教學效果。多媒體教學在講具體的算法實現方面顯得特別優越,可以先給學生講解算法,然后給出數據來執行算法,學生一邊對照著語句一邊執行觀察數據的變化,或用動畫演示執行過程。尤其對于遞歸算法,傳統的黑板講解遞歸算法很不方便,而且算法的執行過程不易理解。采用動畫演示遞歸算法,生動、形象,學生很容易看出何時發生遞歸調用,何時返回到上一層調用處。
3.2建設“數據結構”網絡課程,實現網絡教學
在建設“數據結構”網絡課程的過程中,教學網站是一項充分發揮現代信息技術,拓寬教學資源使用和學生受益范圍的舉措。也是讓學生能更大程度地獲得需要的信息和知識,了解整個課程教學過程,并參與到我們的教學中來,形成師生共建、共促質量的模式。
我們建立了“數據結構”網絡課程,內容包括:課程教學大綱、電子教案、算法演示、電子教材、案例分析、實驗指導、參考文獻目錄、教學論壇等。既對上課專業的學生提供了共享與交流環境,也為其他專業和遠程教學提供了網絡教學資源。網絡教學是當今計算機教育的發展潮流,它可以和傳統教學方式相配合,增加學生的學習渠道,充分利用學生的課余時間。網絡教學可以通過網絡課程、在線視頻、論壇、留言板和電子郵件等形式實現教學互動,作為課堂教學的補充。對于提高教學質量和教學水平、推動教育改革都具有非常重要的意義。
4結束語
教學實踐表明,數據結構課程只有在理論教學上不斷創新,在教學方法和手段上不斷更新,教學內容與時俱進,才能使教學效果明顯,使學生成才,滿足社會發展對科技人才高素質的需求。這就要求在教學過程中不僅僅要有先進的教學內容,更要有先進的教學方法、先進的教學理念與先進的教學手段。當然“沒有一種教和學的方法是唯一正確的”,如何教好學生,永遠都是教師們永恒的話題。
參考文獻:
[1] 嚴蔚敏,吳偉民. 數據結構(C語言版)[M]. 北京:清華大學出版社,1997.
[2] 徐孝凱. 數據結構實用教程[M]. 北京:清華大學出版社,1999.
[3] 潘道才,陳一華. 數據結構[M]. 成都:電子科技大學出版社,1994.
[4] 愛德才,劉山. 數據結構[M]. 北京:中國水利水電出版社,2002.
作者簡介
楊先鳳(1974- )女,四川人,西南石油大學計算機科學學院,副教授。
數據結構范文4
關鍵詞 數據結構;算法;實踐教學
1 引言
“數據結構”是計算機程序設計的的重要理論技術基礎,它不僅是計算機學科的核心課程,而且已成為其它理工專業的熱門選修課?!皵祿Y構”并非一門純數學課程。它要求學生能根據所學的“數據結構”理論完成較復雜的程序設計。而程序設計能力的提高有個學習、觀摩、借鑒和實踐的過程。
學生在學習“數據結構”課程時,雖然已學過程序設計語言,但僅是初學,并不精通。對于抽象的數據類型、動態分配存儲空間等概念,在理解上還是有一點困難的。如何理解數據存儲結構,消化算法,將算法轉化成程序設計語言的函數并能編寫出運行該函數的主程序,往往是擺在他們面前的一道難關。
2 實踐教學新思路
筆者多次講授“數據結構”課程,所用教材為清華大學出版社的嚴蔚敏、吳偉民編著的《數據結構》(C語言版)(以下簡稱為教科書)。該教科書內容全面,有較高的深度,但在敘述一些基本概念和算法時過于精練,使學生在理解上有一定的困難。另外,本課程的教學不僅注重學生對理論的理解,鍛煉學生的抽象思維和創造能力,更注重培養學生的實踐能力。筆者在多年的教學實踐中發現,學生認為這門課程理論性太強,太枯燥,不好學,學了不知有什么用,怎么用,當面對具體問題時,不知該如何應用學過的知識來給出切實可行的解決方案以及編制程序,得出正確的結果。
針對以上問題,可以看出教師除了加強理論知識的講授外,更應注重實踐環節的教學,提高上機實驗課的教學效果。以下是筆者在“數據結構”課程實踐環節教學中的幾點想法,希望與廣大讀者探討之。
2.1 思想上重視實踐教學
有些教師在教學的過程中,重點給學生講授數據對象的特性,數據的組織方法,數據的邏輯結構和存儲結構以及相應的運算(操作),對實驗不夠重視,認為可有可無。在實際教學中,教師只介紹各種操作的算法,而忽視將算法轉換為具體程序設計語言中的函數以及編寫出運行該函數的主程序。這種教學方式,勢必導致多數學生對算法和程序概念的混淆,再加上教科書中也僅僅是將算法轉換成程序設計語言中的函數,學生在兩課時的上機實驗中往往編制不出完整的程序,得出正確的結果。
上機實驗是對學生全面綜合素質進行訓練的一種基本方法,是課堂教學的一種延伸,是必不可少的一個教學環節。實驗中的問題往往比平時的習題要復雜的多,也更接近實際。實驗能使學生所學到的書本知識“活”起來,起到深化理解和靈活掌握教學內容的目的,同時,上機實驗也是對學生軟件設計綜合能力的訓練。
在“數據結構”課程堆棧的教學中,針對教科書中進制轉換的問題,筆者除了詳細講授教科書中堆棧的順序存儲結構及其基本運算的實現算法與函數外,還在課堂上編制出運行該函數的主程序,包括數據的輸入與輸出,具體如下:
#define Maxsize 100 //順序棧初始分配空間
Typedef int Elemtype
Typedef struct{
Elemtype data[Maxsize];
int top;
}STACK;
char B[]=”0123456789ABCDEF”;
void conversion(int n , int b) //將非負的十進制整數n,輸出等值的b進制數
{
int x;
STACK st;
initstack(&st);
while(n)
{
push(&st , n%b);
n=n/b;
}
while(!Empty(&st))
{
pop(&st , &x);
printf(“%c”, B[x]);
}
void main()
{
int n , b;
printf(“將十進制整數n轉換為b進制數,請輸入n與b:”);
scanf(“%d , %d”, &n , &b);
conversion(n , b);
}
程序運行如下:
將十進制整數n轉換為b進制數,請輸入n與b:13,2
1101
通過這種方式,學生清楚地認識到程序不僅僅是算法,在學習算法的同時,更應注重程序總體結構設計、用戶界面設計、軟件開發規范等方面的學習和鍛煉,這為“數據結構”實踐教學取得較好的效果奠定了基礎。
當然,這種嘗試也遇到了一些問題,主要在課程總學時方面。筆者所在學?!皵祿Y構”課程作為一門專業基礎課,課時為64學時,其中包含上機16學時。部分教師也認識到了數據結構實踐教學的現狀,但迫于課時的限制,也打消了嘗試新的教學方法的念頭。因此,還得要讓學校、教師轉變觀念,認識到教育應著眼于未來,應以學生為中心,而不是急于求成,追求功利。
2.2 編制好的實驗指導書
一本好的實驗指導書能給學生的上機實驗帶來事半功倍的效果?,F在有關“數據結構”課程的實驗指導書較少,而且其中大部分都沒有提供完整的上機實驗操作過程。筆者認為一本好的實驗指導書應該能和課本獨立開來,學生在理論課學習的基礎上,通過閱讀該書,應該能夠解決實際問題。
筆者在“數據結構”課程的教學中,編制了一本實驗指導書。書中做到了以下三個方面:
(1)明確實驗步驟
為了培養學生良好的工作作風和方法,并且為后續課程做準備,書中按軟件工程方法要求學生遵循相應的實驗步驟,先需求分析,抽象出數據結構,再明確數據類型,詳細設計,最后進行編碼及調試。
(2)明確每個實驗的具體要求
有了具體要求,學生實驗時才有章可循。書中對每個實驗都提出了具體要求。開始部分的實驗除給出要求外,還給出問題的需求分析、設計以及完整的程序,學生上機主要是驗證程序,后期的實驗則要求學生獨立設計算法,編制并調試程序。整個實驗指導書在難度上有一定的梯度,便于學生循序漸進的學習。
筆者在介紹完線性表的鏈式存儲結構后,要求學生完成的第一個上機任務為實現以單鏈表作存儲結構的線性鏈表的就地逆置。關于這一問題,實驗指導書中給出了兩種實現方法,具體如下:
第一種,將原鏈表中的頭結點和第一個元素結點斷開(令其指針域為空),先構成一個新的空表,然后將原鏈表中各結點,從第一個結點起,依次插入到這個新表的頭部(即令每個插入的結點成為新的第一個元素結點)。這種方法較易,學生容易想到,由于是單鏈表部分的第一個實驗,書中除給出思想外,還給出了詳細的算法,只要求學生編寫出實現該算法的函數和主函數,上機驗證該算法。
第二種,修改原鏈表中每一個結點的后繼指針,使其指向其前驅??紤]到鍛煉學生的算法設計能力,書中只給該出了該方法的思想,要求學生獨立設計算法,并編制出完整的程序。
(3)要求學生在上機之前,預習實驗指導書中的內容
實驗指導書獨立于教材,上機實驗學時又有限,這就要求學生在上機實驗之前預習實驗指導書中的內容。在實驗內容之前給出了一些與本實驗有關的思考題,讓學生在閱讀中思考,同時列出相應的參考資料或參考書,讓學生在上機之前通過查閱參考資料或參考書,加深對實驗內容的理解。這種方式還可以鍛煉學生獨立解決問題的能力。
2.3 加強一線教師隊伍的建設
課程的教學最終是由一線教師來完成的,一線教師隊伍的素質決定了教學的質量?!皵祿Y構”課程的一線教師應具備實驗教學的素質。
實驗教學能力的培養有一個過程。作為一名教師,應具備鉆研和創新精神,提升自己的知識水平和實驗教學能力。同時,在教學過程中,也應該吸收其他優秀教師的教育思想,學習其他教師的教學方法。在實驗教學方面,一線教師更應注重相互之間的溝通,取長補短,共同提高。學校、院系在條件允許下,還應定期組織教師進行培訓或進修。
3 結束語
由于“數據結構”課程在計算機專業課程中的重要性,必須加強實踐環節的教學,提高學生分析問題、解決問題的能力??梢韵嘈?,只要我們思想上重視實踐環節的教學,提高自身實踐教學的能力,采用合理的教學方法,“數據結構”課程的實踐教學必將取得良好的效果。
參考文獻
[1]嚴蔚敏,吳偉民. 數據結構(C語言版)[M]. 北京:清華大學出版社,1997
數據結構范文5
關鍵詞: 鏈式存儲結 指針變量 賦值運算
Teaching Methods of Linked Structure in "Date structure"
Kan Nan
(Department of Information Engineering, WuHan Vocational College of Information Transmission Technology, Nan Kan, 430074 , China)
Abstract:Pointer is a difficulty for students to grasp in linked structure; there is one question about it. For example assignmentoperation about pointer variable,,Based on this, author discusses new teaching methods.
Keyword: linked structure; pointer variable; assignment operation
《數據結構》主要研究信息的邏輯結構及其基本操作在計算機中的表現和現實,是計算機專業的核心課程。鏈式存儲作為該課程討論的重要的儲結結構之一,是學生應掌握程序設計技巧的基礎。
從進幾年《數據結構》課程的教學過程反映出,當討論鏈式存儲結構時學生出現理解上的“瓶頸”現象。問題集中體現在:指針變量與指針賦值運算。下面就這一問題談談教法與感受,希望與同仁共勉。
首先我們引入兩個概念 “菜籃子”和“菜”而且要分清它們。 說到賦值語句,我們先來回顧一下賦值運算的實質。盡管不同語句的賦值語句有不同的語法結構,但大都數語句所定義的語意大體相同。下面以C語言為例說明:
某程序段中語句x=y;x和y是變量名,無論他們是數據類型,每一名字有兩個“身份”:一方面該變量名代表一定的存儲單元,另一方面代表該存儲單元里的內容,以該單元的內容為值。賦值語句x=y的意義是:“把y的值送入x所代表的存儲單元”,也就是說,賦值語句中賦值號“=”左右兩邊的變量名扮演著兩種不同的角色。為了區別一個變量名的兩種“身份”我們把一個名字所代表的那個存儲單元稱為該名的左值,通俗地說是“菜籃子”用來裝菜的;把一個名字所代表的的單元內容(值)稱為該名的右值,對應的就是“菜”。當變量名出現在等號左邊就是“菜籃子”出現在等號右邊就是“菜”,賦值運算就是把“菜”往“菜籃子”里放(注意這兒的“菜籃子”的特殊性:最后一次方的“菜”就覆蓋“菜籃子”里以前放的“菜”,且“菜籃子”里只能放一個“菜”)。
對變量名的雙重性有了以上的深刻認識在來討論指針變量的賦值運算學生就恍然大悟了。
例1: 有定義如下的雙向鏈接表
struct dnode {elemtp data;
struct dnode *prior, *next;}*p,*r;如圖1所示,在雙向鏈接表中的結點之前插入一個結點r使線性表(a1…ai,ai+1…an)變成(a1…ai,b,ai+1…an)。操作語句如下;
{1}r->prior=p->prior;
{2}r->next=p;
{3}p->prior->next=r
{4}p->prior=r;
以上4條語句的語義分別是:
{1}把數據元素ai所在的結點地址(在p的prior域中放著的地址值,此時表現為變量p->prior所代表的內容,以后簡稱右值,也就是我們所說的“菜”)放到結點r 的prior域中(此時r->prior應以其所代表的存儲單元的身份出現,即左值,也就是“菜籃子”)這就是把變量p->prior所代表的存儲單元的地址值賦值給變量r->prior所代表的存儲單元,即把“菜”放進“菜籃子”,線1所代表的鏈建成了。注意千萬不能把該語句中理解為其左值,我們是不可能把“菜籃子”放進“菜籃子”的
{2}把數據元素ai+1所在結點的地址(是變量p代表的內容,即p的右值)放到結點r 的next域(是變量r->next代表的存儲單元,即左值)。變量p的值作為“菜”放進了變量r->next這個“菜籃子”,線2所代表的鏈建成了。
{3}把入數據元素b所在的結點的地址(該地址作為值在r所代表的存儲單元中放著,即r右值)放到數據元素ai所在的結點next域中,而數據元素ai所在的結點就是p->prior(因為數據元素ai所在的結點地址在p->prior中放著,此時取其右值),那么數據元素ai所在的結點next域中就是p->prior->next這個“菜籃子”,此時語句實現使b變成ai的后續,經賦值后原鏈5自然斷掉。
{4}把入數據元素b所在的結點的中的地址,放到數據元素ai+1的地址,放到數據元素ai+1所在結點prior域中,變量r的值再次為“菜”放入了變量p->prior“菜籃子”,就使b稱為ai+1的前驅,經賦值后原鏈自然斷掉。
以上4條語句{1},{2}的次序可以調換,{3},{4}的次序不可以調換,而且{1},{3}語句必須在{4}之前,只要學生對賦值語句能有以上的深刻理解,其原因就不言而喻了。再復雜的鏈式存儲結構及其操作一般都涉及改變鏈的狀態,其無非就是通過賦值語句來改變鏈,在操作中分清變量“菜籃子”和“菜”的雙重角色,對學生掌握鏈式存儲結構起著重要的作用。
參考文獻:
數據結構范文6
關鍵詞:數據結構;方法;實踐;教學評價
中圖分類號:G642 文獻標識碼:B
“數據結構”是計算機科學與技術專業重要的專業基礎課,在整個專業課程體系中處于承上啟下的核心地位。它一方面擴展和深化了“離散數學”、“程序設計語言”等課程學到的基本技術和方法,另一方面為進一步學習“操作系統”、“編譯原理”等專業課奠定堅實的理論與實踐基礎,更是今后進行高級程序設計、算法設計、軟件工程的基礎。因此,各高校都非常重視“數據結構”課程的教學工作,這也是計算機教育改革的重點和熱點。
筆者一直從事“數據結構”課程的教學實踐,從青年教師的角度出發對該課程教學中出現的問題進行了反思,并提出自己的看法和解決思路,希望與同行共同交流。
1教學中遇到的問題
計算機專業的學生今后大多將從事與計算機應用與軟件開發相關工作,因此迫切希望能學好此課程。但是在實際教與學的過程中,有時教學效果并不理想,教師感覺講授比較吃力,許多學生感覺課程抽象、枯燥,入門困難。在幾年的“數據結構”課程教學和實踐過程中,我們發現主要存在以下一些問題。
(1) 課程的性質決定學習難度大
“數據結構”課程強調問題的分析和抽象表達,把現實中遇到的問題抽象出其邏輯模型(包括數據及它們之間的關系、實施的操作等,即ADT),再選擇適當存儲結構(存儲數據及關系),設計出各個操作的算法從而在計算機上解決問題。它是一門理論與實踐相結合的課程。由于缺乏實際應用經驗,學生很難將樹、圖等抽象概念和具體問題相結合起來。
(2) 程序設計基礎不扎實
C/C++語言程序設計語言是學習“數據結構”的重要基礎。在C/C++語言課程的教學中,由于學生的接受能力和學時的限制,致使C/C++語言中的函數、指針和結構體等重要知識點難以完全理解和融會貫通。另外,大多教師在教學過程中重點強調程序設計語言的掌握,忽視了程序調試技能培養。然而,這些難點和程序調試技術在數據結構課程實踐環節中恰好是使用頻率最高的內容,結果導致學生在將抽象的理論轉化為具體實踐的過程中遇到重重障礙。
(3) 學生學習興趣較高,主動性不夠
前期課程介紹強調充分,學生大多明白本課程的重要性,因此學生的學習興趣較高,但長期以來的學習方式和教學模式讓學生在學習過程中缺乏獨立思考的主動性,隨著課程的深入,學生容易對課程學習的意義產生懷疑,失去學習的興趣和主動性。如何在整個教學過程中保持學生的學習興趣也是一個決定教學效果的關鍵因素。
2教學中采取的措施
針對“數據結構”教學過程中存在的問題,我們一方面查閱前人文獻和教改成果,一方面在教學中實踐摸索,從教學方法、調整學時分配、完善教學評價制度、加強實踐教學環節等幾個方面入手提出了改革措施,并在課程教學實踐中取得了很好的教學效果。
2.1突出課程主線、強調基礎知識
“數據結構”課程整體內容連貫,脈絡清晰,系統性、層次性強。在每個章節都有明確的主題和線索,就是每種數據結構的抽象數據類型(ADT),分為定義(抽象)和實現(具體),即“數據結構”的數學模型和定義在該模型上的一組操作及其實現。這也是貫穿整個教學環節的一條主線。
在具體教學過程中,我們當重視概念的建立和基礎知識的掌握。例如,第二章線性表是學習的第一種數據結構,按照線性表ADT定義(包括數據結構定義和實施的操作)、ADT的虛擬實現(數據結構的虛擬實現即存儲結構、操作的虛擬實現即設計算法)的層次學習。這是第一次把前面學習的抽象概念進行應用,如何定義ADT,如何去實現ADT等都由抽象到了具體,后面其他數據結構都會反復用到,因此第二章線性表是整個課程學習的基礎和關鍵。講授過程中,我們應當適當放慢速度,并在此過程適當回顧C/C++中的基本知識,必要時寫出程序設計的詳細過程和代碼,以此來使抽象的概念轉化為具體的程序實現。再如,第三章棧的應用遞歸程序設計就是樹和圖部分算法設計的基礎,對用遞歸方法解決問題的方法、遞歸的執行過程應該深入地學習和理解。
2.2綜合運用實例化和啟發式教學
“數據結構”課程中難點較多,許多算法設計巧妙,邏輯性強。針對這一特點,我們在不同的教學階段采取了不同的教學模式和手段。實踐證明,通過精心設計的實例可以加深學生對算法的認識和理解,就是對課程中的重點、難點內容選配簡單有效的例題、運用恰當的比喻,把抽象的內容具體化、形象化,幫助學生理解掌握這些內容,并適當加以引伸,引導并激發學生作進一步的思考和探索。例如在講解樹數據結構時把樹和生活中的家族譜聯系起來進行比喻說明,學生不僅聽起來較有興趣,而且更容易理解。
“啟發式教學法”是指教師在教學中把所講解的內容與學生的思考有機地結合起來,激發調動學生的積極性和主動性,讓學生更好地掌握基本知識和基本技能,從而達到融會貫通地掌握知識和技能,培養學生獨立思考能力和創新意識?!皵祿Y構”課程有許多和現實生活規律相通的地方,例如:棧、隊列就和生活中停車、排隊買飯具有很多相似的規律。教學過程中我們以學生為中心,精心設計問題情境,引起學生的好奇,通過引導、啟發、訓練學生的思維,取得了較好的教學效果。
2.3重視實踐在教學中的作用
學習“數據結構”的最終目的是為了提高應用計算機解決問題的能力,培養并提高學生的實踐能力是其教學重點之一。在教學實踐中,學生普遍反映課堂上能夠理解講授的知識點,但只要一動手實踐就糊涂。學生在實踐環節上的失敗,反過來又會影響其對理論知識的掌握,打擊學習的興趣和主動性。因此,我們在學生掌握基本理論的基礎上,要求和鼓勵學生進行一些實踐工作,重視實踐在教學中的作用。
“數據結構”課程的實踐方式主要有三種:一是做習題,二是上機實踐,三是課程設計。在課程開始初期,應當適當布置一些習題,主要是幫助學生掌握基本概念和數據結構方法;在進入基本數據結構學習后,讓學生通過上機實驗來驗證數據結構各種存儲結構與算法的具體實現;基本數據結構學習結束后為了進一步提高學生對課程內容的理解和動手實踐能力,針對性地進行課程設計,選題靈活多樣、趣味性強(在課后或者暑期完成)。對學生的上機實踐應當嚴格要求,尤其是要加強上機指導和監督。上機前要求學生做好充分的準備,上機結束后要求學生寫出問題分析,算法的時間復雜度分析,以及經驗體會。
2.4課程考核的改革
課程考核是教學過程中的重要環節,是督促學生加強學習和了解教學效果的重要手段。作為核心基礎課,“數據結構”強調數據關系的抽象,課程本身實踐性很強。通過“數據結構”課程的實踐,不僅可以提升學生程序設計的能力,更重要的是提高他們對問題分析和數據抽象的能力。因此,考核方案分四個部分:
(1) 平時作業,占10%,主要督促學生注意平時學習和及時復習鞏固;
(2) 實驗和報告,占20%,目的是加強學生實踐動手能力;
(3) 期中考試,占 20%,鞏固學生的階段學習成果;
(4) 期末考試,占50%,主要對課程內容的總結和評測。
可以看出,方案制定的主導思想突出了階段考核和實踐環節考核的重要性??己朔桨冈谝欢ǔ潭壬现萍s了部分學習意愿較差的學生,使他們在教學過程中始終保持較高的積極性。
“數據結構”學習中上機是非常重要的一個環節,是將抽象的算法轉化具體問題,是理解課程內容的關鍵,但程序設計不是該課程的重點。傳統上我們通常要求學生完成規定的實驗項目然后才能申請驗收和評分,但是在實踐中發現,有些實驗項目對部分學生而言比較難,只能完成部分內容。為了保護和鼓勵學生學習的積極性,突出課程內容,可以對較好完成部分實驗任務的學生的成果也進行驗收,給予適當的肯定,并分析指出其設計中存在的問題,最后統一給出標準程序。
2.5充分利用計算機輔助教學
教學手段的多樣化已成為教學改革的一個大趨勢,但不是一味的否定“黑板加粉筆”的傳統教學模式。“數據結構”課程教學過程中輔以多媒體教學,不僅可以使一些原來板書不能完成或很難完成的教學問題得到解決,而且還提高了教學效率。我們把清華大學出版社的《數據結構算法演示系統》用于課堂教學,對較難理解的知識點,如遞歸程序調用過程、排序的數據交換過程、最小生成樹等,可以化抽象為直觀、形象,取得良好教學效果。
計算機輔助教學絕不是一般的PPT講課,應該把板書和計算機輔助教學很好地結合起來才能真正達到好的教學目的和效果。
3總結
在教學活動中,教師是教學過程的主導者,教師的教
學經驗和方法非常重要,如果能夠具有豐富的實踐經驗,對教學工作就會如虎添翼,講授也會更有說服力。學生是學習的主體,他們對知識掌握的情況就是對教師工作的最好檢驗。但教學效果的好壞更主要取決于學生對課程的興趣和主動性,在教學和實踐過程充分發揮教師的引導作用保持學生的信心和積極性是一個重要因素。作為青年教師,應多向老教師學習,使教學過程更加通俗易懂,貼近生活。
“數據結構”是計算機專業的骨干、核心課程,是計算機程序設計和算法的重要理論基礎課,學好這門課程對學生來說是至關重要的。因此,對于該課程的教學不僅要從理論上進行探討,還要從內容結構、教學方法等方面進行研究。本文就實際教學中遇到的幾個問題從教學方法、內容組織以及考試考核等方面提出了建議和對策,希望同行共同討論。
參考文獻:
[1] 嚴蔚敏,吳偉民. 數據結構(C語言版)[M]. 北京:清華大學出版社,1997.
[2] 殷人昆. 數據結構(用面向對象方法與C++語言描述)[M]. 北京:清華大學出版社,2007.