數據結構課程設計范文

時間:2023-04-01 05:49:19

導語:如何才能寫好一篇數據結構課程設計,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。

數據結構課程設計

篇1

關鍵詞:數據結構;微課;思維導圖

一、背景

數據結構課程作為計算機專業的核心基礎課程,學好數據結構才能為許多后續課程的學習打下良好的基礎。課程要求學生通過理論與實踐學習之后,能掌握各種數據結構以及與之相關的算法的知識,并將這些知識應用到對具體實際問題的分析中。參照ACM/IEEE-CS的《ComputeCurricula2001》報告中提出的數據結構課程內容主題[1]有幾十個,即課程的教學內容多,覆蓋面廣,而且由于很多重要知識的理論性較強,特別是一些難點知識比較抽象而難以理解,所以數據結構是被學生廣泛認為難學、難懂、難實踐的課程。學習的過程通常由“信息傳遞”和“吸收內化”兩個階段構成,采用信息化技術手段開展以微課、慕課、云課程、翻轉課堂為代表的數字化教學是實現知識信息傳遞的有效手段[2]。微課一般是在課堂教學之外,由學生主動參與的輕量化、碎片化、結構化的學習方式,通過良好的課程結構設計,結合短視頻、動畫、語音等手段,能有效地將抽象的知識轉為形象化的內容,從而高效促進學生“吸收內化”的進程。

二、微課及設計方法

微課(Microlecture),是指運用信息技術按照認知規律,呈現碎片化學習內容、過程及擴展素材的結構化數字資源[3]。微課課程平臺是學生在課堂教學外的細化教學知識,實現“自主學習”和“個性化學習”的環境,在微課平臺上,學生可按需選擇學習,既可查漏補缺,又能強化鞏固知識,是課堂學習的一種重要補充和拓展。從邏輯結構角度看,一個完整微課課程通常由一系列微課單元構成,一個微課單元除了用來講述該教學主題知識點的課堂教學短視頻及與短視頻配套的描述或解釋的短文這一最重要的核心部分之外,通常還包含與該教學主題相關的練習測試及師生交流等輔教學資源,這些資源共同組成了一個主題式、半結構化的微課教學單元。一個設計良好的微課單元通常具備主題選題精準和內容組織合理的特點。選題精準就是一個微課單元是一個教學主題,在設計這個主題時,要注意這個選題所覆蓋的知識或原理應較為簡單[4],其涵蓋知識點可選2—3個;內容組織合理就是知識內容的組織和分解簡明,將一個教學主題核心知識點和目標分解為若干個子知識點或步驟,這個核心知識點的分解最好只要一層邏輯,盡量不要在子知識點下再分解。

三、數據結構微課設計過程

數據結構課程要求學生能合理選擇數據結構,并把與問題相關的數據組織起來實現準確和高效計算處理,所以數據結構的核心概念由數據的邏輯結構及其定義在邏輯結構上的運算、數據的存儲結構以及運算的實現、運算算法的復雜度分析三個方面構成,而且在課程中數據的結構又與其相關的算法纏繞在一起[5],使得在微課設計時所做的知識點分析必須循序漸進地展開,采用由淺到深、由易到難的步驟,再從這個課程的知識體系出發,選取其中的重點、難點、疑點、考點、易錯點、熱點和擴展點,設計和制作一系列既相對獨立,又環環相扣的微課主題單元[6]。

(一)知識點分析與微課主題單元劃分

設計數據結構課程的微課時,首先按照課程內容的知識結構來完成各個主題單元的設計和劃分。我國的大部分數據結構與算法的教材[7-8]把課程的知識體系對應到教學內容之后,分成了基本概念和基礎知識、線性數據結構及相關算法、樹形結構及相關算法、圖結構及相關算法四個教學組成部分,這四個組成部分又可分別分成若干子模塊,每個子模塊又可再分成若干主題單元;劃分方法可以使用表格或思維導圖來協助完成。思維導圖是表達發散性思維的有效圖形思維工具,能直觀地把各級主題的關系用相互隸屬與相關的層級圖表現出來[9]。借助思維導圖,我們能有效完成微課課程知識結構的設計工作,圖1是我們設計線性數據結構及相關算法部分的微課主題單元思維導圖。

(二)微課主題單元設計

在完成對課程的教學內容主題劃分之后,開始對每個教學主題單元做設計。設計主題單元時要以學生為中心,其內容選擇先考慮突出主題單元中的重點知識點,同時需要保證學生能看懂、能聽懂,就是盡量以生動形象的語言和動畫表達知識點,特別是難點和常見疑點必須演示或解釋得詳細清楚。這里以單鏈表主題單元為例。單鏈表是最簡單的鏈式存儲結構,是深入學習樹與圖(非線性結構)的基礎,其概念及其實現是本節教學的重點和難點內容,我們按照內容介紹的次序來繪制思維導圖,圖中帶星號的是重點知識點。在制作微課資源時,可以針對不同特點的知識點采用不同的講解形式。對于概念性的內容,只需用語言或文字以學生容易理解的方式講述清楚概念,而對一些抽象的內容,可采用圖形、對比表格、動畫等方法來講解。如單鏈表結點與單鏈表結構的知識點,我們采用的是圖形動畫演示配合語音講解方法;在講解單鏈表的實現時,我們采用了代碼單步執行分析與圖形動畫演示相結合的方法來講述,取得了較好的教學效果。

篇2

Key words:project driven;course design;applied college

1.《數據結構》課程授課現狀

《數據結構》課程是計算機及其相關專業的核心基礎課程,是一門理論與實踐相結合的課程,在整個計算機專業教學體系中處于舉足輕重的地位,特別在軟件方向的課程體系中處于承上啟下的中心地位。長期以來,《數據結構》課程的教學備受相關學院領導高度重視,然而,大部分高校《數據結構》課程的教學效果都不盡如人意,影響教學效果的原因大致如下:

(1)理論教學與實踐教學嚴重脫節。目前對于《數據結構》的理論教學主要是教師首先講解基本的結構思想,然后再引導學生讀懂由類C++語言編寫的算法,最后布置作業讓學生思考針對這些算法的問題。在實踐教學方面,學生通常要做的事是將課本上寫的很詳細的代碼翻譯成相應的高級程序語言并調試通過,甚至不會去自己解決一個稍微復雜點兒的綜合問題。基于上述兩種原因,學生在學習的過程中可以不用費神思考就能將問題解決,但是離開課本遇到一個新的具體的問題就不知所措,體現不出學生獨立思考問題的能力,實踐教學環節更是流于形式,加之學生程序設計的基本功不扎實,久而久之對學習編程和思考問題失去興趣。

(2)傳統單一的考核形式,不能體現學生的技能水平。現階段大多數高校對于《數據結構》課程的考試形式總是以筆試為主,考核的內容還是單一的理論知識,盡管最后有編程題目或者分析題,但是均不能體現學生的技能掌握的如何,90%的學生感覺學習了《數據結構》這門課程對自己以后的學習和工作沒有用處,進而減弱了學習的信心,導致學生再學習后續的數據庫和編程方面的課程的時候,缺乏模型構建的能力。

2.項目驅動教學法在《數據結構》課程中的應用分析

項目驅動教學法是以學生為主體,以項目知識為主線,教師參與引導的教學方法,它不再是“教師講,學生聽”的被動教學模式[1]。該教學方法的主要目的是讓學生真正的參與到課堂中來,培養他們主動思考問題和創新的能力,特別適合于像《數據結構》這種內容延伸性強、抽象思維要求特別高的課程。

2.1 項目驅動教學法的特點

項目驅動不同于簡單的任務驅動,它更側重于培養學生解決未遇到的關鍵問題的能力,在教學過程中表現為以項目為本位、以學生為主體的重要特征,要求教師設計的項目要具有一定的應用價值,并且最好與企業實際生產過程或具體問題有直接的關系。項目教學法的特點如下:

(1)具有實踐性:項目的主體與現實世界密切相連,學生的學習內容更加的具有針對性和實用性。

(2)具有自主性:學生自由、自主的分組進行學習,根據自己的理解發揮想象力,從而促進學生創造能力的發展。

(3)具有發展性:長期項目與階段項目相結合,構成為實現教育目標的認知過程。

(4)具有綜合性:項目的設計本身需要綜合多個學科,所以培養了學生綜合運用知識的能力。

(5)具有開放性:學生需要圍繞問題進行探索和解決,所以學生的學習形式不再局限于課堂[2]。

2.2 師生角色的相互轉變

項目驅動教學方法要求每位學生均要真正的參與課堂中來,在老師的引導下,發揮想象、參與研究、參與創造。因此,項目驅動教學法較以往的傳統教學實現了兩個打破:

第一,打破教材章節順序,以項目為主線完成課程的培養目標。教師須在完全吃透課程培養目標的基礎上,熟悉教材知識點,然后根據要傳授的知識點結合該專業的就業方向和崗位構建項目,教師的主要精力應放在項目的設計、布置和引導方面,教師設計項目的優劣直接影響學生的學習效果。另外,在教學的初級階段,教師還應該全面把握項目實施過程中學生可能出現的問題以及如何解決。在項目的實施階段,教師只是起到引導和督促的作用,而不參與討論,當各組學生都提出普遍不懂的問題時,可以先引導其查閱相關的資料或略微指導一二,教師在整個的過程中完全成了一名向導和顧問。當然,如何引導學生在項目實踐中發現新問題和掌握新知識,這對老師提出了更高的要求。

第二,打破教師在臺上泛泛的講,學生在臺下靜靜的聽的局面。項目驅動教學法要求先將學生分組,每一組學生接到教師的項目后就開始自行分配任務,并且在指定的時間內將相關的問題解決,這期間可能會查資料、相互討論、請教師長等,學生的教材理所當然的當成了查找知識的工具書,或者有些教材甚至可以不用給學生征訂,節約了教育成本。這樣,我們的教學才真正做到了注重過程、以學生為本。

2.3 項目驅動下的《數據結構》課程劃分

以《數據結構》課程的教學為例,在采用了項目驅動教學法后,我們將課程的知識點劃分成了10個項目:

表1 《數據結構》課程項目示例表

項目名稱 相關知識點 參考課時

通訊錄信息管理系統 線性表、查找、排序 6

某高校學生成績管理系統 線性表、串、查找、排序 6

婚姻的穩定性情況調查 數組、棧 8

理發館的經營狀況分析 線性表、隊列 6

十進制四則運算器設計 棧、樹結構、浮點數運算 8

汽車零部件的庫存模型設計 廣義表、查找、排序 8

因特網域名查詢系統 樹結構、查找 6

小型汽車牌照的快速查找系統 線性表、查找、排序 10

管道鋪設施工方案設計和選擇 圖結構 8

文章系統設計 文件、查找、排序 10

受現階段高校授課時間的限制,針對不同的學生層次,這10個項目可能不能全部做完。根據學生的特點,教師可以有針對性的選作期中的5-8個,進而分配相關的課時。實踐證明:在標準課時之內,只有30%的學生能夠完成一個完整的項目,但是90%的學生能夠利用課后的時間積極的查閱資料和咨詢老師,這種授課方法對學生的主動學習起到了一個積極的推動作用,并且學生愿意犧牲課后休息的時間泡在圖書館。

3.具體項目實施過程

下面以“通訊錄信息管理系統”為例,闡述在《數據結構》課程中實施項目驅動教學法的過程。

3.1 項目名稱:通訊錄管理系統。

3.2 培養目標:第一,使學生掌握線性結構的特點、線性結構的表現形式。第二,使學生領會數據在計算機中存儲的概念,并掌握兩種重要的存儲形式。第三,掌(下轉第179頁)(上接第171頁)握線性表和鏈表的區別,能夠根據實際情況選擇不同的存儲結構。第四,能夠對實施的算法進行性能評價。

3.3 項目預備知識:C語言編程基礎、線性表的定義、線性表的存儲結構、線性表的創建、線性表中元素的查找、插入、刪除、修改等操作。

3.4 項目延伸知識:線性表中元素的排列(按照某種規則進行排序)。

3.5 項目的功能描述:該系統是普通的電話通訊錄管理系統,要求實現能夠根據姓名或者電話號碼查詢一個用戶,能夠實現對新用戶的添加操作和刪除一個用戶,能夠統計出該通訊錄中的用戶總數。比如:用戶有一個電話號碼,但不知道此電話號碼是誰的,則需要輸入號碼來查詢該號碼是不是此通訊錄中已記錄的人的號碼,若是可以輸出該號碼及姓名,若不是可以輸出“無記錄”。同學們在此基礎上發揮想象力,結合實際可以擴展更多的功能。

3.6 項目實施步驟:

(1)根據學生的特長進行團隊劃分。按照一個班級35人的標準,我們將學生分成5-6個團隊,每個團隊在5-6人,然后推薦一名隊長。

(2)教師開始下發項目書,要求每一個團隊根據項目書撰寫項目的可行性報告,每個團隊以文字的形式上交一份報告,在此期間至少要保證每個團隊的隊長明白項目的完成目標,然后由隊長寫出項目過程的具體劃分和階段性成果。

(3)教師要不間斷的引導,當完成項目的可行性報告之后,每個團隊就開始查找資料和相互討論,教師在旁邊起到一個引導和監督的作用,對于學生普遍問及的問題可以進行統一解答。教師有目的的講課,學生有目的的聽課,所以實現了共贏的局面。

(4)教師總結階段,每個項目完成之前,教師要對各個團隊的成果進行演示和評價,指出每個團隊的不足之處。

(5)學生整改階段,學生根據教師的評價,完善自己的不足,然后形成階段性課程設計報告。

4.《數據結構》課程的考核形式及評價

《數據結構》課程不同于其他的專業課,該課程中所設計到的算法和思想具有可收縮性,它應強調對于問題求解能力的培養,我們需要在學生的課程設計過程中,鼓勵學生對其解決問題的方案進行理論分析和實驗分析,鼓勵學生積極主動的創新并大膽提出優化設計方案。對于該課程的考核形式是讓學生根據自己平時的課程項目,將項目整理成課程設計報告,最終上交紙質的課程設計報告書,然后教師對報告進行評價。

考慮到《數據結構》這類課程一直以來是計算機相關專業學生學歷層次提升考試的重要專業課,在進行課程考核的時候,有些學校除了讓學生形成最終的課程設計報告書之外,還讓學生參加一次筆試考試,以了解學生對于基礎知識的掌握水平。

采用了項目驅動+課程設計的教學模式以后,學生普遍反映對數據結構的學習非常感興趣,老師們則感覺采用這種方式以后,學生的學習積極性提高了,但是同時老師們的教學壓力也變得大了,因為增加了老師準備課堂的負擔,但是總體感覺是利大于弊的。

5.實施項目教學法的總結與展望

通過《數據結構》教學中實施項目驅動教學法,我體會到項目教學在專業基礎課中實施的必要性,當然該教學方法也不是萬能的,它不是適合于所有的課程,通常來講:這種教學方法比較適合實踐操作性強,學科比較綜合的課程,同時,我有如下幾點體會:

(1)項目教學法重要的是項目的設計,它可能直接影響教學的效果。在進行項目設計時,我們需要考慮學生對項目的理解、項目包括的知識點的范圍、課程的前驅后繼關系等,否則,我們設計的項目將是沒有意義的。

(2)教師的有力引導是確保項目順利完成的重要保障,學生在進行項目設計的過程中遇到棘手的問題需要老師第一時間進行指導。再者教師要事前全面掌握學生的學習層次,進行有目的性的指導,并能給學生留有思考的空間。

篇3

[關鍵詞]數據結構;課堂教學;教學設計

[中圖分類號] G642 [文獻標識碼] A [文章編號] 2095-3437(2017)03-0029-02

數據結構課程是計算機類專業的核心必修課程,在整個專業教學體系中占有重要地位。數據結構課程的教學內容涉及構筑計算機求解問題的兩大基石:刻畫實際問題中信息及其關系的數據結構,描述問題解決方案的算法。[1]數據結構課程的教學目標是培養學生縝密的邏輯思維能力和數據抽象能力,把數據結構和算法理論與編程實踐相結合,并在軟件系統開發過程中靈活運用。學好數據結構課程對操作系統、編譯原理、計算機網絡等后續課程的學習以及培養學生分析問題、解決問題的能力等方面起著至關重要的作用。如何講好數據結構課程,一直是各高校計算機教師研究探索的熱門課題。俗話說“好的開端是成功的一半”,第一堂課的教學設計至關重要。好的開端能激發學生對課程的興趣,調動學生的學習積極性,使其產生強烈的求知欲,從“要我學”變為“我要學”,從而為教師有序、有效展開課程教學奠定良好的基礎。[2]

本文從以下幾個方面具體討論如何上好數據結構第一堂課。

一、教師自我介紹

教師給學生的第一印象很重要。第一堂課教師第一次接觸學生,自我介紹必不可少。自我介紹的內容主要包括介紹教師的姓名、學院、辦公地點、移動電話等,可以把微信、QQ或E?鄄mail等其他聯系方式告訴學生,還可以組建數據結構課程學習的QQ群或微信群,學生遇到問題后可以在群里討論,也可以通過電話、E?鄄mail等與教師單獨聯系。教師愿意做學生的朋友,學生在學習上、生活上、思想上需要教師幫助時,可及時與教師聯系。教師的積極態度能夠對學生產生積極的影響,有助于與學生建立良好的師生關系,促進學生學習的自覺性。

二、課程介紹

(一)課程定位

數據結構課程是計算機類專業的核心必修課程,美國ACM/IEEE CC-2005課程體系將數據結構與算法類課程列為核心課程之首。我國教育部計算機教育指導委員會“計算機科學與技術專業規范”2006中明確把數據結構與算法列入計算機及信息技術相關學科專業的本科必修基礎課程。

數據結構課程是對前導課程(如C語言程序設計、程序設計基礎等)的深入和擴展,能為進一步學習其他專業課程打下基礎。課程中的排序算法及基本的樹、圖等非線性結構是計算機科學的基本功,B+樹、散列(Hash)等高級數據結構是后續如操作系統、數據庫、編譯原理、圖形圖像等專業課程的基礎。

(二)主要內容

數據結構課程描述的是按照一定邏輯關系組織起來的待處理數據元素的表示及相關操作,涉及數據的邏輯結構、數據的存儲結構和數據的運算,內容非常豐富。

常見的邏輯關系包括線性結構、樹形結構、圖結構和文件結構。常見的存儲方法有順序方法、鏈式方法、索引方法和散列方法。建立在數據結構之上的有效運算是問題求解的核心,如排序、檢索等。在介紹課程內容時,應把相應章節的學時分配一并列表展示,并簡明扼要地向學生介紹課程的重點難點,借助多媒體課件以動畫的形式給學生演示鏈表、棧、隊列以及排序等操作,幫助學生理解,激發學生的學習興趣。

(三)學習目標

數據結構課程的教學目標是讓學生學會分析數據對象的特征,掌握數據組織方法和計算機的表示方法,初步掌握算法時間、空間分析的技巧,培養學生針對問題的應用背景進行分析,選擇合適的數據結構,從而培養高級程序設計技能。學生的學習目標明確了,才會不懈努力,朝著目標一直前行。

(四)教材及參考書

教材是供教學用的資料,如課本、講義等。第一堂課應明確數據結構課程的教材,簡要介紹教材的特點、作者信息等,比如我們采用的是嚴蔚編、清華大學出版社出版的《數據結構》。同時給學生們列出一些必要的參考書籍,這對課程學習能起到補充拓展的作用。

三、學習方法指導

在學生了解數據結構課程的重要性、所用教材及參考資料后,就要告訴學生如何去做才能學好這門課程。數據結構課程要培養學生結合實際應用設計有效算法和數據結構的能力,學習數據結構必須經過大量的踐,在實踐中體會構造性思維方法,掌握數據組織與程序設計的技術。通過扎實的、大量的基礎訓練,學生才能靈活地運用問題抽象、數據抽象、算法抽象來分析問題,應用數據結構和算法來設計、實現相應的程序,完成創新能力和實踐能力的訓練。[3]

(一)課前預習,課后總結,吃透教材

課程內容主要包含數據結構和算法設計與分析的基本知識,各種基本數據結構的定義、存儲結構、相應的算法以及應用等。理解掌握基本的數據結構與算法的關系很重要。程序的時間和空間效率,不僅與數據的組織方式有關系,也跟算法設計的巧妙程度有關系。在學習中要把握好預習、聽課、實驗、復習、總結五個環節,吃透教材,把握住算法的本質。通過預習,可以提高學生的主體意識,培養學生的獨立思考能力,進而提高課堂學習效率。課后的總結則能讓學生自覺地回顧課堂內容,深入地學習和領會課程的重點和難點,完成課后作業或練習題,從而提高數據結構課程的教學效果。

(二)多讀代碼,實現算法,理解思路

教育部計算機專業教育指導委員會“中國計算機本科專業發展戰略研究報告”、“計算機科學與技術專業規范”等都明確地強調了實踐教學和學生動手能力培養的重要性。程序設計解決問題往往有多種方法,且不同方法之間的效率可能相差甚遠。在學習過程中要讓學生擺脫畏難情緒,不怕有問題,多讀、多寫、多調試,及時總結。學生只有通過豐富的練習題和應用案例才能增強對理論的感性認識,從而明白這些數據結構為什么存在以及在什么情況下可以最好地解決什么樣的問題。

(三)充分利用網絡資源進行課外拓展

1.圖書館資源

圖書館擁有豐富的文獻資源,是學校的文獻信息資源中心,也是學生的第二課堂。學校圖書館有豐富的藏書,通過網上書目查詢系統可以檢索到與數據結構課程有關的圖書,如《數據結構典型題解》、《數據結構上機實驗指導》等。圖書館還有各種文獻數據庫,如超星數字圖書館,可以在線閱讀電子圖書;有萬方、中國知網(CNKI)、維普等數據庫,可以查閱期刊、會議等學術論文。在課堂上教師可以演示利用圖書館中的中國知網(CNKI)檢索系統檢索相關論文,讓學生學會檢索查找文獻資源,這樣可以拓展學習資料,避免課程學習僅限教材的情況。多讀書,可以讓學生擴大視野,打開思路,培養和鍛煉學生自主學習的能力。

2.課程資料及論壇

互聯網是信息和傳播的重要平臺。網絡資源包羅萬象且更新及時,使用方便,不受時間的限制,其中涉及數據結構的教學資料、技術論壇等數不勝數。課程資源主要有國家精品課程資源網、MOOC學院、中國大學MOOC、學堂在線,以及國外MIT等開設的數據結構相關課程。而與數據結構相關的論壇則更多,比較突出的如CSDN論壇的數據結構與算法版塊、ITeye綜合技術論壇的數據結構版塊等。[4][5]在介紹課程資源及論壇的同時,教師可以簡單介紹百度或必應搜索引擎的用法,讓學生掌握利用搜索引擎查找相關資料的技能。

四、結語

在高校的課堂里,大學生要接觸不同門類的學科。教師在引導學生學習過程中能起到關鍵的作用。第一堂課既是師生之間的初次見面,也是大學生對教師及課程的初步了解與把握。良好的開端是課程成功的基礎,上好第一堂課,意義重大。對教師而言,上好第一堂課,會使學生對該門課程產生首因效應,在課程的興趣、理解、運用等方面產生積極影響,可以使教師對學生加深了解認識,有助于教師對教學安排進行合理配置,為今后的課程教學奠定良好的基礎。對學生而言,上好第一堂課可以使學生對課程內容有一個全面的認識,提升學生對課程的認同感,提高學生的學習積極性。

[ 參 考 文 獻 ]

[1] 張銘,耿國華,陳衛衛,等.數據結構與算法課程教學實施方案[J].中國大學教學,2011(3):56-60.

[2] 張永翊.上好大學里的第一堂課[J].中國成人教育,2008(20):131-132.

[3] 劉合兵,尚俊平.《數據結構》課程的教學研究與實踐[J].內江科技,2008(12):72,49.

篇4

摘要:我院基于“做中學”的教學理念,以項目為載體,研究“面向對象程序設計”和“數據結構”課程的有機結合。本文介紹了我院的改革方案及實施效果。

關鍵詞:課程融合;做中學;項目驅動

中圖分類號:G642

文獻標識碼:B

1引言

“面向對象程序設計”和“數據結構”是信息學科相關專業本科生的必修課程,也是專業基礎課程。“面向對象程序設計”課程通過全面、系統地介紹面向對象程序設計的基本概念、分析方法、設計方法、基本語法和編程方法,使學生能深刻理解和領會面向對象程序設計的特點和風格,類的封裝性、繼承性和多態性與程序的安全性、結構性和靈活多樣性之間的關系,進而掌握面向對象的程序設計方法和編程基礎,并具備解決一般程序設計問題的能力;“數據結構”課程有助于學生更有效地組織數據、設計高效的算法、完成高質量的程序以滿足錯綜復雜的實際需要,強調數據的組織方式和解決問題的思想。

在實際的教學過程中,學生對這兩門課程的掌握和運用不盡人意。一方面,相當部分學生雖然學過了“面向對象程序設計語言”課程,但在“數據結構”課程中卻難以利用面向對象的思想設計和實現相關的數據結構和算法,影響了學生對數據結構課程知識的掌握;另一方面,數據結構和算法是計算機科學的核心問題,很多學生在學習的過程中沒有意識到這一點,以至于到了實際項目中不知道運用所學的“數據結構”知識來解決實際問題。

2問題分析

“面向對象程序設計”和“數據結構”課程作為非常重要的專業基礎課,各高校在課時分配和課程建設方面都非常重視,出現上述問題的原因主要是課程設置和教學方式上存在問題。

在現代教學體系中,從抽象數據類型和面向對象觀點來討論數據結構已經成為一種主流,使得“面向對象程序設計”和“數據結構”兩門課程構成了強相關的課程。但在當前的實際教學中,這兩門課程被一直被設定為相互獨立的課程,課程間的教學出現了相互脫節現象,而且這種

現象在許多高校的教學中普遍存在。

在實踐環節上,由于課程設置上的相對獨立,也使得兩門課程在實踐教學方面有相當的重復,雖然總體的實踐教學學時很多,但各自側重點在實踐教學中沒有有效地體現,使得學生“事倍功半”,收效甚微。課程中實驗項目過于單一和相對獨立,也使得實踐環節與實際項目聯系過于松散,學生運用所學知識解決實際問題的能力和實際工程能力很難得到鍛煉,也難以培養軟件開發中所必須的團隊合作精神。

3課程改革方案及實施

針對目前“面向對象程序設計”和“數據結構”這兩門課程教學中存在的問題,我們將這兩門課程進行有機結合,探索采用教師指導下的以項目為驅動的“做中學”教學方式進行教學。精心設計項目,將面向對象的設計思想、程序設計語言和數據結構課程教學內容恰當地融入到所設計的項目當中,有效整合兩門課程中的重疊部分,突出各自的側重點。面向對象程序設計教學采用“做中學”(Learning By Doing)以及“按需教學”(Teaching On Demand)的方式進行教學,使學生在具體項目過程當中在掌握和熟練運用高級語言的特征的同時,深入理解和鞏固相應的數據結構知識;教學采用的項目與實際項目接軌,提高學生利用所學知識解決實際問題的能力;在教學過程中以項目組的方式組織學生,培養學生的團隊合作精神,提高學生的職業素養。

3.1課程項目

為了有效整合這兩門基礎課,我們精心設計了“Mini數據庫”項目,該項目較好地包含了“數據結構”中線性表、字符串、二叉樹、索引、查找、排序、文件等章節的主要內容。通過該項目實現了“數據結構”和“面向對象程序設計”課程內容的有機融合。

Mini數據庫分為三個模塊:基本數據模塊,數據庫內核模塊,數據庫管理界面模塊。其中,數據庫管理界面模塊呈現數據庫管理的總界面風格及形式,在項目具體實施過程當中,這一塊不作太多要求以免轉移項目重點,學生可以只完成控制臺形式界面。

基本數據庫模塊定義基本數據結構,采用哈希表和二叉樹結構,負責讀出業務數據的存儲,包括對最基本數據的查詢,刪除,修改和添加等操作。其結構如圖1所示。其中Index類創建索引,Matrix類以順序表形式存放所有數據,并且該類的設計融入了可利用空間表、模擬指針等思想,對學生在數據結構設計方面有較大的啟發作用。

數據庫內核模塊(如圖2所示)主要負責對文件中數據進行讀寫操作,實現定義表及表的屬性,設置主鍵和外鍵,定義表之間的關聯以及實現表的更改等功能。

Mini數據庫項目所涉及到的數據結構基本上基于本科教材中介紹的常用數據結構,部分數據結構在課本的基礎上稍做修改便可用于該項目,部分需要對教材所介紹的相應數據結構進行重新設計以適于項目。每一個數據結構都有其相關的代價和效益權衡,要完成項目,學生需要對多種數據結構的有效性進行評估來決定在什么情況下需要采取哪種數據結構。通過該項目我們希望達到三個目的:

(1) 使學生熟悉一些常用的數據結構,這些常用的數據結構形成了一個程序員的基本數據結構工具箱,對于實際中的很多問題,工具箱里的數據結構便是理想的選擇;

(2) 引入“權衡(tradeoff)“的概念,在項目中通過分析不同數據結構的代價和效益來討論“權衡”的概念;

(3) 評估數據結構或算法的有效性,在項目過程中引導學生分析工具箱中哪一種數據結構最適合解決項目中的某一問題,這種技術也使得程序員能夠判斷自己或別人發明的新數據結構的價值。

3.2教學方式及實踐

Mini數據庫系統在難度和復雜度上較傳統實驗高,如何引導學生在學習“數據結構”課程的同時完成該項目是一個值得研究的問題。我們的做法是:首先在教師指導下讓學生全面了解所要完成項目的整體結構,在學習“數據結構”課程的過程中結合所學知識逐步完成系統的各個模塊,最終完成整個項目。

我們采用集課堂理論教學、開放實驗、每周討論、網上答疑等多環節組成的立體化教學方式進行教學。

在課堂理論教學部分,根據所設計的項目我們對教學內容進行適當調整,強調所學內容在項目中的應用。完成相關理論知識的講授后,指導學生如何運用所學知識解決課程項目中的問題,并且理論教學中部分內容采取“做中教”方式進行,教師在現場編寫程序完成教學任務,幫助學生克服“編程難”的心理陰影,培養學生分析問題和解決問題的能力以及養成良好的編程風格,該方法深受學生歡迎。

實驗上機部分,學生以項目組的形式進行組織,3~4名同學為一組,共同完成課程項目,培養他們的團隊合作能力。為了防止項目組中個別動手能力弱的學生不參與或少參與課程項目的設計與實現工作,在課程項目進行的同時,我們布置了相應的課程實驗,課程實驗與教學內容直接相關,并且對課程的項目有直接幫助作用,每一個學生都要單獨完成課程實驗內容。為了給學生提供良好的實驗環境,我們采取開放實驗形式,為學生提供了專門實驗室。指導教師以office hour的形式解答學生問題,并且每個班配備了一名指導教師和一名助教。

為了克服簡單的“說教”型教學,每一周由指導教師或助教召集開展“每周討論”活動,學生以自愿方式參與“每周討論”。“每周討論”以學生為主體,由學生講解他們所設計的代碼以及所遇到的問題,特別鼓勵學生將上一周在課程項目或課程實驗中所遇到的問題提出來,由參與學生一起討論問題的解決辦法。為了鼓勵學生積極參與 “每周討論”活動,我們對積極參與討論和提出問題的學生在平時成績上予以體現,下一步我們將考慮對由學生評選“每周討論”活動積極分子,并給與獎勵。

課程網站是課程教學的有機組成部分,我們逐步建立了相對完善的課程網站。課程網站在為學生提供課程資源、課程項目和實驗任務的同時,為學生提供了網絡交流平臺。在“學習交流”板塊中,學生可以提出學習中遇到的問題,回答其他學生的提問。為了及時解決學生的提問,我們安排了教師和助教進行網絡值班。為鼓勵學生積極提問和回答其他學生問題,網上“學習交流”模塊中設計了加分功能,學生所得分數將作為平時成績的重要組成部分。

采用上述方式,我們在湖南大學軟件學院2004級和2005級本科生中進行了試點,每次挑選了30多位學生參加。第一次挑選的學生在全年級中屬于較為優秀的學生,完成情況非常好,其中兩位同學進入微軟亞洲工程院實習,并將他們在本課程中完成的項目作為一個亮點向實習單位介紹;第二次參加的學生的整體素質處于全年級中等水平,也順利完成了整個項目。在前兩屆學生成功試點的情況下,目前我們對2006級本科生全面采用上述教學方式進行“數據結構”和“面向對象程序設計”兩門課程的教學,通過近一個學期的教學,從教學的效果來看,學生的動手能力整體上較上幾屆學生有明顯改觀,并且學生的學習積極性也大大提高,90%以上的學生項目組能夠按照教學進度完成項目內容。

參考文獻:

[1] 溫莉芳,劉江. 美國名校計算機科學專業本科教學體系現狀分析[J]. 計算機教育,2004,(8):40-43.

篇5

關鍵詞:實踐課程;能力結構;研究性學習;創新實踐能力;模塊化教學

中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2014)49-0135-03

“十五”期間,國家教育部計算機科學與技術專業教學指導委員會發表了《高等學校計算機本科專業發展戰略研究報告暨專業規范(試行)》。《規范》中提出了“專業方向分類”發展的基本思想和三個輔助建議,輔助建議其中之一是“加強學生實踐和動手能力的培養”。

數據結構課程是計算機科學與技術專業的一門專業基礎課。該課程的任務是學會從解決問題入手,為所加工的數據選取適宜的邏輯結構、存儲結構及其算法。初步掌握算法的時間與空間復雜性的分析方法,同時進行復雜程序設計的訓練,使編寫的程序代碼結構清晰、易讀理解,符合軟件工程的規范。教學計劃是一個整體,實踐教學體系是整體教學計劃的一部分。數據結構實踐課程是數據結構課程的重要組成部分。本文從支持研究性學習及創新實踐能力的數據結構實踐課程教學體系的構建、以提高創新實踐能力為重點的數據結構實踐平臺的完善以及以能力結構教學目標為依據的知識單元模塊化教學的具體實施等三個方面進行實踐課程的教改探索。

一、以能力結構培養目標為驅動,構建數據結構實踐課程教學體系

知識結構、能力結構和綜合素質是人才培養與人才評價的三個主要因素。其中,能力結構是第一位的,知識結構與綜合素質都是為能力結構做支撐服務的。要強化學生的能力結構,就必須形成較完備的實踐教學體系,將實踐課程教學體系作為一個系統來構建。理論課程體系的設計主要體現專業結構、知識結構的培養目標要求,從而確定理論課程的知識領域、核心知識單元和知識點。而實踐課程體系的設計應主要體現能力結構的培養目標要求,從而確定實踐課程體系的各個單元目標和具體指標。數據結構課程的能力結構目標主要包括:學會從解決問題入手,識別典型的數據結構的邏輯結構特性的能力;能夠為所加工的數據選取適宜的存儲結構的能力;設計及實現問題求解主算法和主函數的能力;基本掌握算法的時間與空間復雜性的分析能力;基于高級編程語言,編寫復雜軟件的程序代碼的基本能力等。數據結構實踐課程的教學體系由六個部分構成:課程實習、課程實驗、課程設計、課程社會實踐、實踐教學評測和實踐教學文檔及資源。

1.課程實習是指對課程實驗和課程設計的基本技能和綜合技能的研究性學習和實踐技能的訓練。課程實習的基本技能包括:高級程序設計語言編輯器及語言的使用;程序的模塊化劃分的技能;常用人機交互界面的簡單設計等。綜合技能包括:應用抽象數據類型的設計思想,在實現數據結構基本操作的基礎上,確定功能模塊間必要的聯系,設計、調試主算法和主函數,系統的可視化界面的初步設計,對所完成的算法進行時間和空間的性能評價,從而完成數據結構的基本應用。

2.課程實驗是指配合課堂理論教學、以增強學生能力結構為目標的專業技能訓練。實驗課題的基本內容包括:線性表類應用實驗、棧和隊列類應用實驗、樹和圖類應用實驗、查找和排序類應用實驗以及自主研究性應用實驗等。通過課程實驗,使學生加深對課程內容的理解,培養將原理應用于實際的能力。

3.課程設計是指對理論課程的核心知識點以及能力結構的綜合技能的專業訓練。課程設計的課題包括:綜合訓練性題目和研究學習性及創新設計性題目兩大類。例如,立體化停車場管理、電梯運行模擬、二進制堆及其應用、線段樹及其應用等。課程設計的目的是全面落實課程教學大綱,激發學生自主研究性學習及完成創新性實驗的積極性,提升學生軟件設計的綜合實踐技能。

4.課程社會實踐。課程社會實踐是指對課程實驗及課程設計的課題所進行的社會調研與實踐。課程實驗的調研主要是對設計性和研究性課題做調研,課程設計則主要是對應用性和創新性課題做調研,為提高創新實踐能力打基礎。

5.實踐教學評測。實踐教學評測是指對實踐課程教學效果的評價和對學生實踐課程成績的評定。實踐教學評測的目的是依據課程的能力結構培養目標,科學合理的評定學生的實踐課程成績,使課程教學效果得到及時反饋,以促進實踐課程教學的不斷改進。

6.實踐教學文檔及資源。實踐教學文檔及資源是指為了保證實踐課程教學體系的各個環節有機結合、正常運轉的課程教學文件和參考資料。實踐教學文檔及資源包括:課程實習、課程實驗、課程設計、課程社會實踐的教學大綱和實施方案,實踐課程教學考核與評價的實施方案,以及實踐課程教材與多媒體實踐課件等。

數據結構實踐課程的教學體系要從自身的特點出發,對課程實習、課程實驗、課程設計、課程社會實踐、實踐教學評測等諸多教學環節進行整體、系統的優化組合。以能力結構培養目標為驅動,并將支持學生的研究性學習及創新實踐能力機制納入到體系中。

二、以提高創新實踐能力為重點,完善實踐課程教學平臺

大學生的實踐能力包括基礎性實踐能力、綜合性實踐能力和創新性實踐能力。如何在數據結構實踐課程教學體系中,通過日常的教學活動和過程管理,形成以提高創新實踐能力為重點的教學機制,是實踐課程教學體系建設的中心任務。研究性學習是指在教師指導下,根據所選擇的課題,主動地獲取和應用知識、解決問題的教學活動。創新的基礎在于研究性學習,研究性學習的核心活動是實踐和創新,創新能力的培養在于實踐。課程實驗和課程設計的研究性學習是以研究和設計為中心的實踐性教學活動。在構建實踐課程教學體系的基礎上,通過設計課題項目、組建課題項目團隊、開展項目教學法、注重項目過程管理、鼓勵研究性學習和實踐創新能力、實施創新評測機制等,逐步完善以提高創新實踐能力為重點的實踐課程創新實踐平臺。圖1是基于數據結構實踐課程教學體系,以提高創新實踐能力為重點的實踐課程創新實踐平臺的總體框架設計。其中,課程實習、課程實驗、課程設計是創新實踐平臺的核心內容。

1.開展項目教學法,注重項目過程管理。項目教學法是通過實施一個完整的項目而進行的教學工作。在數據結構實踐課程教學中,將項目教學法應用到課程實習、課程實驗、課程設計等各個教學活動中,培養學生良好的科研素質。通過課題的立項與開題、組建課題小組、方案分析、方案設計、方案實現和項目驗收的工作流程對學生進行科技創新活動的工程實踐訓練。抓好課題項目的過程管理是十分重要的工作任務。其中,抓好課題組長的業務培訓、課題組項目的認定、課題的階段驗收是項目過程管理的重點。

2.重視課題項目設計,促進拔尖創新人才發展。依據培養目標的能力結構和教學規律,科學、合理的設計課題項目,是開展項目教學法和項目過程管理的第一要素,也是教師發揮教學活動中的主導地位的首要任務和關鍵環節。課程實驗的課題類型有驗證性實驗、應用性實驗和創新設計性實驗。驗證性實驗屬于學生自主研究性學習的課下實驗;設計應用性試驗和自主創新性實驗是課上實驗,還要完成相應的實驗課題報告。課程設計的課題類型有綜合訓練型和研究創新型。遵從教育規律和認知規律,將課程設計的課題項目分級分類設計,以促進學生的階梯式發展。

3.組建課題小組,形成研究性學習氛圍。根據多元智能理論,每個人都擁有不同程度的八種智能,由于智能組合形式以及每種智能的表現形式不同,每個人的智能是獨一無二的,這也體現了個體的差異性。以學生自愿為原則,組建課題小組。課題小組的人員構成要考慮學生的氣質和性格差異,達到智能互補和優勢互補,促進學生的個性發揮和全面發展。通過組建項目團隊,競爭項目負責人,在課題組長的帶領下,開展課題項目研究,協同合作、相互交流,體現團隊精神,營造研究性學習氛圍,還可以使拔尖創新人才脫穎而出。

4.建立創新評測機制,激勵創新人才。建立一套完善的實踐教學的評測機制是十分重要的,實踐課程教學評測的指標中,應有創新人才的激勵機制。只有將學生的課程實習、課程實驗、課程設計、課程社會實踐等實踐教學環節都納入到評測機制中,才能對學生進行綜合全面的考核和評價。

對于學生實踐環節的成績認定,要依據能力結構指標考核并單設成績計入學分,不合格的同樣需要補考或重修。以課題組為單位,組員和組長間都可以互評,作為考評依據。

三、以能力結構目標分解為依據,實施技能知識單元模塊化教學

計算機科學與技術專業學生的能力要求可以歸納為計算機思維能力、算法設計與分析能力、程序設計與實現能力和系統能力。數據結構實踐課程的能力結構要求在上述能力結構中都有相應的體現。可以按能力結構培養目標的要求,將目標分解,采用分階段的技能知識單元模塊化教學。

1.能力結構教學目標分解。采用質量目標管理方法,將實踐課程能力結構的教學目標以計算思維能力為基礎,通過層次分解,將數據結構課程教學目標分解為理論知識單元和技能知識單元,再分解為若干知識模塊,每個知識模塊又蘊含若干知識點。例如,可以將數據結構課程中線性表的基本技能知識目標分解為靜態順序表、動態順序表、單鏈表、雙鏈表、循環鏈表等具體的存儲結構、基本操作和簡單應用等實踐教學目標。通過對實踐教學目標的分解,使得師生都清楚具體的質量目標定位,掌握學習進度,激發教師的主動性、學生的自主性及研究性學習熱情,將充分的精力投入到提升創新實踐能力的活動中。

2.技能知識單元模塊化教學。依據分解的數據結構實踐課程的能力結構教學目標,打破傳統的以理論知識為中心的學科式課程內容體系,取消章節限制,把密切相關的理論和實際操作技能有機地結合起來,組成知識領域,建立若干知識模塊,每個知識模塊又可由若干子模塊構成。每個子模塊又由若干個知識單元或課題組成,從而使實踐課程的教學形成一個“積木組合式”的模塊化教學模式。例如,數據結構實驗課程的基本技能模塊包括:線性表子模塊、棧和隊列子模塊、樹和圖子模塊、查找和排序子模塊及自主研究性應用子模塊等。線性表子模塊又包括順序表子模塊和鏈表子模塊。子模塊的內容又根據目標分解的技能指標構成。技能知識單元模塊化教學是以技能訓練為核心的一種教學模式。通過技能模塊化教學方法的實施,可以強化學生的技能訓練,促進學生動手能力的提高。

3.打造實踐課程教學團隊。建設一支由課程主講教師、實驗指導老師、實驗基地組成的實踐課程教學團隊,針對實踐課程教學的各個環節,從課程實習與實驗指導、實踐環境維護管理、課程設計與課程社會實踐、研究性學習與創新實踐能力等方面全力指導,由團隊負責課題項目的設計、組織和實施,統一于教學目標,服務于教學質量。

4.搞好實踐課程教學評測與教學資源建設。構建實踐課程教學體系及完善實踐課程教學平臺,這是培養創新人才的硬件要素;搞好實踐課程教學評測與教學資源建設,則是培養創新人才的軟件要素,二者缺一不可。對數據結構實踐課程引入技能單元模塊化教學后,每個模塊是一個相對獨立的能力實體,每個模塊結束后,都可以進行考核,及時檢驗模塊化教學的學習效果。課程實驗成績的評定可以采用百分制,由平時實驗課成績、實驗報告成績、實驗程序驗收成績組成,按一定的比例折算到實踐課程的總成績。

四、結語

實踐課程教學改革在計算機科學與技術專業2010級的學生中試行,在2011~2012級的兩個年級中實施,實際受益人數達600余人。經過兩個年度的實踐課程教改探索,確定了數據結構實踐課程的總體改革方案以及實施方案,精心準備并完善了課程實驗和課程設計實踐課題,組建了課題小組,培訓學生課題組骨干,完成了相關的教學文檔建設和課程資源建設。綜上所述,通過對數據結構實踐課程體系的分析和研究,論述了以能力結構培養目標為驅動出發,構建研究性學習與創新實踐能力的實踐課程教學體系,以提高創新實踐能力為重點,完善實踐課程教學平臺,以能力結構教學目標分解為依據,實施知識單元模塊化教學的措施,從而實現數據結構實踐課程的具體教學目標,推進計算機專業的整體化教學改革。

參考文獻:

[1]教育部高等學校計算機科學與技術專業教學指導委員會.高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(試行)[M].北京:高等教育出版社,2006.

篇6

關鍵詞:數據結構;精品課程;課程建設;課程教學

精品課程建設是教育部“高等學校教學質量與教學改革工程”的重要組成部分,是貫徹落實《教育部關于加強高等學校本科教學工作提高教學質量的若干意見》精神,進一步更新教育觀念,提高教學質量和人才培養質量的關鍵[1]。精品課程建設是教育新理念的體現,是新時代教學手段的具體運用,是各種教學資源的開發與整合,是學生自主學習、探究學習的窗口,是實施素質教育的新途徑[2]。精品課程的建設有利于優質教育資源的傳播和利用,也是我國教育事業的一次大的改革[3]。如何正確理解精品課程內涵、探索實現精品課程的科學途徑,對確保這一質量工程的順利進行具有重要意義[1]。

數據結構是計算機專業的核心基礎理論課,在整個專業知識體系中占據非常重要的地位[4]。通過學習數據結構課程,不僅要為后續課程打好基礎,而且要進一步提高學生的數據抽象能力和程序設計能力。數據結構課程概念多、方法多、邏輯性強、實踐性強,這些特點決定了教與學的難度大,其教學水平和效果又將直接影響后續課程的學習以及學生程序設計實踐能力的提高[5]。但是許多學生對于數據結構的概念、知識理解不夠,思考分析能力還處于一個較低的水平,所以不少學生反應數據結構是比較難學的一門課[6]。這些年來,我校各級領導對數據結構課程非常重視,加大力度進行組織建設,特別是在教學內容組織、師資隊伍建設、教學模式改革、實踐環節加強以及共享資源的開發等方面,具體論述如下。

1教學內容的組織

數據結構作為計算機專業的核心基礎課,主要思想是問題求解的理論與方法、抽象和設計的理論與方法等[4]。于是我們將課程內容分為概念表述、構建數據模型、算法設計與實現3個層面,突出數據組織方法與算法的實現技術,以適應不同層次的教學需求。采用面向對象的思想方法介紹數據結構的相關理論與方法,貫穿程序設計的思想觀點,引入抽象數據類型的概念及其基本性質,重點培養學生的數據抽象能力,突出構造性思維訓練,強化程序抽象能力和數據抽象能力的培養。

在教學過程中,我們圍繞抽象數據類型,采用面向對象的思想觀點,從基本概念、基本結構、基本方法來講解教學內容,并貫穿了計算機專業的一些問題求解方法。使用熟悉的C語言作為算法描述語言,便于學生把注意力集中在算法的理解上。通過給出用C語言實現抽象數據類型的方法,使數據結構的表示容易理解。采用定義、存儲以及典型算法實現來展開教學內容,并引導學生提高實際的應用能力。

我們在組織教學內容的時候注意知識點的前后呼應,而不是以簡單的流線形式呈現[7]。通過實踐證明,這樣可以幫助學生在學習新知識的同時復習以前的知識。例如有關排序知識,在程序設計課中已經學習了冒泡排序、選擇排序,在數據結構課中又學習直接插入排序、希爾排序、歸并排序、快速排序、堆排序等;這些排序算法可以應用于現實生活的很多地方,學生成績的排序、大學食堂買飯菜的排隊等;同學們在學習新的排序算法的同時可以復習以前的排序算法;還可以在自己熟悉的應用問題中實現各種排序算法,并對它們分析比較,收到很好的教學效果。

2師資隊伍的建設

教學質量的優劣取決于課程負責人、主講教師的教學水平和整體的能力[8]。課程建設需要有一支結構合理、綜合能力強的教學師資隊伍;建設學術水平高、教學水平高的師資隊伍是保證課程教學質量的關鍵。因此精品課程的建設過程也是篩選和培養一流教學師資隊伍的過程。通過精品課程的建設,我們組建了一支由8名教師組成的結構合理、綜合能力強的教學師資隊伍,其中高級職稱3人,中級職稱4人,初級職稱1人。教學隊伍中所有老師具有碩士或博士學位;年齡呈現梯隊結構,其中30歲以下的2人,40歲以上的2人。

本課程的教學師資隊伍中不但有主持過多項科研、教研項目的教授,也有教學經驗豐富的主講教師,并配有動手能力強的專職實驗教師。在課程建設過程中注重對青年教師的培養,通過“傳、幫、帶”的辦法,使青年教師走上主講教師的崗位,逐步挑起教學重擔;鼓勵中青年教師參加相關領域的師資培訓學習、參加科研和教研活動等,逐步提高他們的綜合能力。

3教學模式的改革

我們主要選擇并推廣精選案例(Selected Cases)、扼要講解(Briefly Explain)、任務驅動(Task-Driven)的教學模式,簡稱SBT教學模式[9]。

第一步,任課教師在深入鉆研數據結構教材的基礎上,根據課程的教學目的精心選擇教學案例。所選案例既能反映教學內容要表達的思想,又能讓學生容易理解。因此要求教師明確數據結構課程的教學目的:學生通過本課程的學習掌握如何根據問題的需求合理地組織數據,在計算機中有效地存儲數據和處理數據[10];通過該課程的實踐環節,對學生進行程序設計的訓練,鞏固加深對數據結構的理解,提高綜合運用本課程所學知識的能力,培養學生獨立思考、分析問題和解決問題的能力[11]。

第二步,任課教師對教學內容進行概括,結合教學案例進行簡單扼要地分析講解,使學生理解有關概念、掌握有關操作。在教學過程中注意啟發學生思考問題、分析問題,引導學生解決問題,提高學生的實際動手能力。

第三步,任課教師給學生布置具體課外任務,通過學生獨立完成具體的課外任務來實施教學。其中課外任務的提出可以結合學生的特點和興趣,使學生按自己的需求去學習,從而培養出獨立思考、勇于創新的自學能力[12]。

例如在講解哈夫曼編碼的內容時,我們一般先講一個簡單易懂的實例。學生很快就能理解哈夫曼樹的構造過程以及具體的哈夫曼編碼形成過程。然后引導學生理解哈夫曼樹的存儲和哈夫曼編碼的存儲。在學生掌握了這些存儲結構之后,再結合實例講解哈夫曼樹的構造算法、哈夫曼編碼的求解算法。最后布置課后作業完成一個求解哈夫曼編碼的實例程序,大多數學生能夠按時完成任務,教學效果良好。

4加強實踐環節

數據結構實驗應能達到如下基本目標:培養學生應用數據結構基本知識來分析問題、解決問題的綜合能力;幫助學生建立計算機問題求解的意識,主要是通過認識數據結構在問題求解中的地位來完成這種認識的建立;訓練學生用系統的、規范的觀點來進行計算機問題的分析、設計、編碼等[13]。

首先,改善實驗條件。在各級領導的大力支持下,我們更新了計算機專業實驗機房;實驗所需軟件都能在新學期開學之前完成安裝調試;每個實驗室配備一名維護人員,負責實驗室的運行與維護;設備完好率99%以上,實驗開出率100%。除了規定的上機實驗以外,提倡學生自己課余時間上機練習。為此,學院設有兩個開放實驗室,配備專門的實驗指導老師對學生免費開放。機房內計算機專業學生身影不斷,有的在復習教師的課堂教學內容,有的在閱讀網上的參考資料,有的在下載教師布置的作業,有效促進了良好學風的形成。

其次,加強實驗管理。在開學之初,主講教師與各班學習委員確認課內上機時間,并通知到每一個學生,實驗指導書、教材、習題集同時發到每個學生。每個學生必須完成教學大綱規定的8個實驗項目,實驗成績占30%;所有實驗實現1人1組;實驗前安排1次答疑;學生上機前必須完成預習,寫出完整的源程序,準備好上機步驟和調試數據。在實驗過程中遇到學生提問時,老師給學生一些提示信息,盡量讓學生自己將程序調試通過;實驗后要交實驗報告;教師批改后評定成績,不合格的學生必須重做。

第三,注重課程設計。課程設計是對所學知識的鞏固提高,是培養科研能力的重要環節。引導學生搞好課程設計的關鍵是選好題目與做好課程設計的準備工作。而課程設計題目的選擇要和所學知識緊密聯系,又與學生的創新能力培養密切相關。通過課程設計積極引導學生參加課外科技活動、校級省級程序設計大賽、大學生創新項目的探索等,以提高學生程序設計能力。

5共享資源的開發

建設精品課程的目的是通過為學生提供優質的教學資源來提高教育質量。我們在課程建設中使用網絡技術手段,建設了精品課程網站。精品課程網站由以下幾個部分主成:課程介紹、課程負責人、課程特

色、申報材料、教學大綱、課件與教案、教學錄像、教學論壇等。其中課件與教案就是教師上課使用的課件和教案,方便學生在不同時間、不同地點進行下載,然后根據自己的需要進行自主化的學習。任課教師還把自己的實驗程序、常見問題分析、習題解答等內容放到網上,供同學們學習參考。

6結語

隨著計算機技術的不斷發展,教學改革也在逐步深入,這必將對數據結構課程的教學提出更高的要求。因此精品課程的建設是一項長期的工作,也是一項綜合的系統工程。在今后的課程建設過程中,我們要用先進的教育理念武裝自己,不斷擴充新的教學內容,完善教學網站,強化實踐教學環節,為學生提供更多優質教學資源,培養出更多更好的符合社會需求的應用型人才。

參考文獻:

[1] 侯治富,金祥雷,谷樹嚴,等. 精品課程建設目標及實現途徑的研究與實踐[J]. 中國大學教學,2006(1):21-23.

[2] 李銀芳. 高校精品課程建設中應注意的幾個問題[J]. 中國高教研究,2007(1):91-93.

[3] 許坦,石. 精品課程發展現狀綜述[J]. 中國電化教育,2007(5):53-56.

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

[5] 耿國華,王小鳳,張德同.“數據結構與算法”課程工程型知識體系研究[C]//大學計算機課程報告論壇組委會. 大學計算機課程報告論壇論文集. 北京:高等教育出版社,2009:9-13.

[6] 顧沈明,張建科,李鑫. 數據結構教學模式的改革與實踐[C]//浙江省高校計算機教學研究會. 計算機教學研究與實踐. 杭州: 浙江大學出版社,2010:111-114.

[7] 劉雪梅,袁文翠,富宇,等.“數據結構”教學模式變遷的若干思考[C]//大學計算機課程報告論壇組委會. 大學計算機課程報告論壇論文集. 北京:高等教育出版社,2006:535-537.

[8] 耿國華. 數據結構課程改革與教學資源建設[C]//大學計算機課程報告論壇組委會. 大學計算機課程報告論壇論文集. 北京: 高等教育出版社,2006:150-153.

[9] 潘洪軍.“精選案例,扼要講解,任務驅動”教學模式[J]. 中國高教研究,2008(11):55-56.

[10] 王玉峰,劉寶旨,王猛劉,等. 也談“數據結構”的教學[J]. 計算機教育,2007(15):21-23.

[11] 舒堅,劉琳嵐,陳斌全,等.“數據結構”課程實踐教學改革的設計與實踐[C]//大學計算機課程報告論壇組委會. 大學計算機課程報告論壇論文集. 北京:高等教育出版社,2007:401-404.

[12] 王炳強,張植才. 任務驅動法在C語言程序設計課程中的應用[J]. 黑龍江科技信息,2009(5):53.

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

Organization and Construction of High-quality Course of Data Structure

GU Shenming, WU Yuanhong, HUANG Haifeng

(School of Mathematics, Physics and Information Science, Zhejiang Ocean University, Zhoushan 316000, China)

篇7

課程銜接 層次性教學 任務驅動教學

一、引言

設計、實現一個復雜或者高級項目的軟件項目,可能需要涉及程序設計語言、數據結構、算法設計與分析、計算機網絡、數據庫等許多課程。而計算機科學技術專業的每一門課程都是從基礎理論入手,復雜、高級項目不適合作為課程的學習案例或者習題。

不少課程選用比較簡單和容易理解的小項目作為例題講解知識點或者作為習題鞏固學生所學知識點。比如約瑟夫程序,在程序設計語言中是鏈表操作習題,而數據結構課程中又作為線性表的習題或者上機題目;圖書館管理程序,可能作為數據結構課程的線性表的課程設計題目,也可能作為數據庫課程范式優化的例題;集合的交集和并集可能作為離散數學課程的習題,也常被選做數據結構課程線性表操作的算法優化例題;網絡蜘蛛常被作為計算機網絡課程的課程設計題目,也常因為其中的典型樹形結構關系被數據結構課程選作綜合性課程設計題目;多優先級作業調度既是操作系統課程的主要研究內容,也是數據結構課程隊列內容的習題。

以往的教學實踐反映,很多學生學完課程之后并沒有達到預期的目的。究其原因,一是對學生動手能力的培養沒有到位,以至于部分同學對課程的學習還停留在“紙上談兵”的階段;二是對學生自主學習能力的培養沒有到位,以至于涉及講授范圍之外的問題學生就不知從何入手。可以采用分層次教學,就是要因材施教,根據大多數學生的情況,正確處理教學中難與易、快與慢、多與少、應知與應會的關系。充分發揮學生學習的主體作用,轉化差生、培養優生,全方位增進教學效果。

目前的教學活動,主要考慮的先后關系,而沒有建立良好的課程的銜接關系。需要研究、整理他們直接的銜接關系。

需要整理本課程案例,考慮與先修課程或者后修課程的關系及所選題目的價值和意義,同時對案例采用層次性分解方法,滿足層次性教學需求。

鑒于計算機專業本科教學課程數量多,本文針對計算機兩大具有緊密關系的核心基礎課程《數據結構》和《程序設計C語言》進行探索,并期望擴展到其他課程。

二、課程的銜接關系

C語言程序設計與數據結構是工科院校計算機專業中開設的兩門重要的專業基礎課。在以往教學中,這兩門課程是相對獨立、分開授課的,因此導致內容脫節,教學效果差。一般C語言程序設計課程只注重C語言的語法體系,因此學習后卻不能用C語言進行程序設計;后者則注重講授抽象的數據關系和算法在計算機中的表示及實現,學生能進行抽象算法的描述,上機實踐應用時卻無從下手。然而,這兩門課程都以培養學生解決實際問題的程序設計能力為共同目標。因此,如何將這兩門課程有機地結合起來,構建C語言與數據結構的新體系,改革教學方法,提高教學質量,成了當前教學改革中亟待解決的問題。

在傳統的教學模式下,C語言程序設計與數據結構這兩門課程分開教學。C語言程序設計的學習主要在語言語法的層次上,數據結構難度較大,注重思維訓練,造成學生不能結合有效結合這兩門課程運用到實際中去。通過不斷探索,認識到這兩門課程有很多內在聯系,如軟件是用一種程序設計語言編寫解決該問題的算法,通過編譯、鏈接成為可執行程序而成,而算法是通過處理輸入數據轉換為輸出的解決方案,因此數據結構和程序設計語言密不可分;再比如數據結構討論的抽象數據關系和算法要用C語言去實現等。

針對差異化的學生現狀,整理課程關系,精巧的設計教學案例和習題實現任務驅動式教學法,對于調動學生學習興趣,先修課程的簡單案例讓學生能夠逐漸獨立實現,有助于學生產生滿足感,增加學習自信心;對于案例的擴展性引導,啟發學生深入思考和逐步掌握自學方法,通過自學后修課程,提出的較難的問題又有助于激發學生參與后修課程學習的積極性。

三、擬解決的主要問題

數據結構與C語言課程的結合方式的探討,針對探討結果設計實際結合方法,并在學生中實踐,選擇最佳結合方式。

數據結構與C語言,每門課程需要有經驗的任課教師結合本課程特點,探討并確定各個案例與各知識點和其他課程關系,針對學生差異性現狀和任務驅動式及層次性教學需求,對選擇的案例采用遞增式設計;確定跨課程案例及相關課程名,涉及的知識點。探討選擇的習題(包括課堂練習題、課后思考題、課后作業、上機實驗題和課程設計題目)于知識點及其他課程的關系,標注習題難度級別,以達到層次性教學目的。

針對這兩門課程的案例和習題,深入探討相互關系,特別是相互的銜接性,C語言課程首先需要講解基本語法知識,幫助初學者建立簡單的程序設計過程思想,但由于教學時間限制,只依靠課內學習和課后作業及上機實驗是不能充分達到熟練運行C語言解決問題,編寫項目程序的目的。

C語言是大一學生首先接觸的程序設計語言,加上許多學生還存在中學時期的一切依賴老師的學習方法和觀念,未能進一步學習并提高程序設計能力,因此在后續課程中,比如數據結構課程中需要在講解數據結構抽象數據類型及解決問題的時候,學生應該嘗試借用C語言編程實現抽象算法。因此,應該結合學生的這個實際情況,進一步細化和分解選擇的案例和習題,讓學生在C語言學習過程中學會應用C語言解決和數據結構簡單問題相關任務,為數據結構課程打下堅實基礎;而數據結構課程中有意識的安排一些案例和習題,讓學生能夠有運用C語言解決簡單問題的能力,并通過數據結構課程的學習和培養,掌握復雜問題的解決方法和更加熟練的應用C語言工具。

四、總結

根據計算機課程關系,設計優化與其他相關課程有關系的案例與習題,一來可以引導學生理解后修課程部分內容,引起學習興趣,二來在一些先修課程已經介紹本課程該知識點的基礎上,提出新的解決方案或者優化方法,更容易激發學生探索問題的好奇心和解決復雜問題的滿足感,加強學生理解課程相互關系和培養計算機創新思維。

以數據結構課程和程序設計語言課程為例整理課程關系,研究和設計教學案例及習題,滿足學生差異化需求和對學習內容的興趣,進行層次性教學,將其經驗和方法最終推廣到計算機本科教學的各課程。

參考文獻:

[1]黃迪明.C語言程序設計(第2版)[M].成都:電子科技大學出版社.

[2]吳躍,李樹全,尚明生.數據結構與算法(第2版)[M].北京:機械工業出版社,2010.

[3]薩師煊.數據庫(第3版)[M].北京高等教育出版社,2000.

[4]傅彥,顧小豐,王慶先.離散數學及其應用.北京:高等教育出版社,2007.

篇8

關鍵詞:數據結構;理論教學;實踐教學;教學改革

中圖分類號:TP311.12-4 文獻標識碼:A 文章編號:1007-9599 (2012) 17-0000-02

1 課程內容

《數據結構》是計算機科學中一門綜合性的專業基礎課,也是其它輔修計算機專業的必修課程。本課程討論了軟件設計中經常遇到的線性表、堆棧、隊列、串、數組、樹和二叉樹、圖等典型數據結構的邏輯結構、存儲結構和操作的實現方法,以及遞歸算法設計方法和各種典型排序和查找算法的設計方法。并對算法進行性能分析和比較,內容非常豐富。數據結構課程是一門理論和實踐相結合的課程。本課程包括講授和課內上機實驗兩部分教學內容。課內上機實驗是為訓練學生的實際程序設計能力安排的。

課程的目標是使學生掌握數據基本的邏輯結構和存儲結構、一些典型的數據結構算法及程序設計方法和技巧,要求學會分析數據對象特征,掌握數據組織方法和計算機的表示方法,為數據選擇適當的邏輯結構、存儲結構以及相應的處理算法,要求具備算法分析的基本技術和能力,并培養良好的程序設計風格,掌握開發復雜、高效程序的技能。

2 理論教學方法與手段的探索

遵循以學生為主體,以教師為主導的教育理念,針對理論教學和實踐教學的不同特點,合理進行教學設計,推進教學方法和教學手段改革。課堂上引入啟發式教學,充分發揮學生的學習主動性,重視自學能力的培養,引導學生積極思考,活躍課堂氣氛,適當壓縮授課時數, 留給學生更多的思維空間和自學空間,增加學生閱讀參考書、科技文獻和寫讀書報告的時間。數據結構的教學策略:

(1)激發學生的學習興趣

興趣是最好的老師,只有激發了學生的學習興趣,才能事半功倍,取得更好的學習效果。在教學中通過具體的實例說明數據結構在程序設計中的重要性,從而激發學生的求知欲,讓學生充分感受到數據結構算法設計的魅力,調動學生思考的積極性。鼓勵學生對教學內容提出疑問,師生共同討論,從而提高教學和學習水平。在課堂上隨時提出一些思考題,對一個結構從不同角度討論。例如,對于線性結構,討論線性表、棧和隊列各自的操作特點。鼓勵學生在學習過程獨立思索,提出不同的算法,深化對問題的理解。例如在講解循環隊列時,如何判斷隊空和隊滿,有的同學提出三種解決方法。對于這樣的同學,我們及時給與表揚和鼓勵。

(2)教學內容的有機組合

在現有教學大綱的內容的基礎上,不斷吸收新知識、新內容,補充考研試題。對教學內容的安排重新進行拆分和重組,突出重點、細化難點。運用面向對象的學習方法講解數據結構,每一種數據結構的學習方法都是相似的,重點介紹數據結構的邏輯關系、基本操作和在不同存儲方式下基本操作的實現,介紹數據的邏輯結構和物理存儲之間的關系,及物理存儲在類C語言中的描述,數據結構的主要內容可用以下的體系結構來表示。

學生在了解了數據結構課程的核心內容后,算法的實現就不難理解了。例如:我們在講授線性表的復雜操作有序表的合并時,先從邏輯上看是如何實現的,介紹算法設計思想,然后講解兩種實現算法:順序存儲方式和鏈式存儲方式下的算法,讓學生自己比較兩種算法,加深理解。

(3)雙向互動式的教學

改變原來“填鴨式”的教學模式,變以教師為主的教學方式為以學生為中心的教學模式,教師只起畫龍點睛的作用。課堂上引入啟發式教學,充分發揮學生的學習主動性,重視自學能力的培養,引導學生積極思考,活躍課堂氣氛,適當壓縮授課時數,留給學生更多的思維空間和自學空間,增加學生閱讀參考書、科技文獻和寫讀書報告的時間。為了更方便和鼓勵學生自主學習,我們建設了數據結構精品課程網站,有授課視頻、教學課件、各章習題和考研輔導等學生內容,教師還可以通過網站進行網上答疑,與學生及時交流。

(4)注重各知識點的有機統一

若想讓學生做到融會貫通,舉一反三,在教學中就必須注重各知識點的有機統一。比如在講授內部排序算法時,綜合比較各種排序算法的時間復雜度、空間復雜度、穩定性、最好及最差情況等。讓學生通過比較,提高解決問題的能力,會根據不同形式的待排序表選擇合適的存儲方式和排序方法。再就是講授鏈隊列時,講完用一個帶有頭尾指針的單鏈表表示的隊列后,再讓學生思考如何用一個循環鏈表表示隊列,在給出啟示后讓學生自己寫成隊列的初始化、入隊和出隊算法,通過這種方式的教學不僅培養了學生的思維能力,而且有助于培養學生的創新能力,會綜合運用所學知識,用計算機解決較復雜的問題。

(5)運用現代化教學手段

重視現代教育方法、技術手段的運用,采用多媒體教學,加大課程信息量,提高教學效率。在采用多媒體技術講授本門課程的過程中,在深入研究多媒體教學的特點以及學生現有知識架構的基礎上,重新組織、優化、補充教材內容,精心制作多媒體課件。在多媒體課堂上,通過教師有機地組織電子教案、演示課件等,使得學生能形象地領悟到算法的效果,教學變得豐富、有趣。在授課過程中,首先還原問題的本來面目——提出問題,引導同學積極參與——嘗試解決問題,在討論的基礎上給出結論——講授教學內容,最后采用課件進行算法的動態演示,加大了課堂信息量,提高了教學效率。

3 實踐教學的探索

實踐教學是數據結構課程教學的一個重要組成部分,對本門課程的學習起著至關重要的決定。通過實踐教學,讓學生能夠學會運用書上學到的知識來解決實際問題,培養軟件工作所需要的動手能力。

實踐活動通過兩個環節來實現,第一個環節課程實驗,較偏重于對課程內容的理解。實驗講義完備,開出率100%。保證了學生理解和掌握課程的基本理論和基本概念,又提高他們的動手能力。第二個環節課程設計實習,讓學生有機會自己提出實驗項目、實驗方案,在教師指導下按其方案進行實驗,最后讓學生自己得出應有的結論,進一步培養學生的學習興趣和實踐動手能力,從而激發創造力,也初步實現了對學生進行一整套軟件工作規范的訓練和科學作風的培養。

(1)實驗教學內容

依據實驗教學大綱,合理安排實驗教學內容。我在教學時把實驗項目按照不同內容和難度分成三種類型:基礎型實驗項目、設計性實驗項目、和綜合性和創新型實驗項目,實現了實驗教學內容的創新。基礎型實驗項目安排在各個章節中,主要圍繞數據結構基礎知識內容,目的是讓學生掌握各種基本數據結構的邏輯關系和存儲方式,通過實驗驗證算法,理解數據結構的基本操作的定義和實現。設計型實驗項目是在基礎型實驗項目的基礎上,讓學生自己設計數據結構和算法,提高學生解決問題的能力和良好的編程能力。例如一元多項式求和,要求學生選擇合適的數據結構自己編寫算法。綜合型實驗項目涉及數據結構中多個知識點的重點內容,要求學生自己進行設計和實現,主要訓練學生綜合運用知識的能力,協作能力和創新實踐能力。

(2)考核方式探索

為了培養學生的創新意識和團隊協作精神,促進學生之間的交流和協作,使不同水平的學生都能在大型實驗項目中擔負起相應的工作,特別設計了一套針對綜合型實驗和探索創新型實驗的考核方式和考核方法。

根據不同的實驗項目采取不同的考核方式,基礎型和設計型實驗項目安排在平時每周的上機實驗課進行,根據學生提交的實驗報告進行考核。綜合型和創新型實驗項目較大,需要學生分工合作,共同完成,一般對學生進行分組,每組完成一個實驗項目,在課程設計環節完成,一般有兩周時間,教師根據每個學生在組內的表現給出一個考核成績,項目完成后,再根據各組提交的項目報告和項目的質量給出合理考核成績。這樣既激發了學生的創新能力,又提高了學生的團隊合作精神。

4 結論

在研究課程的教學方法時,要因內容制宜,因學生制宜,采取不同的教學方法。本人通過近十年對數據結構教學的實踐與探索,取得了一定的教學效果,使得學生在學習數據結構時,不在感覺那么抽象,理解數據結構和算法不再那么困難,讓學生真正理解了數據結構的作用,會選擇和使用合適的數據結構解決問題。為學生后繼課程的學習打下良好的基礎,乃至對學生今后從事軟件方面的工作都會提供較大的幫助。

參考文獻:

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

[2]李治軍,廖明宏,張巖.數據結構與算法課程設計教學模式的探討[J].計算機教育,2006(2).

[3]殷人昆,陶永雷,謝若陽,盛絢華.數據結構(用面向對象方法與C++描述)[M].北京:清華大學出版社,2002.

[4]李鋒,孫莉.任務驅動式方法在離散數學教學中的應用[J].計算機教育,2006(3).

[5]王銳.基于網絡的《數據結構》新型教學模式研究[J].中州大學學報,2006(10).

[6]莫家慶.《數據結構》程序教學模式探索[J].計算機教育,2008(9).

篇9

關鍵詞: 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塔”問題、八皇后問題或者迷宮問題讓學生思考,再逐步引出“棧”的相關知識,然后鼓勵學生應用“棧”編寫算法解決這些問題并上機編程實現。以八皇后問題為例,提出問題可以教師口述如下:八皇后問題是一個古老而著名的問題,該問題是十九世紀著名的數學家高斯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

篇10

1地球科學信息與技術專業中數據結構的教學現狀與困境

筆者對中國海洋大學、同濟大學、中山大學、浙江大學、中國地質大學(武漢)、中南大學、河南理工大學、石家莊經濟學院8所院校的地科專業數據結構課程教學現狀進行了調查和分析,認為該專業數據結構課程教學存在著一些亟待解決的問題。這些問題主要表現在以下兩個方面:

1.1教學內容與專業應用脫節筆者對上述8所學校的地科專業的基礎信息進行了匯總和分析(見表1),發現8所學校的地科專業成立時間比較晚,集中在2002年至2006年,而且依托學科多為地質學、勘察技術、地球物理學、測繪學,科研實力雄厚、教學經驗豐富,但缺乏計算機學科方面有經驗的教師。目前大部分從事數據結構教學的教師來自于計算機學科,這些教師具有豐富的計算機學科的專業知識,但缺乏的是如何把數據結構同其本專業進行有機地融合,使學生誤認為學習數據結構僅僅是為了掌握相關的計算機技術,而與本專業的知識結構沒有直接聯系。

1.2學生的計算機語言基礎較為薄弱數據結構就教科書的內容而言,主要介紹一些算法,理論性強,大部分算法只給出主體的部分,通常采用偽代碼、C語言或者類C語言描述,如果沒有很好的計算機語言基礎,學生就不能很好地在上機實踐中編寫完整程序去檢驗算法[2]。目前,地科專業學生不重視高級語言程序設計課程的學習,導致其計算機語言基礎較為薄弱,影響其對數據結構課程內容的理解和實踐。

2數據結構課程改革的總體思路

2.1依據專業特色調整教學內容和教學重點由表1可知,8所學校地科專業的專業特色各不相同。依據專業特色調整數據結構課程的教學內容和教學重點,把地球信息科學專業知識與數據結構理論進行有機地融合,使學生明白數據結構課程在本專業知識體系中的位置。

2.2注意前導課程的復習針對學生計算機語言基礎較為薄弱這種情況,在數據結構正式開始學習之前需要復習一下高級程序設計語言的相關知識,如數組、指針、函數(特別是指針做函數參數)、結構體等[3]。然后,對剛進入本課程學習的前幾個算法給出完整的程序并加以詳細講解,使學生理解算法和源程序之間的關系。

2.3協調高級語言程序設計與數據結構關系為避免高級語言程序設計與數據結構課程使用的計算機編程語言不一致而導致數據結構課程教學效果差的情況發生,需要保持高級語言程序設計與數據結構編程語言一致、編譯平臺一致。在數據結構教學過程中應重視學生實踐能力的培養,培養學生在編譯平臺環境中使用高級語言編寫完整程序去檢驗算法的能力。

3數據結構課程改革的具體實施

3.1加強學生計算機編程能力的培養力度首先需要加強地科專業學生計算機編程能力的培養力度。學生應該明確自己學習高級語言程序設計的目的,不是把它作為純理論的課程來學習,而是作為應用技術來掌握,為數據結構課程的順利學習提供扎實的應用基礎。根據這種情況,在這一模塊的改革過程中需要對高級語言程序設計和數據結構課程教學的內容進行微調,在高級語言程序設計課程原有內容的基礎上添加幾章“數據結構”的基礎內容,在數據結構課程正式開始學習之前需要復習一下高級語言程序設計的相關知識,使兩門課程內容順利過渡和銜接。這樣既提高了學生的編程能力,也使兩門課程融會貫通。

3.2培養學生算法驗證能力在第一模塊的基礎之上,學生還必須理解數據結構基礎理論,具有算法驗證的能力。簡單地說,數據結構是一門研究非數值計算的程序設計問題中計算機的操作對象以及它們之間的關系和操作等的學科。對于學習數據結構的學生,不能靠死記硬背,必須理解數據結構中的各類定義,抓住研究數據結構的規律,這一規律就是,在研究一種數據結構時,要掌握它的邏輯和物理關系,邏輯關系在其定義中闡述,物理關系在它的存儲結構中說明。另外,數據結構學習一定要要求學生自己獨立完成代碼實現,雖然有時候學生理解算法內容了,但是實現上面還是會遇到很多困難的,解決這些困難會幫助學生提高算法驗證和程序設計的能力。

3.3培養學生專業應用能力在前兩個模塊的基礎之上,學生還必須具備專業應用能力,將數據結構理論靈活的應用于本專業領域。對于地科專業的學生來說,在后續課程和以后的工作中有許多地方需要數據結構理論,如:在數據結構課程中學習的排序問題的算法,以及基本的樹、圖等數據結構,是計算機科學的基本功,無論是在數據庫還是網絡中,都將作為基本知識來運用;同時,通過B+樹、Hash等高級數據結構的學習,也對學生今后數據庫的學習影響頗深。根據這種情況,在這一模塊的改革過程中首先需要依據專業特色調整數據結構課程的教學內容和教學重點,把地球信息科學專業知識與數據結構理論進行有機地融合,使學生明白數據結構課程在本專業知識體系中的位置。在數據結構課程教學中加入位圖、遙感圖像、DXF文件、MIF文件、SRF文件等常見圖像或圖形文件結構和四叉樹、八叉樹等二維和三維圖形數據文件存儲結構,使學生能夠理解數據結構的真正內涵并能活學活用,為后續專業課程的學習和專業知識的理解奠定良好的基礎。其次,鼓勵學生參與數據結構與專業相結合方面的課題研究,如“基于VTK技術的三維地層可視化研究”項目需要將專業知識、數據結構理論、數據庫理論、高級語言程序設計交叉融合,學生參與此項目既可以加深對數據結構理論的理解,又提高了專業綜合應用能力。此外,在課程設計和畢業設計時布置相應的課題,在教師的指導下讓學生自己動手去完成這些課題,以求進一步提高學生應用數據結構解決專業問題的綜合能力。