伊人色婷婷综在合线亚洲,亚洲欧洲免费视频,亚洲午夜视频在线观看,最新国产成人盗摄精品视频,日韩激情视频在线观看,97公开免费视频,成人激情视频在线观看,成人免费淫片视频男直播,青草青草久热精品视频99

期刊在線咨詢服務(wù),立即咨詢

期刊咨詢 雜志訂閱 購物車(0)

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)模板(10篇)

時(shí)間:2023-02-07 11:43:22

導(dǎo)言:作為寫作愛好者,不可錯(cuò)過為您精心挑選的10篇數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),它們將為您的寫作提供全新的視角,我們衷心期待您的閱讀,并希望這些內(nèi)容能為您提供靈感和參考。

篇1

一、背景

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

二、微課及設(shè)計(jì)方法

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

三、數(shù)據(jù)結(jié)構(gòu)微課設(shè)計(jì)過程

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

(一)知識點(diǎn)分析與微課主題單元?jiǎng)澐?/p>

設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)課程的微課時(shí),首先按照課程內(nèi)容的知識結(jié)構(gòu)來完成各個(gè)主題單元的設(shè)計(jì)和劃分。我國的大部分?jǐn)?shù)據(jù)結(jié)構(gòu)與算法的教材[7-8]把課程的知識體系對應(yīng)到教學(xué)內(nèi)容之后,分成了基本概念和基礎(chǔ)知識、線性數(shù)據(jù)結(jié)構(gòu)及相關(guān)算法、樹形結(jié)構(gòu)及相關(guān)算法、圖結(jié)構(gòu)及相關(guān)算法四個(gè)教學(xué)組成部分,這四個(gè)組成部分又可分別分成若干子模塊,每個(gè)子模塊又可再分成若干主題單元;劃分方法可以使用表格或思維導(dǎo)圖來協(xié)助完成。思維導(dǎo)圖是表達(dá)發(fā)散性思維的有效圖形思維工具,能直觀地把各級主題的關(guān)系用相互隸屬與相關(guān)的層級圖表現(xiàn)出來[9]。借助思維導(dǎo)圖,我們能有效完成微課課程知識結(jié)構(gòu)的設(shè)計(jì)工作,圖1是我們設(shè)計(jì)線性數(shù)據(jù)結(jié)構(gòu)及相關(guān)算法部分的微課主題單元思維導(dǎo)圖。

(二)微課主題單元設(shè)計(jì)

篇2

中圖分類號:TP311.12 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2013)22-5101-02

數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的一門必修的專業(yè)基礎(chǔ)課,是計(jì)算機(jī)理論與技術(shù)的重要基石。該課程的主要特點(diǎn)是實(shí)踐性很強(qiáng),不僅要學(xué)習(xí)基本理論知識,更要注重上機(jī)實(shí)踐,通過上機(jī)實(shí)踐驗(yàn)證算法的正確性,掌握和鞏固所學(xué)理論知識。該課程的主要目的是通過學(xué)習(xí),使學(xué)生學(xué)會(huì)分析研究計(jì)算機(jī)加工的數(shù)據(jù)結(jié)構(gòu)的特性,以便為涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及相應(yīng)的算法,并初步了解對算法的時(shí)間分析和空間分析技術(shù);另一方面,通過算法設(shè)計(jì)和上機(jī)實(shí)踐的訓(xùn)練,培養(yǎng)學(xué)生的數(shù)據(jù)抽象能力和程序設(shè)計(jì)的能力,為后續(xù)課程,特別是軟件類課程打下堅(jiān)實(shí)的基礎(chǔ)。

數(shù)據(jù)結(jié)構(gòu)課程要求學(xué)生掌握各種常用數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu),及相關(guān)操作的算法,而學(xué)生在算法設(shè)計(jì)或程序設(shè)計(jì)方面還不具備足夠的技巧,因而會(huì)感到難以理解和掌握。學(xué)生理解教材上的基本概念并不難,然而,他們在解決具體問題時(shí)就會(huì)感覺到力不從心,特別是對那些有一定難度的算法設(shè)計(jì)題更顯得無從下手[1-2]。因此,培養(yǎng)學(xué)生的學(xué)習(xí)興趣和自信心,提高其學(xué)習(xí)的主動(dòng)性、創(chuàng)新性及應(yīng)用能力,是數(shù)據(jù)結(jié)構(gòu)課程教學(xué)中的重要任務(wù)。

數(shù)據(jù)結(jié)構(gòu)課程一般是在大學(xué)二年級上學(xué)期開設(shè),而數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)在大學(xué)二年級下學(xué)期開設(shè)。作為一個(gè)重要的實(shí)踐教學(xué)環(huán)節(jié),該課程是數(shù)據(jù)結(jié)構(gòu)課堂理論教學(xué)的延續(xù)與補(bǔ)充,其基本目標(biāo)是運(yùn)用所學(xué)知識,對實(shí)際問題進(jìn)行分析,選取合適的數(shù)據(jù)結(jié)構(gòu),獨(dú)立地進(jìn)行設(shè)計(jì)相對應(yīng)的存儲結(jié)構(gòu),并用算法加以實(shí)現(xiàn),從而解決所提出的問題[3-4]。在此過程中,進(jìn)一步鞏固、加深和融合所學(xué)的專業(yè)課程知識,鍛煉學(xué)生獨(dú)立思考的能力、分析問題和解決問題的能力、綜合設(shè)計(jì)能力、開拓創(chuàng)新能力、自學(xué)能力,以及團(tuán)隊(duì)協(xié)作能力等。因此,課程設(shè)計(jì)對全面提高學(xué)生綜合素質(zhì)具有重要意義。

筆者在多年的教學(xué)實(shí)踐中體會(huì)到,數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的教學(xué)要循序漸進(jìn),如何讓學(xué)生理解課程內(nèi)容與較好地解決實(shí)際問題兩者相結(jié)合是本門課程教學(xué)的主要目標(biāo)。為了讓學(xué)生準(zhǔn)確理解并鞏固所學(xué)的基本概念、原理和方法,將所學(xué)的基本知識、基本技能用于解決實(shí)際問題,達(dá)到具備今后軟件了開發(fā)工作所需的能力,最重要的是讓他們勤加苦練。經(jīng)過循序漸進(jìn)地練習(xí),使學(xué)生掌握更多的程序設(shè)計(jì)技巧和方法,提高他們分析、解決問題的能力,培養(yǎng)他們的團(tuán)隊(duì)協(xié)作精神。接下來,筆者就如何激發(fā)學(xué)生的興趣,提高數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的教學(xué)效率和效果,闡述幾點(diǎn)感受與體會(huì),與同行一起探討。

1 課程設(shè)計(jì)教學(xué)過程中的體會(huì)

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)比教學(xué)實(shí)驗(yàn)復(fù)雜一些,涉及的深度更廣些,而且更加實(shí)用一些。教學(xué)過程中,教師根據(jù)學(xué)校的特點(diǎn)和教學(xué)計(jì)劃選擇相應(yīng)的課程設(shè)計(jì)內(nèi)容,幫助學(xué)生系統(tǒng)掌握數(shù)據(jù)結(jié)構(gòu)這門課的主要內(nèi)容,從而順利完成教學(xué)任務(wù)。為實(shí)現(xiàn)課程教學(xué)目標(biāo),筆者結(jié)合自身的教學(xué)經(jīng)驗(yàn)和研究成果,就教學(xué)過程中課程設(shè)計(jì)內(nèi)容的選題,實(shí)施方法,以及評價(jià)標(biāo)準(zhǔn)等方面談?wù)勛约旱囊恍w會(huì)。

1.1 課程設(shè)計(jì)內(nèi)容的選題

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)應(yīng)遵循以下原則:堅(jiān)持以能力為本位,以學(xué)生為主體,教師角色轉(zhuǎn)換為倡導(dǎo)者。選題時(shí)盡量達(dá)到以下特點(diǎn):新穎性、實(shí)用性、難度適中、各有所需。

一個(gè)好的選題既可以反映課程設(shè)計(jì)大綱的要求,又能反映本學(xué)科新技術(shù)的發(fā)展前沿,還能通過本課程設(shè)計(jì)訓(xùn)練,培養(yǎng)學(xué)生分析問題、解決問題的能力,從而掌握數(shù)據(jù)結(jié)構(gòu)這門課程的主要內(nèi)容。首先,選題要新穎,因?yàn)樾路f的選題能進(jìn)一步激發(fā)學(xué)生的學(xué)習(xí)興趣,調(diào)動(dòng)其學(xué)習(xí)的積極性。其次,選題應(yīng)具有實(shí)用性,接近實(shí)際工程的需要,引導(dǎo)學(xué)生根據(jù)需求分析,利用所學(xué)知識去解決與日常生活中密切相關(guān)的問題。再次,選題難易程度要適中。課程設(shè)計(jì)的內(nèi)容基本上能讓大多數(shù)同學(xué)接受,難度過大會(huì)讓學(xué)生產(chǎn)生一種消極,甚至是抵觸的情緒;難度過于簡單也同樣達(dá)不到預(yù)期目標(biāo)。最后,選題范圍要足夠廣泛,讓不同層次水平的學(xué)生都有問題可想,為學(xué)生提供發(fā)揮其創(chuàng)新性思維的平臺;同時(shí),工程大的選題在一定程度上更能鍛煉學(xué)生獨(dú)立思考的能力和團(tuán)隊(duì)協(xié)作能力。對某些課程設(shè)計(jì)提出部分需要改進(jìn)或進(jìn)一步完善的要求,供那些學(xué)有余力的學(xué)生來拓寬自己的設(shè)計(jì)思路,提高自身的解題能力及水平。當(dāng)然,學(xué)生也可以自主設(shè)計(jì)一些有挑戰(zhàn)性的題目。

1.2 課程設(shè)計(jì)的實(shí)施方法

本課程是在保證基礎(chǔ)理論教學(xué)質(zhì)量的前提下,進(jìn)一步加強(qiáng)學(xué)生解決實(shí)際問題的動(dòng)手實(shí)踐能力的培養(yǎng)。根據(jù)課程設(shè)計(jì)的實(shí)際情況,給出一些具有一定規(guī)模的問題,并對課程設(shè)計(jì)內(nèi)容做系統(tǒng)安排,具體實(shí)施過程如下。

1.2.1 分組

以設(shè)計(jì)小組形式,每3~5人組成一組,同一班級自由組合;如需要跨班組合,可向指導(dǎo)教師提出申請。每個(gè)小組選出一名基礎(chǔ)較好且具有一定組織能力的學(xué)生擔(dān)任組長,組長負(fù)責(zé)本小組的選題,系統(tǒng)模塊劃分和任務(wù)安排,使每位小組成員負(fù)責(zé)一部分功能的實(shí)現(xiàn)。

1.2.2 選題與分工

各小組成員共同協(xié)商選擇合適的題目,然后進(jìn)行分工。小組之間也可以相互合作,將各自的系統(tǒng)模塊進(jìn)行整合,以解決更大規(guī)模的問題。指導(dǎo)教師根據(jù)各個(gè)學(xué)生的實(shí)際情況作適當(dāng)調(diào)整,保證工作量的合理分配,以確保各小組設(shè)計(jì)工作的順利進(jìn)行。

1.2.3 定期檢查

定期檢查或抽查每個(gè)學(xué)生的完成情況,了解各個(gè)小組的課程設(shè)計(jì)進(jìn)展;督促學(xué)生積極思考,比如,描述要解決的問題,根據(jù)操作對象選擇相應(yīng)的數(shù)據(jù)結(jié)構(gòu),建立模型,定義抽象數(shù)據(jù)類型,畫出算法流程圖,引導(dǎo)他們鍛煉自己的分析問題和解決問題以及編程實(shí)現(xiàn)的能力。

1.2.4 提交實(shí)驗(yàn)報(bào)告

實(shí)驗(yàn)報(bào)告的正文必須至少包括以下內(nèi)容:

1)問題描述:根據(jù)自己的理解,描述選題要實(shí)現(xiàn)的功能。

2)數(shù)據(jù)結(jié)構(gòu):為處理所需要的功能,自己設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),包括各自完成的有關(guān)數(shù)據(jù)類型,操作的定義,以及存儲結(jié)構(gòu)。

3)算法描述:根據(jù)問題的要求和所設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),描述算法過程。

4)效果與測試情況:給出系統(tǒng)的測試情況與最終效果,可通過截取一些界面用于解釋說明。給出測試數(shù)據(jù)結(jié)構(gòu)的使用手冊,以及完成其他數(shù)據(jù)類型的測試與測試報(bào)告。

5)分析與討論:分析所采用算法的優(yōu)缺點(diǎn),時(shí)間復(fù)雜度,算法實(shí)現(xiàn)過程中遇到問題,所采用的解決方法,自己提出的算法的改進(jìn)方案。本課程設(shè)計(jì)的不足之處,改進(jìn)思路,以及實(shí)驗(yàn)過程體會(huì)。

6)參考資料:文中所引用的參考資料撰寫格式參照國家標(biāo)準(zhǔn)(GB-T 7714-2005)。

7)致謝:感謝在完成本課程設(shè)計(jì)報(bào)告過程中對自己提供幫助的個(gè)人/集體。

8)附錄:附上結(jié)構(gòu)完整的程序,帶有詳細(xì)注釋的源程序清單。

1.3 課程設(shè)計(jì)的評價(jià)標(biāo)準(zhǔn)

課程設(shè)計(jì)完成后,應(yīng)對每位學(xué)生提交的課程設(shè)計(jì)報(bào)告進(jìn)行評價(jià),可分為小組互評和指導(dǎo)教師評價(jià)兩個(gè)過程。

1.3.1 小組互評

小組互評包括自評和組長評價(jià)兩部分。首先,每位組員根據(jù)各自參與程度、完成的工作量、效果在小組內(nèi)自評,自評分值占50%。其次,組長在報(bào)告封面上描述組內(nèi)每位組員的具體工作,并為組內(nèi)各成員打分,組長評分值占50%,同時(shí)規(guī)定:組長100分,排名靠后的組員的成績與前一位組員的成績分?jǐn)?shù)差距為6~10分。課程設(shè)計(jì)采用分組形式的宗旨是鼓勵(lì)合作,但反對掛名。

1.3.2 指導(dǎo)教師評價(jià)

小組互評之后,由指導(dǎo)教師組織學(xué)生進(jìn)行課程設(shè)計(jì)報(bào)告的現(xiàn)場答辯,答辯過程包括:以小組為單位進(jìn)行現(xiàn)場演示,解答教師或其他組的同學(xué)所提出的問題?,F(xiàn)場演示檢查可以提高學(xué)生對課程設(shè)計(jì)方法的理解,鍛煉他們對相關(guān)問題的表達(dá)能力。而在現(xiàn)場提問環(huán)節(jié)中,小組成員可以通過協(xié)商共同解答他人的提問,以此提高學(xué)生的臨場應(yīng)變能力和相互協(xié)作能力。指導(dǎo)教師對課程設(shè)計(jì)報(bào)告要進(jìn)行認(rèn)真的評判,評分時(shí)各部分的分值比例如下:選題難度,包括完成目標(biāo)的難度,占20%;完成質(zhì)量,主要考慮其設(shè)計(jì)方法和實(shí)現(xiàn)技術(shù),占30%;實(shí)驗(yàn)報(bào)告撰寫質(zhì)量,占30%;演示效果,占20%。上述分值比例及評定方法可根據(jù)實(shí)際情況適當(dāng)調(diào)整。

指導(dǎo)教師評價(jià)學(xué)生的設(shè)計(jì)時(shí)采用如下標(biāo)準(zhǔn):

1)若完成的課程設(shè)計(jì)特別優(yōu)秀,且創(chuàng)新性強(qiáng),可給予90分以上,但嚴(yán)格控制90分以上的數(shù)量。

2)若能保證程序完全正確,則可獲得80~84分;如果學(xué)生設(shè)計(jì)算法有自己獨(dú)特的見解,并通過代碼實(shí)現(xiàn),而且具有一定的創(chuàng)新性,則可考慮加分到85~89分。

3)若在設(shè)計(jì)算法和代碼實(shí)現(xiàn)的過程中出現(xiàn)極少的錯(cuò)誤,則應(yīng)給予70~79分。

4)若設(shè)計(jì)錯(cuò)誤不算太多,大部分算法與實(shí)現(xiàn)程序都能通過,則應(yīng)給予60~69分。

5)若程序中有比較多的錯(cuò)誤,不能達(dá)到規(guī)定的要求,則其成績給予不及格。

2 結(jié)論

課程設(shè)計(jì)是讓學(xué)生綜合運(yùn)用所學(xué)知識解決實(shí)際問題的重要教學(xué)實(shí)踐環(huán)節(jié)。如何通過課程設(shè)計(jì)環(huán)節(jié)實(shí)踐,培養(yǎng)學(xué)生分析并解決具有一定規(guī)模的實(shí)際問題的能力,提高數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的教學(xué)效率和效果,是教師一直在不斷研究和探討的問題。筆者根據(jù)自己在教學(xué)中的體會(huì),介紹并探討了對課程設(shè)計(jì)內(nèi)容的選取,組織與實(shí)施,以及評價(jià)標(biāo)準(zhǔn),并將其應(yīng)用到本校數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的實(shí)際教學(xué)中,取得了較好的教學(xué)效果,為同行提供一定的可參考價(jià)值。

參考文獻(xiàn):

[1] 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,2006.

篇3

1 引言

課程設(shè)計(jì)是課堂理論教學(xué)的延伸和補(bǔ)充。作為一門獨(dú)立的課程,它應(yīng)該完成如下基本目標(biāo):應(yīng)能夠完成理論與實(shí)踐的結(jié)合,應(yīng)能夠鍛煉學(xué)生的設(shè)計(jì)創(chuàng)新能力、分析和解決問題的能力。

數(shù)據(jù)結(jié)構(gòu)與算法課程是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)以及相關(guān)專業(yè)的一門專業(yè)基礎(chǔ)課程,同時(shí)它也是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)課程體系中的核心課程之一,它在計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的課程體系,特別是軟件系列課程體系中處于承上啟下、聯(lián)系左右的中心地位。大量的實(shí)踐表明,是否學(xué)好數(shù)據(jù)結(jié)構(gòu)與算法課程對于能否學(xué)好計(jì)算機(jī)本科課程有著相當(dāng)重要的作用,同時(shí)也對后續(xù)的工作和研究有著深遠(yuǎn)的影響。

現(xiàn)今,各大學(xué)的數(shù)據(jù)結(jié)構(gòu)與算法課程和教材的內(nèi)容都主要集中在“基本數(shù)據(jù)結(jié)構(gòu)的闡述和分析、基本數(shù)據(jù)結(jié)構(gòu)的應(yīng)用、典型基本算法的適當(dāng)滲透”這三個(gè)方面。其中,前兩部分是重點(diǎn),并占據(jù)了較多的篇幅,而這些內(nèi)容的教與學(xué)離不開大量的實(shí)踐,所以在數(shù)據(jù)結(jié)構(gòu)與算法課程教學(xué)中經(jīng)常會(huì)有大量的課程實(shí)驗(yàn)作為輔助。

通過進(jìn)一步的深入分析可以看出,上述基本知識的學(xué)習(xí)并不是最終目標(biāo),而是為到達(dá)最終目標(biāo)打下的基礎(chǔ)。顯然,從計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的知識體系可以看出:如圖1所示,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法更深層次的目標(biāo)是能夠針對實(shí)際問題來選擇、擴(kuò)展甚至是設(shè)計(jì)全新的數(shù)據(jù)結(jié)構(gòu),然后設(shè)計(jì)相應(yīng)的存儲結(jié)構(gòu)并加以實(shí)現(xiàn),從而最終完成問題的求解??梢钥闯?,這一過程是一個(gè)融會(huì)貫通的過程,是不能通過課程實(shí)驗(yàn)完成的,也不可能在課堂教學(xué)中就可以建立完整意識的,所以在課程之后需要進(jìn)行課程設(shè)計(jì)。

為此,數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)應(yīng)能達(dá)到如下基本目標(biāo):培養(yǎng)學(xué)生應(yīng)用數(shù)據(jù)結(jié)構(gòu)基本知識來分析問題、解決問題的綜合能力;幫助學(xué)生建立計(jì)算機(jī)問題求解的全局意識,主要是通過認(rèn)識數(shù)據(jù)結(jié)構(gòu)在問題求解中的地位來完成全局認(rèn)識的建立(這一全局認(rèn)識如圖1所示);訓(xùn)練學(xué)生從系統(tǒng)的、規(guī)范的觀點(diǎn)來進(jìn)行計(jì)算機(jī)問題的分析、設(shè)計(jì)、編碼、測試等。

上面分析得出的數(shù)據(jù)結(jié)構(gòu)與算法的課程設(shè)計(jì)目標(biāo)是符合一般的課程設(shè)計(jì)規(guī)律的。但數(shù)據(jù)結(jié)構(gòu)與算法課程具有自身的、明顯區(qū)別于其他課程的地方,再結(jié)合計(jì)算機(jī)專業(yè)的特點(diǎn),就決定了還需要分析并建立適合數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)特點(diǎn)的教學(xué)模式。所以本文在第2節(jié)就數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)和其他課程的課程設(shè)計(jì)進(jìn)行了對比分析,在第3節(jié)提出了一種基于問題驅(qū)動(dòng)的教學(xué)模式,并就其中的關(guān)鍵部分給出了詳細(xì)的描述。

2數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的特點(diǎn)分析

任何事物都是一般性和特殊性的統(tǒng)一,數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)也是一樣的。和許多其他課程的課程設(shè)計(jì)一樣,它有著課程設(shè)計(jì)的共性,也有自身的特性。經(jīng)過和其他課程的課程設(shè)計(jì)的對比,作者認(rèn)為數(shù)據(jù)結(jié)構(gòu)與算法的課程設(shè)計(jì)主要具有如下特殊性。

2.1不具有明顯的整體性

這是由數(shù)據(jù)結(jié)構(gòu)與算法課程本身的特點(diǎn)決定的。由于該課程的核心內(nèi)容主要集中于對各種數(shù)據(jù)結(jié)構(gòu)的認(rèn)識上,雖然各種數(shù)據(jù)結(jié)構(gòu)之間總是存在許多內(nèi)在的聯(lián)系,但總的來說還是自成體系、較為獨(dú)立的。

就這一點(diǎn)而言,數(shù)據(jù)結(jié)構(gòu)與算法課程就和其他許多課程存在不同,也就使得數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)具有相應(yīng)的特點(diǎn)。比如計(jì)算機(jī)組成原理的課程設(shè)計(jì),可以通過做一個(gè)完整的、簡化的計(jì)算機(jī)硬件系統(tǒng)(包括的簡化的存儲器、控制器、運(yùn)算器等部件)來完成課程內(nèi)容的全面訓(xùn)練,并讓學(xué)生建立對計(jì)算機(jī)組成的整體認(rèn)識。機(jī)械原理的課程設(shè)計(jì)可以是一個(gè)簡單的機(jī)械系統(tǒng)的設(shè)計(jì),完成對機(jī)械原理各部分內(nèi)容的綜合訓(xùn)練。而對于數(shù)據(jù)結(jié)構(gòu)與算法的課程設(shè)計(jì)來說,幾乎不可能構(gòu)造一個(gè)題目把所有的數(shù)據(jù)結(jié)構(gòu)都包含進(jìn)去。實(shí)際上這樣做是毫無意義的,因?yàn)閿?shù)據(jù)結(jié)構(gòu)本身就是不斷擴(kuò)展的,在學(xué)習(xí)、掌握基本數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上能夠?qū)χR加以擴(kuò)展并靈活運(yùn)用才是真正重要的。

所以在數(shù)據(jù)結(jié)構(gòu)與算法的課程設(shè)計(jì)中,應(yīng)強(qiáng)調(diào)問題求解能力的培養(yǎng),而不像其他課程的課程設(shè)計(jì)那樣來強(qiáng)調(diào)綜合設(shè)計(jì)能力。

2.2課程內(nèi)容具有很強(qiáng)的可伸縮性

從發(fā)展?fàn)顩r來看,數(shù)據(jù)結(jié)構(gòu)與算法的發(fā)展是極其迅速的,不斷地有新的數(shù)據(jù)結(jié)構(gòu)和新的算法出現(xiàn),而且針對不同的問題,數(shù)據(jù)結(jié)構(gòu)與算法可以做出非常靈活的調(diào)整。在這一點(diǎn)上它和許多其他課程不同,比如操作系統(tǒng)中可能會(huì)不斷出現(xiàn)各種各樣的調(diào)度算法,但都集中在進(jìn)程管理中,并總歸結(jié)于資源管理這一基本框架下,只要馮?諾伊曼體系結(jié)構(gòu)不變,操作系統(tǒng)的資源管理框架就不會(huì)改變。而數(shù)據(jù)結(jié)構(gòu)就不同,如就樹結(jié)構(gòu)而言,二元樹雖然在概念上較為規(guī)整,但在實(shí)際問題中,大多都采用樹結(jié)構(gòu)的變形,如B樹以及其他新型變形等,似乎兩者都可成為教學(xué)的重點(diǎn)。

正是因?yàn)閿?shù)據(jù)結(jié)構(gòu)與算法的可收縮性,培養(yǎng)針對問題的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)能力才是最重要的。

2.3具有極其廣泛的滲透性

計(jì)算機(jī)問題領(lǐng)域包括許多其他行業(yè)的問題,如經(jīng)濟(jì)領(lǐng)域問題,只要涉及到對數(shù)據(jù)的組織與處理,都能或多或少地找到數(shù)據(jù)結(jié)構(gòu)的用武之地,所以培養(yǎng)依托數(shù)據(jù)結(jié)構(gòu)完成各類問題求解的“嗅覺”是十分必要的。

總的來說,基于數(shù)據(jù)結(jié)構(gòu)與算法課程的特點(diǎn),建立起與之相匹配的課程設(shè)計(jì)教學(xué)模式,這樣才能更好地完成教學(xué)。

3基于問題驅(qū)動(dòng)的課程設(shè)計(jì)教學(xué)模式

在以上分析基礎(chǔ)上,如圖2所示,本文提出一種基于問題驅(qū)動(dòng)的課程設(shè)計(jì)教學(xué)模式。

3.1問題來源

數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)的問題來源(即教學(xué)內(nèi)容)主要包括:基本數(shù)據(jù)結(jié)構(gòu)在解決實(shí)際問題中的應(yīng)用;基本的算法策略在解決實(shí)際問題的應(yīng)用;新興數(shù)據(jù)結(jié)構(gòu)的相關(guān)問題;新興算法的相關(guān)問題及實(shí)踐;經(jīng)典問題的經(jīng)典算法;典型系統(tǒng)的計(jì)算機(jī)模擬;需自行設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和算法來解決的實(shí)際問題。

3.2問題描述

在問題的描述上,側(cè)重于用半自然語言進(jìn)行描述。完全的形式化描述將減少問題分析能力的培養(yǎng)力度,完全的自然語言描述有包含太少的啟發(fā)信息。

一般來說,要求問題的描述必須能夠清晰地說明問題的含義和目標(biāo),并就采用的數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)亟o出啟發(fā),其中,也可以設(shè)計(jì)一些題目故意將問題的目標(biāo)隱去,加強(qiáng)對學(xué)生問題定義能力的培養(yǎng)。

3.3問題求解的迭代性

問題求解是不能夠一蹴而就的,一開始設(shè)計(jì)(選?。┑臄?shù)據(jù)結(jié)構(gòu)與算法往往存在這樣或那樣的問題,建立逐步求精、多次迭代的問題求解思維是必要的。

為此,我們需要在學(xué)生的課程設(shè)計(jì)過程中,鼓勵(lì)學(xué)生對其解決方案進(jìn)行理論分析和實(shí)驗(yàn)分析,鼓勵(lì)學(xué)生大膽提出優(yōu)化方案,鼓勵(lì)其積極主動(dòng)的創(chuàng)新意識。

3.4結(jié)論形成

最終的結(jié)論(體現(xiàn)為課程設(shè)計(jì)報(bào)告)應(yīng)以數(shù)據(jù)結(jié)構(gòu)的描述為核心,并集中體現(xiàn)如何針對問題來完成數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)與優(yōu)化。

其中,數(shù)據(jù)結(jié)構(gòu)的描述應(yīng)以抽象數(shù)據(jù)型(ADT)為基本手段,并在抽象數(shù)據(jù)型的基礎(chǔ)上,引導(dǎo)學(xué)生深刻理解和掌握數(shù)據(jù)的邏輯結(jié)構(gòu)、性質(zhì)、特點(diǎn)、基本操作和存儲結(jié)構(gòu)的特點(diǎn)、實(shí)現(xiàn)和優(yōu)化,并引導(dǎo)學(xué)生在實(shí)際應(yīng)用中有意識地去為實(shí)際問題選擇恰當(dāng)?shù)拇鎯Ρ硎尽?/p>

結(jié)果分析應(yīng)采用理論分析和實(shí)驗(yàn)分析并重的方式,應(yīng)適當(dāng)加大實(shí)驗(yàn)分析的力度,使得學(xué)生能在分析結(jié)果的基礎(chǔ)上形成總結(jié)并產(chǎn)生啟發(fā),最終能形成問題求解過程的全局意識。

3.5結(jié)果考核

鼓勵(lì)學(xué)生選擇需要設(shè)計(jì)新型數(shù)據(jù)結(jié)構(gòu)(至少需要對已有數(shù)據(jù)結(jié)構(gòu)作出修正)的題目,而不僅僅是實(shí)現(xiàn)一個(gè)定義明確的數(shù)據(jù)結(jié)構(gòu);鼓勵(lì)優(yōu)化方案的提出、分析和驗(yàn)證;鼓勵(lì)學(xué)生擴(kuò)展知識體系,并建立問題求解的修養(yǎng);鼓勵(lì)創(chuàng)新意識和主動(dòng)學(xué)習(xí)意識的培養(yǎng)。

4 結(jié)束語

針對數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)的一般性和特殊性分析,本文在提出該課程設(shè)計(jì)的基本要求后,更提出了適合于數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)的“以問題求解為核心”的教學(xué)模式。近年來,經(jīng)過對計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)本科生的多次實(shí)踐,可以看出,這一模式可以取得很好的教學(xué)效果。

參考文獻(xiàn)

1 耿蕊,李敬有,鄧文新.關(guān)于計(jì)算機(jī)基礎(chǔ)課課程設(shè)計(jì)的研究.高師理科學(xué)刊,2005,5

篇4

1.《數(shù)據(jù)結(jié)構(gòu)》課程授課現(xiàn)狀

《數(shù)據(jù)結(jié)構(gòu)》課程是計(jì)算機(jī)及其相關(guān)專業(yè)的核心基礎(chǔ)課程,是一門理論與實(shí)踐相結(jié)合的課程,在整個(gè)計(jì)算機(jī)專業(yè)教學(xué)體系中處于舉足輕重的地位,特別在軟件方向的課程體系中處于承上啟下的中心地位。長期以來,《數(shù)據(jù)結(jié)構(gòu)》課程的教學(xué)備受相關(guān)學(xué)院領(lǐng)導(dǎo)高度重視,然而,大部分高?!稊?shù)據(jù)結(jié)構(gòu)》課程的教學(xué)效果都不盡如人意,影響教學(xué)效果的原因大致如下:

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

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

2.項(xiàng)目驅(qū)動(dòng)教學(xué)法在《數(shù)據(jù)結(jié)構(gòu)》課程中的應(yīng)用分析

項(xiàng)目驅(qū)動(dòng)教學(xué)法是以學(xué)生為主體,以項(xiàng)目知識為主線,教師參與引導(dǎo)的教學(xué)方法,它不再是“教師講,學(xué)生聽”的被動(dòng)教學(xué)模式[1]。該教學(xué)方法的主要目的是讓學(xué)生真正的參與到課堂中來,培養(yǎng)他們主動(dòng)思考問題和創(chuàng)新的能力,特別適合于像《數(shù)據(jù)結(jié)構(gòu)》這種內(nèi)容延伸性強(qiáng)、抽象思維要求特別高的課程。

2.1 項(xiàng)目驅(qū)動(dòng)教學(xué)法的特點(diǎn)

項(xiàng)目驅(qū)動(dòng)不同于簡單的任務(wù)驅(qū)動(dòng),它更側(cè)重于培養(yǎng)學(xué)生解決未遇到的關(guān)鍵問題的能力,在教學(xué)過程中表現(xiàn)為以項(xiàng)目為本位、以學(xué)生為主體的重要特征,要求教師設(shè)計(jì)的項(xiàng)目要具有一定的應(yīng)用價(jià)值,并且最好與企業(yè)實(shí)際生產(chǎn)過程或具體問題有直接的關(guān)系。項(xiàng)目教學(xué)法的特點(diǎn)如下:

(1)具有實(shí)踐性:項(xiàng)目的主體與現(xiàn)實(shí)世界密切相連,學(xué)生的學(xué)習(xí)內(nèi)容更加的具有針對性和實(shí)用性。

(2)具有自主性:學(xué)生自由、自主的分組進(jìn)行學(xué)習(xí),根據(jù)自己的理解發(fā)揮想象力,從而促進(jìn)學(xué)生創(chuàng)造能力的發(fā)展。

(3)具有發(fā)展性:長期項(xiàng)目與階段項(xiàng)目相結(jié)合,構(gòu)成為實(shí)現(xiàn)教育目標(biāo)的認(rèn)知過程。

(4)具有綜合性:項(xiàng)目的設(shè)計(jì)本身需要綜合多個(gè)學(xué)科,所以培養(yǎng)了學(xué)生綜合運(yùn)用知識的能力。

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

2.2 師生角色的相互轉(zhuǎn)變

項(xiàng)目驅(qū)動(dòng)教學(xué)方法要求每位學(xué)生均要真正的參與課堂中來,在老師的引導(dǎo)下,發(fā)揮想象、參與研究、參與創(chuàng)造。因此,項(xiàng)目驅(qū)動(dòng)教學(xué)法較以往的傳統(tǒng)教學(xué)實(shí)現(xiàn)了兩個(gè)打破:

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

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

2.3 項(xiàng)目驅(qū)動(dòng)下的《數(shù)據(jù)結(jié)構(gòu)》課程劃分

以《數(shù)據(jù)結(jié)構(gòu)》課程的教學(xué)為例,在采用了項(xiàng)目驅(qū)動(dòng)教學(xué)法后,我們將課程的知識點(diǎn)劃分成了10個(gè)項(xiàng)目:

表1 《數(shù)據(jù)結(jié)構(gòu)》課程項(xiàng)目示例表

項(xiàng)目名稱 相關(guān)知識點(diǎn) 參考課時(shí)

通訊錄信息管理系統(tǒng) 線性表、查找、排序 6

某高校學(xué)生成績管理系統(tǒng) 線性表、串、查找、排序 6

婚姻的穩(wěn)定性情況調(diào)查 數(shù)組、棧 8

理發(fā)館的經(jīng)營狀況分析 線性表、隊(duì)列 6

十進(jìn)制四則運(yùn)算器設(shè)計(jì) 棧、樹結(jié)構(gòu)、浮點(diǎn)數(shù)運(yùn)算 8

汽車零部件的庫存模型設(shè)計(jì) 廣義表、查找、排序 8

因特網(wǎng)域名查詢系統(tǒng) 樹結(jié)構(gòu)、查找 6

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

管道鋪設(shè)施工方案設(shè)計(jì)和選擇 圖結(jié)構(gòu) 8

文章系統(tǒng)設(shè)計(jì) 文件、查找、排序 10

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

3.具體項(xiàng)目實(shí)施過程

下面以“通訊錄信息管理系統(tǒng)”為例,闡述在《數(shù)據(jù)結(jié)構(gòu)》課程中實(shí)施項(xiàng)目驅(qū)動(dòng)教學(xué)法的過程。

3.1 項(xiàng)目名稱:通訊錄管理系統(tǒng)。

3.2 培養(yǎng)目標(biāo):第一,使學(xué)生掌握線性結(jié)構(gòu)的特點(diǎn)、線性結(jié)構(gòu)的表現(xiàn)形式。第二,使學(xué)生領(lǐng)會(huì)數(shù)據(jù)在計(jì)算機(jī)中存儲的概念,并掌握兩種重要的存儲形式。第三,掌(下轉(zhuǎn)第179頁)(上接第171頁)握線性表和鏈表的區(qū)別,能夠根據(jù)實(shí)際情況選擇不同的存儲結(jié)構(gòu)。第四,能夠?qū)?shí)施的算法進(jìn)行性能評價(jià)。

3.3 項(xiàng)目預(yù)備知識:C語言編程基礎(chǔ)、線性表的定義、線性表的存儲結(jié)構(gòu)、線性表的創(chuàng)建、線性表中元素的查找、插入、刪除、修改等操作。

3.4 項(xiàng)目延伸知識:線性表中元素的排列(按照某種規(guī)則進(jìn)行排序)。

3.5 項(xiàng)目的功能描述:該系統(tǒng)是普通的電話通訊錄管理系統(tǒng),要求實(shí)現(xiàn)能夠根據(jù)姓名或者電話號碼查詢一個(gè)用戶,能夠?qū)崿F(xiàn)對新用戶的添加操作和刪除一個(gè)用戶,能夠統(tǒng)計(jì)出該通訊錄中的用戶總數(shù)。比如:用戶有一個(gè)電話號碼,但不知道此電話號碼是誰的,則需要輸入號碼來查詢該號碼是不是此通訊錄中已記錄的人的號碼,若是可以輸出該號碼及姓名,若不是可以輸出“無記錄”。同學(xué)們在此基礎(chǔ)上發(fā)揮想象力,結(jié)合實(shí)際可以擴(kuò)展更多的功能。

3.6 項(xiàng)目實(shí)施步驟:

(1)根據(jù)學(xué)生的特長進(jìn)行團(tuán)隊(duì)劃分。按照一個(gè)班級35人的標(biāo)準(zhǔn),我們將學(xué)生分成5-6個(gè)團(tuán)隊(duì),每個(gè)團(tuán)隊(duì)在5-6人,然后推薦一名隊(duì)長。

(2)教師開始下發(fā)項(xiàng)目書,要求每一個(gè)團(tuán)隊(duì)根據(jù)項(xiàng)目書撰寫項(xiàng)目的可行性報(bào)告,每個(gè)團(tuán)隊(duì)以文字的形式上交一份報(bào)告,在此期間至少要保證每個(gè)團(tuán)隊(duì)的隊(duì)長明白項(xiàng)目的完成目標(biāo),然后由隊(duì)長寫出項(xiàng)目過程的具體劃分和階段性成果。

(3)教師要不間斷的引導(dǎo),當(dāng)完成項(xiàng)目的可行性報(bào)告之后,每個(gè)團(tuán)隊(duì)就開始查找資料和相互討論,教師在旁邊起到一個(gè)引導(dǎo)和監(jiān)督的作用,對于學(xué)生普遍問及的問題可以進(jìn)行統(tǒng)一解答。教師有目的的講課,學(xué)生有目的的聽課,所以實(shí)現(xiàn)了共贏的局面。

(4)教師總結(jié)階段,每個(gè)項(xiàng)目完成之前,教師要對各個(gè)團(tuán)隊(duì)的成果進(jìn)行演示和評價(jià),指出每個(gè)團(tuán)隊(duì)的不足之處。

(5)學(xué)生整改階段,學(xué)生根據(jù)教師的評價(jià),完善自己的不足,然后形成階段性課程設(shè)計(jì)報(bào)告。

4.《數(shù)據(jù)結(jié)構(gòu)》課程的考核形式及評價(jià)

《數(shù)據(jù)結(jié)構(gòu)》課程不同于其他的專業(yè)課,該課程中所設(shè)計(jì)到的算法和思想具有可收縮性,它應(yīng)強(qiáng)調(diào)對于問題求解能力的培養(yǎng),我們需要在學(xué)生的課程設(shè)計(jì)過程中,鼓勵(lì)學(xué)生對其解決問題的方案進(jìn)行理論分析和實(shí)驗(yàn)分析,鼓勵(lì)學(xué)生積極主動(dòng)的創(chuàng)新并大膽提出優(yōu)化設(shè)計(jì)方案。對于該課程的考核形式是讓學(xué)生根據(jù)自己平時(shí)的課程項(xiàng)目,將項(xiàng)目整理成課程設(shè)計(jì)報(bào)告,最終上交紙質(zhì)的課程設(shè)計(jì)報(bào)告書,然后教師對報(bào)告進(jìn)行評價(jià)。

考慮到《數(shù)據(jù)結(jié)構(gòu)》這類課程一直以來是計(jì)算機(jī)相關(guān)專業(yè)學(xué)生學(xué)歷層次提升考試的重要專業(yè)課,在進(jìn)行課程考核的時(shí)候,有些學(xué)校除了讓學(xué)生形成最終的課程設(shè)計(jì)報(bào)告書之外,還讓學(xué)生參加一次筆試考試,以了解學(xué)生對于基礎(chǔ)知識的掌握水平。

采用了項(xiàng)目驅(qū)動(dòng)+課程設(shè)計(jì)的教學(xué)模式以后,學(xué)生普遍反映對數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)非常感興趣,老師們則感覺采用這種方式以后,學(xué)生的學(xué)習(xí)積極性提高了,但是同時(shí)老師們的教學(xué)壓力也變得大了,因?yàn)樵黾恿死蠋煖?zhǔn)備課堂的負(fù)擔(dān),但是總體感覺是利大于弊的。

5.實(shí)施項(xiàng)目教學(xué)法的總結(jié)與展望

通過《數(shù)據(jù)結(jié)構(gòu)》教學(xué)中實(shí)施項(xiàng)目驅(qū)動(dòng)教學(xué)法,我體會(huì)到項(xiàng)目教學(xué)在專業(yè)基礎(chǔ)課中實(shí)施的必要性,當(dāng)然該教學(xué)方法也不是萬能的,它不是適合于所有的課程,通常來講:這種教學(xué)方法比較適合實(shí)踐操作性強(qiáng),學(xué)科比較綜合的課程,同時(shí),我有如下幾點(diǎn)體會(huì):

(1)項(xiàng)目教學(xué)法重要的是項(xiàng)目的設(shè)計(jì),它可能直接影響教學(xué)的效果。在進(jìn)行項(xiàng)目設(shè)計(jì)時(shí),我們需要考慮學(xué)生對項(xiàng)目的理解、項(xiàng)目包括的知識點(diǎn)的范圍、課程的前驅(qū)后繼關(guān)系等,否則,我們設(shè)計(jì)的項(xiàng)目將是沒有意義的。

篇5

《數(shù)據(jù)結(jié)構(gòu)》課程是高職計(jì)算機(jī)專業(yè)重要的專業(yè)基礎(chǔ)課。該課程通過學(xué)習(xí)程序設(shè)計(jì)中常用的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),介紹一些重要的程序設(shè)計(jì)思想,提高學(xué)生的邏輯思維能力和編程技能,培養(yǎng)學(xué)生的分析問題、建模與解決問題能力。同時(shí),該課程的學(xué)習(xí)內(nèi)容能夠促進(jìn)學(xué)生對后繼課程的學(xué)習(xí)內(nèi)容的理解。例如,高級編程語言C#或Java中有一些庫函數(shù)實(shí)現(xiàn)了對集合元素排序的功能。而這些功能正是以數(shù)據(jù)結(jié)構(gòu)課中介紹的排序算法為基礎(chǔ)的。

根據(jù)我們多年的教學(xué)經(jīng)驗(yàn),在高職計(jì)算機(jī)專業(yè)的課程體系中,數(shù)據(jù)結(jié)構(gòu)普遍被學(xué)生認(rèn)為是比較困難的一門課程。造成困難的原因大致有以下幾個(gè)。首先,由于高職計(jì)算機(jī)專業(yè)學(xué)生就業(yè)的特點(diǎn),決定了高職學(xué)生很少從事基礎(chǔ)和底層程序設(shè)計(jì),或者從事與數(shù)據(jù)結(jié)構(gòu)以及程序設(shè)計(jì)相關(guān)的理論研究。因此,數(shù)據(jù)結(jié)構(gòu)課的學(xué)習(xí)內(nèi)容在工作中直接應(yīng)用的機(jī)會(huì)很少。這導(dǎo)致部分學(xué)生甚至教師對學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課的必要性存在疑惑,對該課程重視程度不足。其次,數(shù)據(jù)結(jié)構(gòu)課的概念和算法抽象,理論性強(qiáng),對學(xué)生邏輯思維能力要求高,學(xué)習(xí)的門檻較高。最后,高職學(xué)院學(xué)制較短,導(dǎo)致一學(xué)期內(nèi)的專業(yè)課程密度高,學(xué)生學(xué)習(xí)時(shí)間不足。

現(xiàn)有的高職教材或本科應(yīng)用型教材例如參考文獻(xiàn)[1-4]的內(nèi)容編排,多沿襲自傳統(tǒng)本科數(shù)據(jù)結(jié)構(gòu)課。一般依線性結(jié)構(gòu),樹結(jié)構(gòu)和圖結(jié)構(gòu)的順序編排,逐次介紹各種數(shù)據(jù)結(jié)構(gòu),給出其定義,詳細(xì)介紹其物理存儲結(jié)構(gòu)和基本性質(zhì),并穿插其應(yīng)用的一些例子。其覆蓋的知識面廣,內(nèi)容和體系較為完整,條理清晰。但是由于高職計(jì)算機(jī)專業(yè)數(shù)據(jù)結(jié)構(gòu)課程學(xué)時(shí)較少,其專業(yè)學(xué)習(xí)的實(shí)踐性強(qiáng),學(xué)生邏輯思維能力稍弱等特點(diǎn),這種沿襲自本科教學(xué)的授課內(nèi)容組織方式不完全適合高職學(xué)生。雖然針對課時(shí)偏少的情況,一般高職課本會(huì)對本科課本作一些刪減或簡化,但其內(nèi)容構(gòu)成仍沒有本質(zhì)上的改變。因此,課程內(nèi)容的選擇、組織與編排增加了高職學(xué)生學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課的難度,而未能解決上述造成困難的幾個(gè)問題。

我們認(rèn)為,數(shù)據(jù)結(jié)構(gòu)課程能夠訓(xùn)練學(xué)生的邏輯思維能力,促進(jìn)學(xué)生深入理解與專業(yè)相關(guān)的基本編程思想,且其內(nèi)容與多門后繼專業(yè)課程相關(guān),因此對計(jì)算機(jī)專業(yè)的學(xué)生而言,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課的必要性毋庸置疑。而針對高職教育學(xué)時(shí)少,實(shí)踐性強(qiáng)的特點(diǎn),對課程大綱、課程標(biāo)準(zhǔn)、教學(xué)內(nèi)容和教學(xué)方式進(jìn)行改革,使得高職學(xué)生能夠更好地學(xué)習(xí)該門課程,改進(jìn)學(xué)習(xí)體驗(yàn),改善學(xué)習(xí)效果,則勢在必行。數(shù)據(jù)結(jié)構(gòu)課的改革,結(jié)合當(dāng)前高職教育改革的方向,在課程設(shè)計(jì)方面應(yīng)該以突出能力培養(yǎng),以項(xiàng)目為載體,以任務(wù)訓(xùn)練崗位職業(yè)能力,以及知識理論實(shí)踐一體化為原則[5-6]。

本文總結(jié)了我們在高職計(jì)算機(jī)專業(yè)數(shù)據(jù)結(jié)構(gòu)課上進(jìn)行的教學(xué)設(shè)計(jì)改革。我們在課程中引入任務(wù)驅(qū)動(dòng)教學(xué)方式,設(shè)計(jì)若干項(xiàng)目供學(xué)生在課堂上練習(xí),以項(xiàng)目覆蓋課程的各知識點(diǎn),通過項(xiàng)目引入相關(guān)的概念,并作講解。在課堂教學(xué)方式上,以解決問題,完成項(xiàng)目代替抽象的理論教學(xué)。由于避免了繁瑣的基本概念講解,縮短了理論教學(xué)用時(shí),學(xué)生能夠投入更多的時(shí)間與精力到編程實(shí)踐練習(xí)。而通過練習(xí),能夠更好地理解抽象的概念。我們的課程改革,應(yīng)用于計(jì)算機(jī)應(yīng)用專業(yè)兩屆學(xué)生的教學(xué)實(shí)踐中,取得了良好的效果。

2 教學(xué)項(xiàng)目設(shè)計(jì)實(shí)例

數(shù)據(jù)結(jié)構(gòu)課程的主要內(nèi)容大致可以分為三部分,即線性結(jié)構(gòu)、樹結(jié)構(gòu)和圖結(jié)構(gòu)。其中,線性結(jié)構(gòu)包含了幾種重要的數(shù)據(jù)結(jié)構(gòu),如棧、隊(duì)列、數(shù)組和串等。樹結(jié)構(gòu)的內(nèi)容一般以最常用的二叉樹結(jié)構(gòu)為主。圖結(jié)構(gòu)是最為復(fù)雜的結(jié)構(gòu),涉及算法的內(nèi)容比較多,如圖的最短路徑算法,圖的最小生成樹算法和圖的連通分支算法等。除此以外,課程還包括查找和排序算法等重要內(nèi)容,這兩類算法同時(shí)涉及線性結(jié)構(gòu)和樹結(jié)構(gòu)。通常還會(huì)介紹遞歸、指針等重要的編程思想和內(nèi)容。

我們的教學(xué)項(xiàng)目設(shè)計(jì)思路,是選取相對簡單而具有代表性的算法題目,結(jié)合一些應(yīng)用的背景,構(gòu)成我們的項(xiàng)目,內(nèi)容力求覆蓋基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),如線性結(jié)構(gòu)、隊(duì)列、棧和二叉樹等。學(xué)生通過完成項(xiàng)目中的一個(gè)個(gè)任務(wù)來學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的抽象概念。有些方向內(nèi)容豐富,我們從中選取少量相對簡單,然而具備代表性的例子作為任務(wù),使得學(xué)生更易上手,盡快建立對一些抽象概念的認(rèn)知。例如查找和排序操作既可以在線性結(jié)構(gòu)上,也可以在樹結(jié)構(gòu)上進(jìn)行。但我們不考慮樹結(jié)構(gòu),僅僅以線性結(jié)構(gòu)上的問題組成我們項(xiàng)目。又如從圖結(jié)構(gòu)的多個(gè)算法求解問題中,我們選取容易理解的連通分支求解算法作為教學(xué)項(xiàng)目。

作者從事高職計(jì)算機(jī)應(yīng)用專業(yè)的數(shù)據(jù)結(jié)構(gòu)課教學(xué)。該課程的學(xué)時(shí)大約為4學(xué)時(shí)×16周,一般在一年級第二學(xué)期開設(shè)。根據(jù)課時(shí)和學(xué)生的具體情況,我們在一學(xué)期的課程中為學(xué)生設(shè)計(jì)三至四個(gè)項(xiàng)目,并主要以學(xué)生完成項(xiàng)目的情況作為學(xué)期總評的依據(jù)。以下以我們?yōu)?014級學(xué)生設(shè)計(jì)的項(xiàng)目為例,對課程教學(xué)項(xiàng)目設(shè)計(jì)作一個(gè)詳細(xì)介紹。

我們一共設(shè)計(jì)了四個(gè)項(xiàng)目,具體如下。

迷宮:以一個(gè)n×m的{0,1}-矩陣表示一個(gè)迷宮。其中,0表示可以通行,1表示有障礙,左上角和右下角均為0,分別表示入口與出口。編寫程序判斷此迷宮是否存在一條從入口到出口的路徑,如存在則輸出該路徑。

二叉樹的構(gòu)造和遍歷:對教師以繪圖形式給定的一棵二叉樹,編寫程序構(gòu)造該二叉樹并輸出該二叉樹的前序、中序和后序遍歷的結(jié)果??梢越Y(jié)合一個(gè)具體應(yīng)用進(jìn)行教學(xué)。例如,可采用二叉樹的一個(gè)典型應(yīng)用,即表達(dá)式的幾種表示法。教師輸入一個(gè)表達(dá)式,學(xué)生根據(jù)其建立一個(gè)二叉樹,并通過三種遍歷方式輸出表達(dá)式的波蘭表示法,逆波蘭表示法和中綴表示法。

(1) 查找和排序:對教師給定的一個(gè)有序整數(shù)序列,編寫程序接收用戶輸入的一個(gè)整數(shù),使用二分查找法在序列中查找該整數(shù)。對教師給定的一個(gè)無序的整數(shù)集合,使用插入排序、冒泡排序和選擇排序中的至少兩種為該集合排序。此問題的一個(gè)典型的應(yīng)用情景是學(xué)生的考試分?jǐn)?shù)排序。

(2) 圖的連通分支:某班級有n位同學(xué)?,F(xiàn)組織外出旅游,并擬將全班同學(xué)分成若干小組集體行動(dòng)?,F(xiàn)在給定一個(gè)圖表示本班同學(xué)之間的朋友關(guān)系。其中以結(jié)點(diǎn)表示同學(xué),且若兩位同學(xué)為朋友關(guān)系,則對應(yīng)的兩個(gè)結(jié)點(diǎn)以邊連接。請根據(jù)朋友關(guān)系將全班同學(xué)分成若干個(gè)小組,使得有朋友關(guān)系的兩位同學(xué)在都同一個(gè)小組中。此題目等價(jià)于求朋友關(guān)系拓?fù)鋱D的最大連通分支。

可以看到,這四個(gè)項(xiàng)目均具有豐富的理論意義和具體的應(yīng)用背景。它們覆蓋了現(xiàn)有數(shù)據(jù)結(jié)構(gòu)課本的大部分知識點(diǎn)。表1中列出了數(shù)據(jù)結(jié)構(gòu)課的大部分知識點(diǎn)以及它們被各個(gè)項(xiàng)目覆蓋的情況。課程中常見的數(shù)據(jù)結(jié)構(gòu),除了串以外,大部分為我們設(shè)計(jì)的項(xiàng)目所覆蓋。同時(shí)我們的項(xiàng)目還覆蓋了遞歸,指針,廣度優(yōu)先搜索和深度優(yōu)先搜索等重要的程序設(shè)計(jì)思想。

為了引導(dǎo)學(xué)生分步完成練習(xí),我們還為比較困難的項(xiàng)目設(shè)定預(yù)備任務(wù)。預(yù)備任務(wù)不同于一般的習(xí)題。它們有一定的獨(dú)立性,可以提出來作為一個(gè)習(xí)題,但是又與我們的項(xiàng)目有機(jī)地結(jié)合在一起,可以認(rèn)為是相關(guān)項(xiàng)目的一項(xiàng)任務(wù)。

對于迷宮問題,我們設(shè)定以下兩個(gè)預(yù)備任務(wù)。

(1.1)寫一個(gè)棧結(jié)構(gòu)處理程序。每一個(gè)棧元素是含有3個(gè)整數(shù)(這里規(guī)定棧元素由3個(gè)整數(shù)組成,是為了迷宮項(xiàng)目做準(zhǔn)備,見下文)的一個(gè)結(jié)構(gòu)體。寫出棧的初始化,入棧,出棧和判斷??盏牟僮?。在main函數(shù)里面建立一個(gè)這樣的棧,測試它。比如說,入棧若干個(gè)元素,例如 (1,1,0) 和 (2,2,0) ,然后出棧,并依照出棧順序打印這些元素。

(1.2)圍障。給定一個(gè)以n×m矩陣表示的迷宮,用全一把原迷宮包圍起來,創(chuàng)建出一個(gè)新的 (n+2)×(m+2) 迷宮。打印出新的迷宮。

迷宮問題采用棧結(jié)構(gòu)存儲回溯的結(jié)點(diǎn),每一個(gè)棧元素存儲迷宮內(nèi)一個(gè)結(jié)點(diǎn)的x、y坐標(biāo)和回到該結(jié)點(diǎn)以后下一個(gè)可以探索的方向,共3個(gè)整數(shù)。第一個(gè)任務(wù)棧處理程序既是一個(gè)線性表的練習(xí),也為迷宮問題準(zhǔn)備好要使用的棧。我們允許迷宮第一行、最后一行、第一列和最后一列除了出、入口以外,還有其他0元素。但是這些0元素實(shí)際上不是在所有的方向上都可以通行。在第二個(gè)任務(wù)中,我們在迷宮四邊添加全1,稱之為圍障,圍障能夠使得迷宮求解程序中的一些條件判斷大為簡化。該任務(wù)可以看成一個(gè)矩陣練習(xí),并為我們即將探索的迷宮作了初始化。

對于圖的連通分支問題,我們也設(shè)定了兩個(gè)預(yù)備任務(wù)。

(4.1)圖的表示。用矩陣表示教師用繪制方式給定的圖,并在屏幕上打印出圖的結(jié)點(diǎn)和邊。具體內(nèi)容包括定義和初始化一個(gè)矩陣,表示一個(gè)圖,輸出圖的結(jié)點(diǎn)列表和圖的邊的列表。其中,圖的結(jié)點(diǎn)以數(shù)字0,…,n-1 編號,圖的每一條邊以 (x,y) 的形式表示,x和y是邊的兩個(gè)端點(diǎn)的編號。

(4.2)隊(duì)列的操作。編程實(shí)現(xiàn)一個(gè)整數(shù)隊(duì)列的初始化,入隊(duì)和出隊(duì)的操作。程序里面定義和初始化一個(gè)整數(shù)隊(duì)列;然后入隊(duì)至少三個(gè)元素,按順序打印出隊(duì)列里面的所有元素;再出隊(duì)至少兩個(gè)元素,又按順序打印出隊(duì)列里面的所有元素。

第一個(gè)練習(xí)非?;?。它完成圖在程序中的表示,學(xué)生學(xué)會(huì)把一個(gè)圖轉(zhuǎn)換為一個(gè)矩陣,同時(shí)從矩陣中讀取出圖的頂點(diǎn)和邊。第二個(gè)練習(xí)是為了對圖作廣度優(yōu)先遍歷時(shí)使用隊(duì)列結(jié)構(gòu)作準(zhǔn)備,同時(shí)也是一個(gè)線性表的練習(xí)。

3 教學(xué)內(nèi)容的組織與課堂教學(xué)實(shí)踐

依授課時(shí)間順序,我們的教學(xué)內(nèi)容組織為

一、線性結(jié)構(gòu);

二、預(yù)備任務(wù)(1.1)和(4.2):隊(duì)列和棧;

三、項(xiàng)目(1)迷宮問題,包括預(yù)備任務(wù)(1.2);

四、樹結(jié)構(gòu);

五、項(xiàng)目(2)二叉樹遍歷;

六、項(xiàng)目(3)查找和排序;

七、圖結(jié)構(gòu);

八、項(xiàng)目(4)圖的連通分支,包括預(yù)備任務(wù)(4.1)。

教學(xué)內(nèi)容的組織以線性結(jié)構(gòu)、樹結(jié)構(gòu)到圖結(jié)構(gòu)為主線索。

在線性結(jié)構(gòu)部分,對線性表的基本概念作一些介紹后,我們布置預(yù)備任務(wù)(1.1)和(4.2),通過這兩個(gè)練習(xí)介紹棧和隊(duì)列的概念。同時(shí),向?qū)W生介紹項(xiàng)目(1)迷宮問題和項(xiàng)目(4)圖的連通分支,并說明預(yù)備任務(wù)(1.1)和(4.2)跟這兩個(gè)項(xiàng)目的關(guān)系。在完成了預(yù)備任務(wù)(1.1)和(4.2)以后,布置項(xiàng)目(1)迷宮問題。迷宮求解問題的講解,重點(diǎn)要解釋清楚深度優(yōu)先搜索的思想。

接下來是樹結(jié)構(gòu)的內(nèi)容。我們介紹樹結(jié)構(gòu)相關(guān)的一些概念和重要性質(zhì)。然后布置項(xiàng)目(2)二叉樹遍歷。二叉樹遍歷有先序、中序和后序三種方式。除了樹結(jié)構(gòu)內(nèi)容,我們以遞歸方式實(shí)現(xiàn)二叉樹遍歷程序,通過這個(gè)項(xiàng)目向?qū)W生介紹遞歸思想。所以,此項(xiàng)目教學(xué)的重點(diǎn)之一是講解遞歸的原理。教師可實(shí)現(xiàn)其中一種遍歷方式作為例子,而讓學(xué)生完成其他形式的遍歷。如前所述,為了幫助學(xué)生更好理解二叉樹的思想,可結(jié)合二叉樹的典型應(yīng)用,即表達(dá)式的三種不同表示方法來講解。

隨后的內(nèi)容是線性表的查找和排序。完成項(xiàng)目(3)查找和排序方法。其中,查找算法以線性表的二分查找為例,講解的時(shí)候我們與順序查找作對比。二分查找必須應(yīng)用于有序數(shù)組,而對于無序的數(shù)據(jù)則只能采用順序查找,這說明了數(shù)據(jù)結(jié)構(gòu)對算法設(shè)計(jì)的影響。

排序算法種類繁多([7]),其中部分高效算法的時(shí)間復(fù)雜度能夠達(dá)到O(nlogn)。但是這些算法對學(xué)生而言有相當(dāng)難度,我們僅選取時(shí)間復(fù)雜度達(dá)到O(n2),而實(shí)現(xiàn)思路相對簡單的幾種算法作為項(xiàng)目的內(nèi)容,教師可以在課堂上部分或全部實(shí)現(xiàn)要求的排序算法,然后讓學(xué)生再重新自行完成。

最后是圖結(jié)構(gòu)部分。我們首先介紹一些和圖相關(guān)的概念和基本性質(zhì)。然后以(4)求圖的連通分支為教學(xué)項(xiàng)目。項(xiàng)目(4)直接以一個(gè)實(shí)際問題的形式提出,揭示出圖算法的強(qiáng)烈應(yīng)用背景。在求解算法中,我們要求學(xué)生掌握使用廣度優(yōu)先搜索來訪問圖的結(jié)點(diǎn)。廣度優(yōu)先搜索的實(shí)現(xiàn)需要以隊(duì)列作為待搜索結(jié)點(diǎn)的存儲結(jié)構(gòu)。因此,項(xiàng)目又結(jié)合隊(duì)列的設(shè)計(jì)、實(shí)現(xiàn)與應(yīng)用進(jìn)行。有助于對理解線性表的相關(guān)知識,掌握其應(yīng)用。

篇6

摘要:針對計(jì)算機(jī)類本科專業(yè)數(shù)據(jù)結(jié)構(gòu)課程與Java面向?qū)ο蟪绦蛟O(shè)計(jì)課程之間的銜接問題,分析數(shù)據(jù)結(jié)構(gòu)中集合、線性表、樹和圖等知識點(diǎn)與Java Collections框架之間的映射關(guān)系,提出按照數(shù)據(jù)結(jié)構(gòu)中學(xué)生建立的知識體系組織Collections框架的教學(xué),說明面向數(shù)據(jù)結(jié)構(gòu)知識體系的Java課程教學(xué)實(shí)施方法。

關(guān)鍵詞 :數(shù)據(jù)結(jié)構(gòu);Java;Collections框架;課程銜接

文章編號:1672-5913(2015)15-0082-03

中圖分類號:G642

基金項(xiàng)目:河北省精品課程建設(shè)項(xiàng)目“數(shù)據(jù)結(jié)構(gòu)”。

作者簡介:董東,男,副教授,研究方向?yàn)閿?shù)據(jù)挖掘及應(yīng)用,dongdong@hebtu.edu.cn。

0 引 言

數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)類本科專業(yè)核心課程之一,其后繼課Java面向?qū)ο蟪绦蛟O(shè)計(jì)也是重要的專業(yè)課程之一。通過對數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí),學(xué)生初步掌握了為實(shí)現(xiàn)問題求解所需要的基本邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和常見的算法。Java面向?qū)ο蟪绦蛟O(shè)計(jì)則從面向?qū)ο蟪绦蛟O(shè)計(jì)的范式出發(fā),試圖使學(xué)生理解如何通過對象以及對象間的通信實(shí)現(xiàn)問題求解。在Java教學(xué)實(shí)踐中,我們發(fā)現(xiàn)存在如下兩個(gè)問題:①學(xué)生無法直接感受到數(shù)據(jù)結(jié)構(gòu)與Java面向?qū)ο蟪绦蛟O(shè)計(jì)之間的關(guān)系,體會(huì)不了數(shù)據(jù)結(jié)構(gòu)的重要性,無法體驗(yàn)選擇合適的數(shù)據(jù)結(jié)構(gòu)和算法對實(shí)現(xiàn)問題求解的成就感。②由于JDK開發(fā)的歷史原因,Java JDK中提供的數(shù)據(jù)結(jié)構(gòu)與算法的實(shí)現(xiàn)并沒有與數(shù)據(jù)結(jié)構(gòu)課程具有對應(yīng)關(guān)系。例如,在Java中,隊(duì)列(Queue)和線性表( List)都是Collection的子接口,而數(shù)據(jù)結(jié)構(gòu)認(rèn)為隊(duì)列是一種特殊的線性表。

根據(jù)在教學(xué)中發(fā)現(xiàn)的這些問題,我們在Java Collection框架部分的講授中采取了如下措施:①按照數(shù)據(jù)結(jié)構(gòu)中學(xué)生建立的知識體系組織Collection、Set、List、Queue、Stack等內(nèi)容的講授,而不是按照J(rèn)ava API中的繼承關(guān)系來介紹。②在課程設(shè)計(jì)實(shí)踐環(huán)節(jié),通過“先動(dòng)手寫自己的算法實(shí)現(xiàn)”,然后“閱讀并分析JDK相關(guān)算法源代碼”,通過對照,使學(xué)生發(fā)現(xiàn)自己在程序設(shè)計(jì)方面的不足,從而得到在數(shù)據(jù)結(jié)構(gòu)課程中所學(xué)知識的應(yīng)用體驗(yàn)。

1 JDK中的數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)元素之間的關(guān)系。從概念和實(shí)現(xiàn)兩個(gè)角度,可將數(shù)據(jù)結(jié)構(gòu)分為數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的存儲結(jié)構(gòu)。按照數(shù)據(jù)元素之間前驅(qū)和后繼關(guān)系來分,數(shù)據(jù)的邏輯結(jié)構(gòu)可分為以下4種:集合( Set)、線性表(List)、樹(Tree)和圖(Graph)。數(shù)據(jù)的存儲結(jié)構(gòu)主要包括數(shù)據(jù)元素本身的存儲以及數(shù)據(jù)元素之間關(guān)系表示。數(shù)據(jù)元素之間的關(guān)系在計(jì)算機(jī)中主要有兩種不同的表示方法:順序映像和非順序映像,并由此得到兩種不同的存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。

Java JDK為常用的數(shù)據(jù)結(jié)構(gòu)定義了一些接口( Interface)和實(shí)現(xiàn)(Implementation)。這些接口、實(shí)現(xiàn)類以及常用的排序、查找等算法統(tǒng)稱為JavaCollections框架(Java Collections Framework).Collections框架的設(shè)計(jì)目的是要滿足如下目標(biāo):高性能、一致性、擴(kuò)展性和輕松編程。Java程序員在具體應(yīng)用時(shí),不必考慮數(shù)據(jù)結(jié)構(gòu)和算法實(shí)現(xiàn)細(xì)節(jié),只需要用這些類創(chuàng)建出來一些對象,然后直接應(yīng)用即可‘3]。Java中把一組對象稱為Collection,也就是說,Collection是對象的容器。Java對Collection中的對象沒有任何前驅(qū)、后繼以及重復(fù)性的約束,只是約束了對象類型E。

Collection接口定義了其上的3類操作:針對單個(gè)元素的基本操作、迭代器和Collection對象之間的批量操作?;静僮靼ㄔ黾印h除、判斷是否包含某個(gè)元素、判斷是否為空、容器中當(dāng)前元素的個(gè)數(shù)、清空等。批量操作包括:合并兩個(gè)Collection容器、從一個(gè)容器中移走一些元素、保留兩個(gè)容器中相同的元素、判斷一個(gè)容器中的元素是否完全包含在另外一個(gè)容器中等。

接口Collection<E>的子接口有Set<E>和List<E>。集合(Set)在Collection的基礎(chǔ)之上增加了“不允許重復(fù)元素”的約束;而List則在Collection基礎(chǔ)之上增加了“元素之間具有前驅(qū)、后繼關(guān)系”的約束:除了第一個(gè)元素外,所有元素具有唯一的前驅(qū);除了最后一個(gè)元素外,所有元素具有唯一后繼。

如果僅關(guān)心數(shù)據(jù)元素是否出現(xiàn),而不關(guān)心數(shù)據(jù)元素之間的次序,則應(yīng)使用Set<E>。Java為集合接口提供了兩個(gè)基本的實(shí)現(xiàn):HashSet<E>和Tree<Set>。HashSet<E>是Set<E>接口的典型實(shí)現(xiàn),大多使用集合的場合就是使用這個(gè)實(shí)現(xiàn)類。HashSet實(shí)現(xiàn)類按哈希算法來存儲集合中的元素,因此具有很好的查找性能。HashSet不能記憶元素之間的順序,包括插入順序。其子類LinkedHashSet<E>也是根據(jù)元素hashCode值來決定元素存儲位置,但它同時(shí)使用鏈表維護(hù)元素的次序,這樣使得能夠記憶插入順序。由于LinkedHashSet需要維護(hù)元素的插入順序,所以性能略低于HashSet,但遍歷集合里的全部元素性能較好。

實(shí)現(xiàn)類TreeSet<E>可以確保集合元素處于排序狀態(tài),TreeSet并不是根據(jù)元素的插入順序進(jìn)行排序,而是根據(jù)元素的實(shí)際值來進(jìn)行排序的。TreeSet采用紅黑樹的數(shù)據(jù)結(jié)構(gòu)對元素進(jìn)行排序,并要求添加進(jìn)TreeSet中的對象必須實(shí)現(xiàn)CompareTo<E>接口。

List<E>接口作為Collection<E>接口的子接口,可以使用Collection接口中的全部方法。但是List接口中定義了元素位置和元素范圍的概念,使得List可以根據(jù)元素位置索引(index)來插入、替換、刪除集合元素以及查找指定對象的位置。ArrayList<E>實(shí)現(xiàn)類基于數(shù)組實(shí)現(xiàn)了List接口,其內(nèi)部封裝了一個(gè)動(dòng)態(tài)再分配的數(shù)組。每個(gè)ArrayList對象都有一個(gè)capacity屬性,這個(gè)屬性表示它們所封裝的數(shù)組的長度,當(dāng)添加元素超過長度時(shí),capacity會(huì)自動(dòng)增長,其默認(rèn)值為10。LinkedList<E>內(nèi)部以鏈表來保存集合中的元素,因此隨機(jī)訪問容器時(shí)的性能較差,但在插入、刪除元素時(shí)性能較好。

Queue<E>接口用于定義隊(duì)列這種數(shù)據(jù)結(jié)構(gòu),隊(duì)列是“先進(jìn)先出”的容器,通常不允許隨機(jī)訪問其中的元素。Java中的隊(duì)列接口Queue<E>沒有繼承List接口,而是直接繼承了Collection接口。如果使用具有固定容量的隊(duì)列,則應(yīng)使用offer()來加入元素,使用poll()來獲取并移出元素,因?yàn)閍dd()和remove()方法在因容量原因失敗時(shí)拋出異常。如果只是訪問隊(duì)首而不移出該元素,使用element()或者peek()方法。LinkedList<E>類實(shí)現(xiàn)了Queue<E>接口,因此我們可以把LinkedList當(dāng)成Queue來用。PriorityQueue是一個(gè)比較標(biāo)準(zhǔn)的隊(duì)列實(shí)現(xiàn)類,它并不是按加入隊(duì)列的順序,而是按隊(duì)列元素的大小來記憶隊(duì)列元素的順序。因此當(dāng)調(diào)用peek方法或者poll方法來取出隊(duì)列中的元素時(shí),并不是取出最先進(jìn)入隊(duì)列的元素,而是取出隊(duì)列中最小的元素。

Stack<E>實(shí)現(xiàn)了List<E>接口,提供了push和pop操作限制線性表中元素的插入和刪除只能在線性表的同一端進(jìn)行。JDK l.6引入的ArrayDequ<E>實(shí)現(xiàn)類被優(yōu)先推薦作為棧使用。ArrayDeque<E>實(shí)現(xiàn)了Deque<E>接口。Deque<E>接口定義了雙端隊(duì)列,雙端隊(duì)列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進(jìn)行。

Java JDK中沒有直接提供樹和圖的接口和實(shí)現(xiàn)類,但是可以通過研究TreeMap的源代碼學(xué)習(xí)操作樹的一般編寫模式。綜上,數(shù)據(jù)結(jié)構(gòu)與Java面向?qū)ο蟪绦蛟O(shè)計(jì)兩門課程內(nèi)容的銜接見表1。

2 面向數(shù)據(jù)結(jié)構(gòu)銜接的java課程實(shí)施方案

Java面向?qū)ο蟪绦蛟O(shè)計(jì)為1學(xué)期的課程??傉n時(shí)為講授54學(xué)時(shí)、實(shí)驗(yàn)32學(xué)時(shí)。其中,與數(shù)據(jù)結(jié)構(gòu)知識點(diǎn)緊密相關(guān)的Java Collections框架部分為講授6學(xué)時(shí)、實(shí)驗(yàn)4學(xué)時(shí)。在講授環(huán)節(jié),按照表1列出的順序進(jìn)行。在實(shí)驗(yàn)環(huán)節(jié)完成與授課內(nèi)容相關(guān)的驗(yàn)證性實(shí)驗(yàn)。在課程設(shè)計(jì)實(shí)踐環(huán)節(jié),要求學(xué)生使用Java設(shè)計(jì)常見算法,然后閱讀JDK提供的源代碼進(jìn)行對照。具體方案如圖1所示。

比如,在java.util.Collections類中提供了數(shù)據(jù)結(jié)構(gòu)中學(xué)生已經(jīng)學(xué)過的常見算法,如二分查找、計(jì)算元素頻數(shù)、查找最大/最小元素、反轉(zhuǎn)線性表、按照指定距離旋轉(zhuǎn)線性表、隨機(jī)排列線性表、交換指定位置上的兩個(gè)元素以及排序等。注意,在Java 6中Collections.sort()使用的是MergeSort;而在Java 7中,內(nèi)部實(shí)現(xiàn)換成了TimSort。

要求學(xué)生按照這些API文檔說明,首先按照數(shù)據(jù)結(jié)構(gòu)課程中的知識設(shè)計(jì)自己的算法實(shí)現(xiàn),然后與API源代碼進(jìn)行比較。由于學(xué)生使用C語言版的數(shù)據(jù)結(jié)構(gòu)教材,所以在面向Collection編程之前,作為過渡,先讓學(xué)生面向數(shù)組編程。

哈希表是一種重要的數(shù)據(jù)結(jié)構(gòu),也是實(shí)現(xiàn)集合的基本途徑之一。通過研究HashSet的源代碼,可以讓學(xué)生理解為什么每個(gè)對象都要有hashcode()方法,以及哈希表的編碼特點(diǎn)。由于HashSet的實(shí)現(xiàn)是基于HashMap的,所以研究HashSet就要研究HashMap。

Map是一種典型的名值對類型,它提供一種Key-Value對應(yīng)保存的數(shù)據(jù)結(jié)構(gòu)??蛻舫绦蛲ㄟ^Key值來訪問對應(yīng)的Value,這個(gè)接口并沒有繼承Collection這接口;而其他的類或者接口,不管是List、Set、Stack等都繼承或?qū)崿F(xiàn)了Collection。

TreeMap和HashMap算是Java集合類里面比較有難度的數(shù)據(jù)結(jié)構(gòu)。HashMap元素存取的時(shí)間復(fù)雜度一般是O(l),而TreeMap內(nèi)部對元素的操作復(fù)雜度為O(logn)。TreeMap記憶了順序,TreeSet內(nèi)部的實(shí)現(xiàn)使用了TreeMap。

3 結(jié)語

數(shù)據(jù)結(jié)構(gòu)與程序類課程的關(guān)系問題愈來愈引起關(guān)注,我們提出面向數(shù)據(jù)結(jié)構(gòu)知識體系的Java課程教學(xué)與數(shù)據(jù)結(jié)構(gòu)課程的銜接方案。這個(gè)教學(xué)方案已經(jīng)在河北師范大學(xué)本科計(jì)算機(jī)專業(yè)實(shí)施三屆,取得了較好的效果,學(xué)生對算法的理解加深了,解決問題的自信心增強(qiáng)了,也建立了工程意識。

參考文獻(xiàn):

[1]教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會(huì),高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)公共核心知識體系與課程[M].北京:清華大學(xué)出版社,2008: 110-111

[2]嚴(yán)蔚敏,吳偉民,數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,1997: 5-7.

[3]扎克霍爾.Java語言導(dǎo)學(xué)[M].北京:人民郵電出版社,2008: 293-294.

[4]沈華.?dāng)?shù)據(jù)結(jié)構(gòu)、算法和程序之間關(guān)系的探討[J].計(jì)算機(jī)教育,2013(4): 58-61.

篇7

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

數(shù)據(jù)結(jié)構(gòu)課程是計(jì)算機(jī)類專業(yè)的核心必修課程,在整個(gè)專業(yè)教學(xué)體系中占有重要地位。數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)內(nèi)容涉及構(gòu)筑計(jì)算機(jī)求解問題的兩大基石:刻畫實(shí)際問題中信息及其關(guān)系的數(shù)據(jù)結(jié)構(gòu),描述問題解決方案的算法。[1]數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)目標(biāo)是培養(yǎng)學(xué)生縝密的邏輯思維能力和數(shù)據(jù)抽象能力,把數(shù)據(jù)結(jié)構(gòu)和算法理論與編程實(shí)踐相結(jié)合,并在軟件系統(tǒng)開發(fā)過程中靈活運(yùn)用。學(xué)好數(shù)據(jù)結(jié)構(gòu)課程對操作系統(tǒng)、編譯原理、計(jì)算機(jī)網(wǎng)絡(luò)等后續(xù)課程的學(xué)習(xí)以及培養(yǎng)學(xué)生分析問題、解決問題的能力等方面起著至關(guān)重要的作用。如何講好數(shù)據(jù)結(jié)構(gòu)課程,一直是各高校計(jì)算機(jī)教師研究探索的熱門課題。俗話說“好的開端是成功的一半”,第一堂課的教學(xué)設(shè)計(jì)至關(guān)重要。好的開端能激發(fā)學(xué)生對課程的興趣,調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,使其產(chǎn)生強(qiáng)烈的求知欲,從“要我學(xué)”變?yōu)椤拔乙獙W(xué)”,從而為教師有序、有效展開課程教學(xué)奠定良好的基礎(chǔ)。[2]

本文從以下幾個(gè)方面具體討論如何上好數(shù)據(jù)結(jié)構(gòu)第一堂課。

一、教師自我介紹

教師給學(xué)生的第一印象很重要。第一堂課教師第一次接觸學(xué)生,自我介紹必不可少。自我介紹的內(nèi)容主要包括介紹教師的姓名、學(xué)院、辦公地點(diǎn)、移動(dòng)電話等,可以把微信、QQ或E?鄄mail等其他聯(lián)系方式告訴學(xué)生,還可以組建數(shù)據(jù)結(jié)構(gòu)課程學(xué)習(xí)的QQ群或微信群,學(xué)生遇到問題后可以在群里討論,也可以通過電話、E?鄄mail等與教師單獨(dú)聯(lián)系。教師愿意做學(xué)生的朋友,學(xué)生在學(xué)習(xí)上、生活上、思想上需要教師幫助時(shí),可及時(shí)與教師聯(lián)系。教師的積極態(tài)度能夠?qū)W(xué)生產(chǎn)生積極的影響,有助于與學(xué)生建立良好的師生關(guān)系,促進(jìn)學(xué)生學(xué)習(xí)的自覺性。

二、課程介紹

(一)課程定位

數(shù)據(jù)結(jié)構(gòu)課程是計(jì)算機(jī)類專業(yè)的核心必修課程,美國ACM/IEEE CC-2005課程體系將數(shù)據(jù)結(jié)構(gòu)與算法類課程列為核心課程之首。我國教育部計(jì)算機(jī)教育指導(dǎo)委員會(huì)“計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)規(guī)范”2006中明確把數(shù)據(jù)結(jié)構(gòu)與算法列入計(jì)算機(jī)及信息技術(shù)相關(guān)學(xué)科專業(yè)的本科必修基礎(chǔ)課程。

數(shù)據(jù)結(jié)構(gòu)課程是對前導(dǎo)課程(如C語言程序設(shè)計(jì)、程序設(shè)計(jì)基礎(chǔ)等)的深入和擴(kuò)展,能為進(jìn)一步學(xué)習(xí)其他專業(yè)課程打下基礎(chǔ)。課程中的排序算法及基本的樹、圖等非線性結(jié)構(gòu)是計(jì)算機(jī)科學(xué)的基本功,B+樹、散列(Hash)等高級數(shù)據(jù)結(jié)構(gòu)是后續(xù)如操作系統(tǒng)、數(shù)據(jù)庫、編譯原理、圖形圖像等專業(yè)課程的基礎(chǔ)。

(二)主要內(nèi)容

數(shù)據(jù)結(jié)構(gòu)課程描述的是按照一定邏輯關(guān)系組織起來的待處理數(shù)據(jù)元素的表示及相關(guān)操作,涉及數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)和數(shù)據(jù)的運(yùn)算,內(nèi)容非常豐富。

常見的邏輯關(guān)系包括線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖結(jié)構(gòu)和文件結(jié)構(gòu)。常見的存儲方法有順序方法、鏈?zhǔn)椒椒?、索引方法和散列方法。建立在?shù)據(jù)結(jié)構(gòu)之上的有效運(yùn)算是問題求解的核心,如排序、檢索等。在介紹課程內(nèi)容時(shí),應(yīng)把相應(yīng)章節(jié)的學(xué)時(shí)分配一并列表展示,并簡明扼要地向?qū)W生介紹課程的重點(diǎn)難點(diǎn),借助多媒體課件以動(dòng)畫的形式給學(xué)生演示鏈表、棧、隊(duì)列以及排序等操作,幫助學(xué)生理解,激發(fā)學(xué)生的學(xué)習(xí)興趣。

(三)學(xué)習(xí)目標(biāo)

數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)目標(biāo)是讓學(xué)生學(xué)會(huì)分析數(shù)據(jù)對象的特征,掌握數(shù)據(jù)組織方法和計(jì)算機(jī)的表示方法,初步掌握算法時(shí)間、空間分析的技巧,培養(yǎng)學(xué)生針對問題的應(yīng)用背景進(jìn)行分析,選擇合適的數(shù)據(jù)結(jié)構(gòu),從而培養(yǎng)高級程序設(shè)計(jì)技能。學(xué)生的學(xué)習(xí)目標(biāo)明確了,才會(huì)不懈努力,朝著目標(biāo)一直前行。

(四)教材及參考書

教材是供教學(xué)用的資料,如課本、講義等。第一堂課應(yīng)明確數(shù)據(jù)結(jié)構(gòu)課程的教材,簡要介紹教材的特點(diǎn)、作者信息等,比如我們采用的是嚴(yán)蔚編、清華大學(xué)出版社出版的《數(shù)據(jù)結(jié)構(gòu)》。同時(shí)給學(xué)生們列出一些必要的參考書籍,這對課程學(xué)習(xí)能起到補(bǔ)充拓展的作用。

三、學(xué)習(xí)方法指導(dǎo)

在學(xué)生了解數(shù)據(jù)結(jié)構(gòu)課程的重要性、所用教材及參考資料后,就要告訴學(xué)生如何去做才能學(xué)好這門課程。數(shù)據(jù)結(jié)構(gòu)課程要培養(yǎng)學(xué)生結(jié)合實(shí)際應(yīng)用設(shè)計(jì)有效算法和數(shù)據(jù)結(jié)構(gòu)的能力,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)必須經(jīng)過大量的踐,在實(shí)踐中體會(huì)構(gòu)造性思維方法,掌握數(shù)據(jù)組織與程序設(shè)計(jì)的技術(shù)。通過扎實(shí)的、大量的基礎(chǔ)訓(xùn)練,學(xué)生才能靈活地運(yùn)用問題抽象、數(shù)據(jù)抽象、算法抽象來分析問題,應(yīng)用數(shù)據(jù)結(jié)構(gòu)和算法來設(shè)計(jì)、實(shí)現(xiàn)相應(yīng)的程序,完成創(chuàng)新能力和實(shí)踐能力的訓(xùn)練。[3]

(一)課前預(yù)習(xí),課后總結(jié),吃透教材

課程內(nèi)容主要包含數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計(jì)與分析的基本知識,各種基本數(shù)據(jù)結(jié)構(gòu)的定義、存儲結(jié)構(gòu)、相應(yīng)的算法以及應(yīng)用等。理解掌握基本的數(shù)據(jù)結(jié)構(gòu)與算法的關(guān)系很重要。程序的時(shí)間和空間效率,不僅與數(shù)據(jù)的組織方式有關(guān)系,也跟算法設(shè)計(jì)的巧妙程度有關(guān)系。在學(xué)習(xí)中要把握好預(yù)習(xí)、聽課、實(shí)驗(yàn)、復(fù)習(xí)、總結(jié)五個(gè)環(huán)節(jié),吃透教材,把握住算法的本質(zhì)。通過預(yù)習(xí),可以提高學(xué)生的主體意識,培養(yǎng)學(xué)生的獨(dú)立思考能力,進(jìn)而提高課堂學(xué)習(xí)效率。課后的總結(jié)則能讓學(xué)生自覺地回顧課堂內(nèi)容,深入地學(xué)習(xí)和領(lǐng)會(huì)課程的重點(diǎn)和難點(diǎn),完成課后作業(yè)或練習(xí)題,從而提高數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)效果。

(二)多讀代碼,實(shí)現(xiàn)算法,理解思路

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

(三)充分利用網(wǎng)絡(luò)資源進(jìn)行課外拓展

1.圖書館資源

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

2.課程資料及論壇

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

四、結(jié)語

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

[ 參 考 文 獻(xiàn) ]

[1] 張銘,耿國華,陳衛(wèi)衛(wèi),等.數(shù)據(jù)結(jié)構(gòu)與算法課程教學(xué)實(shí)施方案[J].中國大學(xué)教學(xué),2011(3):56-60.

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

篇8

關(guān)鍵詞:研究型教學(xué);實(shí)驗(yàn)教學(xué);智力能力培養(yǎng);教學(xué)方法;數(shù)據(jù)結(jié)構(gòu)

社會(huì)的發(fā)展對當(dāng)前我國高等教育提出了具體的要求,所培養(yǎng)的學(xué)生必須具備全面發(fā)展的素質(zhì),包括掌握科學(xué)的學(xué)習(xí)方法和具有會(huì)學(xué)習(xí)的本領(lǐng),具備積極創(chuàng)新的能力和生動(dòng)活潑的特征。這一特征,使得高校教育改革應(yīng)該不斷地向更高、更深刻、更全面的層次上發(fā)展。教學(xué)改革是教育改革中最為重要的一部分。如何創(chuàng)造良好的學(xué)習(xí)環(huán)境和條件,革新教學(xué)手段和方法,全方位地培養(yǎng)學(xué)生的智力和能力,關(guān)鍵是要轉(zhuǎn)變教育觀念,改革人才培養(yǎng)模式,改進(jìn)教師的教學(xué)方式,增強(qiáng)學(xué)生學(xué)生的學(xué)習(xí)的主觀能動(dòng)性,積極采取啟發(fā)式、研討式等研究型教學(xué)方式。

但是在高等教育過程中對研究型教學(xué)的認(rèn)識程度還不夠高,開展的深度與廣度都還不夠,從而成為制約教學(xué)質(zhì)量進(jìn)一步提高的一個(gè)瓶頸而引起了各高校的普遍關(guān)注。本文結(jié)合我們開展研究型教學(xué)的實(shí)踐,對《數(shù)據(jù)結(jié)構(gòu)》課程的實(shí)驗(yàn)教學(xué)改革進(jìn)行了一定的嘗試,取得了初步的教學(xué)效果。

一、研究型課程教學(xué)的基本理念

國內(nèi)研究型教學(xué)的實(shí)踐,一方面是對國外先進(jìn)教育方式的借鑒,另一方面也是對國內(nèi)實(shí)施已久的高校學(xué)習(xí)與科技興趣小組活動(dòng)乃至啟發(fā)式、討論式、發(fā)現(xiàn)法教學(xué)方式等經(jīng)驗(yàn)的系統(tǒng)提升。

1、赫爾巴特“主知主義”課程理論。赫爾巴特的課程理論被稱為“主知主義”,它是以知識作用為本位的課程論,同時(shí)還明確主張學(xué)生從總體上對教師保持被動(dòng)狀態(tài),強(qiáng)調(diào)教師的權(quán)威意志和主導(dǎo)責(zé)任。因而,人們把赫爾巴特視為“教師權(quán)威論”或“教師中心論”的代表人物。

2、杜威的“實(shí)用主義”課程。杜威主張教育要“以學(xué)生為中心”,要求教育的一切措施圍繞著學(xué)生來組織,以促進(jìn)學(xué)生的個(gè)性發(fā)展。他認(rèn)為學(xué)生的學(xué)習(xí)不應(yīng)是被動(dòng)接受知識的過程,而類似科學(xué)家研究發(fā)現(xiàn)知識的主動(dòng)探究過程。杜威的教育思想深刻地影響了20世紀(jì)初至當(dāng)代的全部教學(xué)論的發(fā)展。教育家陶行知先生是杜威的學(xué)生,他將社威的教育思想引入我國,并在國內(nèi)進(jìn)行了卓有成效的教學(xué)實(shí)踐,創(chuàng)立了“知行統(tǒng)一”的課程理論,至今對我國教育界仍產(chǎn)生著深刻影響。

3、研究型課程理念。研究型課程教學(xué)的基本理念是:對歷史上傳統(tǒng)的教育學(xué)派的“主知主義”、“教師中心論”和進(jìn)步教育學(xué)派的“實(shí)用主義”、“學(xué)生中心論”中合理的部分加以有機(jī)的整合,揚(yáng)棄其狹隘、刻板僵化的部分,注重發(fā)揮教師的主導(dǎo)責(zé)任和學(xué)生的主體作用。它以促進(jìn)學(xué)生的個(gè)性發(fā)展為宗旨,以改變學(xué)生單純地、被動(dòng)地接受知識傳授的學(xué)習(xí)方式為著眼點(diǎn),構(gòu)建一種開放的學(xué)習(xí)環(huán)境,為學(xué)生提供一個(gè)多渠道獲取知識,理解自然、個(gè)人、社會(huì)等問題,并將學(xué)到的知識綜合應(yīng)用于實(shí)踐的機(jī)會(huì)。它在幫助學(xué)生進(jìn)行接受式間接學(xué)習(xí)的同時(shí),形成一種對知識的主動(dòng)式直接探索,以提高其解決實(shí)際問題的能力的研究型學(xué)習(xí)形式。

二、研究型課程教學(xué)的指導(dǎo)思想和教學(xué)原則

《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)是一種驗(yàn)證型的教學(xué)模式,將課堂上所學(xué)的理論知識與計(jì)算機(jī)上機(jī)實(shí)踐相結(jié)合,通過利用高級語言環(huán)境對書本上的算法進(jìn)行驗(yàn)證,從而達(dá)到鞏固理論知識的目的。而研究型實(shí)驗(yàn)教學(xué)的指導(dǎo)思想,不僅僅在于驗(yàn)證書本知識和鞏固理論知識,而是更加重視理論知識的綜合應(yīng)用,強(qiáng)調(diào)整個(gè)過程的參與和學(xué)習(xí),發(fā)揮學(xué)生學(xué)習(xí)的主動(dòng)性,激發(fā)學(xué)生的學(xué)習(xí)興趣和創(chuàng)造力,培養(yǎng)學(xué)生的團(tuán)隊(duì)精神和協(xié)作意識。因此,全面培養(yǎng)學(xué)生的智力和能力,是研究型實(shí)驗(yàn)教學(xué)的指導(dǎo)思想。

在上述教學(xué)思想指導(dǎo)下,在實(shí)驗(yàn)教學(xué)過程中必須堅(jiān)持的教學(xué)原則是:

1、教師指導(dǎo)與學(xué)生動(dòng)手并重。雖然有效快捷的學(xué)習(xí)離不開教師的指導(dǎo),但指導(dǎo)只是一種手段。在現(xiàn)代教學(xué)過程中,教師的指導(dǎo)旨在教會(huì)學(xué)生學(xué)會(huì)學(xué)習(xí),這不僅是今后終身教育的要求,而且只有學(xué)會(huì)學(xué)習(xí),掌握了科學(xué)的學(xué)習(xí)方法,學(xué)習(xí)主體才會(huì)真正具有一種參與到教學(xué)過程中去的能力。

2、面向結(jié)果的教學(xué)和面向過程的教學(xué)并重。面向結(jié)果的教學(xué)是指教師在教學(xué)活動(dòng)中以使學(xué)生獲得令人滿意的結(jié)論作為教學(xué)的直接意義,它是傳統(tǒng)教學(xué)所強(qiáng)調(diào)的教學(xué)形式。面向過程的教學(xué)則是教師在教學(xué)活動(dòng)中重視引導(dǎo)學(xué)生對知識形成過程的理解與實(shí)踐,并在理解和實(shí)踐中仔細(xì)體驗(yàn)獲得這一知識的基礎(chǔ)和條件,以及它與其他知識的相互關(guān)系等。從主動(dòng)學(xué)習(xí)的角度看,面向過程的教學(xué)會(huì)給學(xué)生主體帶來一種更高的價(jià)值。

3、一般能力的培養(yǎng)與創(chuàng)造品質(zhì)的形成并重。學(xué)生能力的培養(yǎng)已成為現(xiàn)代教育的重心,然而在促進(jìn)學(xué)生的一般能力有較全面提高的同時(shí),教師應(yīng)該對學(xué)生的創(chuàng)造能力的發(fā)展給予特別關(guān)注,因?yàn)閯?chuàng)造品質(zhì)已成為現(xiàn)代人素質(zhì)結(jié)構(gòu)中最重要的組成部分。

4、理論學(xué)習(xí)與實(shí)踐活動(dòng)并重。理論來源于實(shí)踐,反過來又指導(dǎo)實(shí)踐。只有堅(jiān)持理論聯(lián)系實(shí)際,才能有所發(fā)現(xiàn),有所創(chuàng)造。

5、接受式學(xué)習(xí)與探究式學(xué)習(xí)并重。接受式學(xué)習(xí)是一種被動(dòng)的學(xué)習(xí)過程,而探究式學(xué)習(xí)則是一種主動(dòng)的學(xué)習(xí)過程,只有發(fā)揮了學(xué)生主體的積極性,才能使得學(xué)習(xí)收到事半功倍的效果。近年來,我們對《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)的研究型教學(xué)模式的探究,正是堅(jiān)持了以上這些教學(xué)原則。

三、研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)環(huán)節(jié)的設(shè)計(jì)與實(shí)施

研究型教學(xué)依據(jù)其內(nèi)容的不同可分為認(rèn)知理解類和實(shí)踐應(yīng)用類。研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)屬于實(shí)踐應(yīng)用類。主要憑借算法構(gòu)造思維方式,從具體操作規(guī)范入手,通過操作過程的構(gòu)造實(shí)施,解決特定問題,理解、習(xí)慣、掌握算法思維方法是一個(gè)構(gòu)造性、研究型方式的訓(xùn)練過程,其核心內(nèi)容就是通過學(xué)習(xí)結(jié)構(gòu)技術(shù)的過程,培養(yǎng)學(xué)生算法設(shè)計(jì)能力以及創(chuàng)造性思維,培養(yǎng)舉一反三、觸類旁通的能力,以達(dá)到提高學(xué)生應(yīng)用知識解決復(fù)雜問題的素質(zhì)能力和的目標(biāo)。計(jì)算機(jī)的程序設(shè)計(jì)是一項(xiàng)創(chuàng)造性的智力勞動(dòng),讓學(xué)生深刻掌握這一套算法構(gòu)造思維方法,是實(shí)踐環(huán)節(jié)所要解決的核心問題。因此,我們注重為學(xué)生創(chuàng)設(shè)智力發(fā)展的環(huán)境與條件,設(shè)置智力因素和非智力因素相結(jié)合的條件。我們根據(jù)研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)的指導(dǎo)思想和教學(xué)原則,考慮到培養(yǎng)計(jì)劃的安排,我們對每一次實(shí)驗(yàn)課都進(jìn)行了精心地策劃,并要求寫出實(shí)驗(yàn)報(bào)告。主要分為確立問題階段、實(shí)踐體驗(yàn)階段和成果交流階段等三個(gè)階段來進(jìn)行。這三個(gè)階段并不截然分開,而是相互交叉推進(jìn)的。實(shí)施流程通常為:“引出問題,建立假設(shè)”——“研討探究,驗(yàn)證假設(shè)”——“得出結(jié)論,切磋交流”——“歸納總結(jié),形成評價(jià)”。

⑴確立問題階段。教師介紹上機(jī)環(huán)境及算法在相應(yīng)數(shù)據(jù)結(jié)構(gòu)中的地位和作用,包括使用的編程環(huán)境,在驗(yàn)證算法過程中需要注意的問題,講解如何查找相關(guān)資料,并展示歷屆學(xué)生的實(shí)驗(yàn)報(bào)告樣本。學(xué)生3—4人自由組合成立研究課題小組,選出組長;通過查找相關(guān)資料,擴(kuò)展相關(guān)算法,提出研究課題,寫出實(shí)施計(jì)劃。在此基礎(chǔ)上,教師組織各小組進(jìn)行答辯,組長對研究課題的目的、背景資料、理論依據(jù)、技術(shù)方法、計(jì)劃和目標(biāo)等進(jìn)行解答,并回答教師提出的有關(guān)問題。

⑵實(shí)踐體驗(yàn)階段。教師根據(jù)實(shí)驗(yàn)室條件、答辯情況和課題難易程度等,有重點(diǎn)地抽查6—7組作為本次實(shí)驗(yàn)教學(xué)課的指導(dǎo)對象,并強(qiáng)調(diào)在上機(jī)實(shí)踐過程中的注意事項(xiàng)與具體要求,講解實(shí)驗(yàn)報(bào)告格式和撰寫方法,并要求各組人員進(jìn)行具體分工。學(xué)生利用4節(jié)課的時(shí)間上機(jī)實(shí)踐,并記錄編程調(diào)試過程中的相關(guān)數(shù)據(jù)和出錯(cuò)信息。

⑶成果交流階段。實(shí)驗(yàn)完畢得出結(jié)果后進(jìn)行資料整理,并開始撰寫實(shí)驗(yàn)報(bào)告。教師對各組的實(shí)驗(yàn)報(bào)告進(jìn)行初審,提出具體修改意見。各組學(xué)生對實(shí)驗(yàn)報(bào)告認(rèn)真修改和補(bǔ)充,做到報(bào)告格式化、標(biāo)準(zhǔn)化,并正式提交給教師再次審查,教師根據(jù)情況評定成績,作為期末成績總評的參考依據(jù),并在課堂上組織學(xué)生交流實(shí)驗(yàn)感受及取得的成果。

通過實(shí)驗(yàn)實(shí)踐內(nèi)容的訓(xùn)練,突出構(gòu)造性、研究型思維訓(xùn)練的特征,提高了學(xué)生組織數(shù)據(jù)與進(jìn)行編寫大型程序能力;更好地理解和掌握了算法設(shè)計(jì)所需的技術(shù),為整個(gè)專業(yè)學(xué)習(xí)打下了良好的基礎(chǔ)。學(xué)生通過完成《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)課程的設(shè)計(jì)任務(wù),不僅把設(shè)計(jì)優(yōu)良算法與掌握面向?qū)ο蟮木幊碳记山Y(jié)合起來,而且能培養(yǎng)綜合運(yùn)用所學(xué)知識來獨(dú)立解決實(shí)際問題的能力,給學(xué)生發(fā)展個(gè)性化以更加廣闊的天地。實(shí)驗(yàn)教學(xué)的改革與實(shí)踐結(jié)果證明,貫穿于實(shí)驗(yàn)教學(xué)環(huán)節(jié)的研究型實(shí)驗(yàn)教學(xué),使得理論教學(xué)與實(shí)驗(yàn)教學(xué)有機(jī)的整合,收到了良好的教學(xué)效果。

四、研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)在人才培養(yǎng)過程中的作用

1、研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)有利于學(xué)生的智力開發(fā)和能力培養(yǎng)。

教學(xué)的目的不僅要使學(xué)生獲得知識,而且更要使學(xué)生獲得智力的發(fā)展,要使學(xué)生掌握點(diǎn)石成金的方法。能力與智力是兩個(gè)相對獨(dú)立的概念,二者有區(qū)別,又有密切聯(lián)系。二者之間不一定成正比例關(guān)系。智力屬于認(rèn)識活動(dòng)的范疇,而能力屬于實(shí)際活動(dòng)的范疇。智力是保證人們有效地認(rèn)識客觀事物的較穩(wěn)定的心理特征的綜合,能力是保證人們成功地進(jìn)行實(shí)際活動(dòng)的較穩(wěn)固的心理特征的綜合。智力結(jié)構(gòu)由注意力、觀察力、記憶力、想象力和思維力5部分組成,能力結(jié)構(gòu)由組織能力、定向能力、適應(yīng)能力、操作能力和創(chuàng)新能力5部分組成。研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)是全過程的教學(xué),從給定的算法到算法擴(kuò)展、從選題到實(shí)驗(yàn)報(bào)告及其答辯的所有過程中,幾乎都是以學(xué)生為主體開展活動(dòng),教師僅僅負(fù)責(zé)組織和教學(xué)引導(dǎo)。特別是在科學(xué)研究方法和科技文獻(xiàn)的查找、科技報(bào)告的寫作訓(xùn)練等方面,讓他們在低年級就能得到很好地鍛煉,為今后寫好畢業(yè)論文打下了堅(jiān)實(shí)的基礎(chǔ)。所以,這種新型的教學(xué)方式對于全面培養(yǎng)學(xué)生的智力和能力是十分有利的。

2、研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)可激發(fā)學(xué)生的求知欲和創(chuàng)造力。

教師要善于采取相應(yīng)的改革措施,創(chuàng)設(shè)智力發(fā)展的環(huán)境與條件,用生動(dòng)的實(shí)踐活動(dòng)來鞏固和強(qiáng)化學(xué)生的求知欲,激發(fā)學(xué)生的好奇心、興趣、想象力和創(chuàng)造力。因?yàn)榕d趣是推動(dòng)學(xué)生求知欲的強(qiáng)大內(nèi)在動(dòng)力,興趣往往是創(chuàng)造的先導(dǎo),同時(shí)想象在人的智力活動(dòng)中也占有極重要的地位。由于研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)與中小型軟件開發(fā)結(jié)合起來,使學(xué)生們很感興趣。他們本來對軟件開發(fā)充滿了好奇與想象,在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)》以后,有了一定的算法理論基礎(chǔ),可以根據(jù)自己的興趣,充分發(fā)揮想象力和創(chuàng)造力,對軟件開發(fā)進(jìn)行有益的嘗試。

3、研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)有利于培養(yǎng)學(xué)生動(dòng)手動(dòng)腦、理論聯(lián)系實(shí)際的能力。

研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)要求學(xué)生動(dòng)手動(dòng)腦,手腦并用,既應(yīng)用了已掌握的知識,又促進(jìn)了思維力、理解力和創(chuàng)造力的發(fā)展。所以,我們認(rèn)為知識與智力上的綜合訓(xùn)練是發(fā)展智力的重要條件。在實(shí)驗(yàn)教學(xué)活動(dòng)中,學(xué)生們不僅動(dòng)手編制了相關(guān)的應(yīng)用程序,而且還掌握了使用相關(guān)編程工具的方法,并通過實(shí)踐和反復(fù)總結(jié)后,理解了對同一算法可以從多種不同的角度來實(shí)現(xiàn)的深刻內(nèi)涵。

4、研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)能培養(yǎng)學(xué)生的團(tuán)隊(duì)精神和協(xié)作意識。

學(xué)生積極參加研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)活動(dòng),不僅促進(jìn)智力和能力的發(fā)展,而且能很好地培養(yǎng)學(xué)生的團(tuán)隊(duì)精神和協(xié)作意識。由于我們的整個(gè)教學(xué)活動(dòng)是以小組進(jìn)行的,無論是在上機(jī)編程,還是在查閱資料、撰寫和修改實(shí)驗(yàn)報(bào)告,各小組成員都能認(rèn)真參與,并很好地配合組長工作,表現(xiàn)出良好的團(tuán)隊(duì)精神和協(xié)作意識。最后,當(dāng)順利完成實(shí)驗(yàn)報(bào)告并通過教師驗(yàn)收時(shí),他們感到有一種來之不易的集體成就感和榮譽(yù)感。所有這些,使他們更加堅(jiān)定了自信心,激發(fā)了學(xué)習(xí)興趣,鍛煉了能力,提高了智力。

當(dāng)然,同傳統(tǒng)的實(shí)驗(yàn)教學(xué)相比,研究型《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)教學(xué)對教師的要求更高了,付出的也更多了,同時(shí)得到的也更多。因?yàn)檫@是一種過程的學(xué)習(xí)和參與,學(xué)生和教師都從中受益匪淺。因此,只要我們提高了對研究型實(shí)驗(yàn)教學(xué)的認(rèn)識,端正了態(tài)度,掌握了科學(xué)的指導(dǎo)方法,就會(huì)去不斷地創(chuàng)新,必將能培養(yǎng)出智力和能力全面發(fā)展的一流人才。

參考文獻(xiàn)

[1]文輔相. 素質(zhì)·方法·創(chuàng)新[J].高等教育研究,1999.

[2]陸國平,江瑩,李松.研究型大學(xué)與思想庫[J].高等教育研究,2001.

[3]沈顯生,尹路明,李樹美,楊捷頻. 研究型野外實(shí)習(xí)教學(xué)的設(shè)計(jì)與實(shí)踐[J].教育與現(xiàn)代化,2002.3.

篇9

中圖分類號:G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2016)24-0274-03

一、引言

實(shí)驗(yàn)教學(xué)是學(xué)生從學(xué)習(xí)理論知識到走向社會(huì)的橋梁,對提高學(xué)生綜合素質(zhì)、培養(yǎng)學(xué)生創(chuàng)新精神和實(shí)踐能力有著理論教學(xué)不可替代的特殊作用[1]。特別是主干課程的實(shí)踐教學(xué),它是應(yīng)用型人才培養(yǎng)中的關(guān)鍵環(huán)節(jié)[2]。課內(nèi)實(shí)驗(yàn)是指與理論課相捆綁的實(shí)踐教學(xué),即嵌入到專業(yè)基礎(chǔ)課或?qū)I(yè)課內(nèi)的實(shí)驗(yàn)實(shí)踐教學(xué)[3]。它是與理論教學(xué)并行實(shí)施的實(shí)踐教學(xué)環(huán)節(jié),能夠幫助學(xué)生深入理解和掌握所學(xué)的專業(yè)知識。

數(shù)據(jù)結(jié)構(gòu)是隨著處理對象的復(fù)雜性不斷增加而發(fā)展起來的一門課程,作為計(jì)算機(jī)專業(yè)的核心課程,在專業(yè)人才培養(yǎng)鏈條中占有舉足輕重的地位[4-7]。數(shù)據(jù)結(jié)構(gòu)主要研究數(shù)據(jù)在抽象視圖和實(shí)現(xiàn)視圖中的表示和處理方法[8,9]。抽象視圖涉及的是數(shù)據(jù)結(jié)構(gòu)的理論性部分,實(shí)現(xiàn)視圖主要體現(xiàn)的是數(shù)據(jù)結(jié)構(gòu)的實(shí)踐性,理論指導(dǎo)實(shí)踐,實(shí)踐支撐理論,因此設(shè)計(jì)有助于課堂理論教學(xué)的實(shí)驗(yàn)教學(xué)方案是非常有必要的[10]。它可以解決學(xué)生對所學(xué)知識缺乏必要感性認(rèn)識的問題,將知識傳授、技能訓(xùn)練、能力培養(yǎng)融于一體,使所學(xué)理論知識在實(shí)驗(yàn)中得到驗(yàn)證和應(yīng)用[11]。

棧和隊(duì)列是兩種非常重要的數(shù)據(jù)結(jié)構(gòu),它們有非常多的實(shí)際應(yīng)用并且是實(shí)現(xiàn)其他復(fù)雜結(jié)構(gòu)的基礎(chǔ),因此為了幫助學(xué)生掌握并靈活運(yùn)用這兩種結(jié)構(gòu),本文給出一種棧和隊(duì)列的實(shí)驗(yàn)教學(xué)方案。該方案的設(shè)計(jì)思路也可以應(yīng)用于其他數(shù)據(jù)結(jié)構(gòu)或課程的實(shí)驗(yàn)教學(xué)方案的設(shè)計(jì)。

二、認(rèn)識兩種重要的數(shù)據(jù)結(jié)構(gòu)――棧和隊(duì)列

棧和隊(duì)列是兩種運(yùn)算受限的線性表,它們的插入和刪除運(yùn)算都被限制在表的端點(diǎn)處進(jìn)行,只是具體的受限規(guī)則不一樣[12,13]。

(一)學(xué)習(xí)對象

棧(stack)是運(yùn)算受限的線性表,它被限制在表的一端進(jìn)行插入和刪除操作。能進(jìn)行插入和刪除的一端稱為棧頂,另一端稱為棧底。正是由于它插入和刪除操作上的限制使得它具有了一種獨(dú)特的“后進(jìn)先出”(LIFO)的特性。棧的LIFO特性使得它具有非常多的應(yīng)用,如:符號平衡問題、中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式問題、后綴表達(dá)式的計(jì)算問題、函數(shù)調(diào)用的實(shí)現(xiàn)(包括遞歸函數(shù)的實(shí)現(xiàn))、在股票市場中查找劃分、Web瀏覽器中的網(wǎng)頁訪問歷史、文本編輯器中的撤銷序列等。此外,棧還是其他很多算法的輔助數(shù)據(jù)結(jié)構(gòu)和其他數(shù)據(jù)結(jié)構(gòu)的組成部分。

隊(duì)列(queue)也是一種運(yùn)算受限的線性表,它被限制在表的一端進(jìn)行插入操作,在表的另一端進(jìn)行刪除操作。進(jìn)行插入操作的一端稱為隊(duì)尾,進(jìn)行刪除操作的一端稱為隊(duì)首。正是由于它插入和刪除操作上的限制使得它具有了一種獨(dú)特的“先進(jìn)先出”(FIFO)的特性。隊(duì)列的FIFO特性使得它具有非常多的應(yīng)用,如:操作系統(tǒng)中的作業(yè)調(diào)度、異步數(shù)據(jù)轉(zhuǎn)換、多道程序設(shè)計(jì)等。此外,隊(duì)列還是其他很多算法的輔助數(shù)據(jù)結(jié)構(gòu)和其他數(shù)據(jù)結(jié)構(gòu)的組成部分。

(二)學(xué)習(xí)目標(biāo)

學(xué)習(xí)這兩種重要的線性結(jié)構(gòu)需要學(xué)生重點(diǎn)消化的知識點(diǎn)有:(1)棧/隊(duì)列的概念、類型定義及基本操作的定義和實(shí)現(xiàn);(2)棧/隊(duì)列的結(jié)構(gòu)特性;(3)棧/隊(duì)列的靈活應(yīng)用。

為了配合棧和隊(duì)列的理論教學(xué),幫助學(xué)生理解和掌握上述知識點(diǎn),我們需要精心設(shè)計(jì)棧和隊(duì)列的實(shí)驗(yàn)教學(xué)方案。

三、棧和隊(duì)列的實(shí)驗(yàn)教學(xué)方案設(shè)計(jì)

(一)實(shí)驗(yàn)題目設(shè)計(jì)

根據(jù)棧和隊(duì)列的學(xué)習(xí)目標(biāo)和遵循循序漸進(jìn)的學(xué)習(xí)和教學(xué)原則,實(shí)驗(yàn)題目被分為以下三個(gè)層次:基礎(chǔ)型實(shí)驗(yàn)題目、設(shè)計(jì)型實(shí)驗(yàn)題目和加強(qiáng)理解型實(shí)驗(yàn)題目。

所謂基礎(chǔ)型實(shí)驗(yàn)是指圍繞課程講授的棧/隊(duì)列的物理實(shí)現(xiàn)和其基本運(yùn)算的實(shí)現(xiàn)來設(shè)置的實(shí)驗(yàn)題目。設(shè)計(jì)基礎(chǔ)型實(shí)驗(yàn)的目的是,通過實(shí)踐的方式驗(yàn)證課堂上講授的重要知識點(diǎn),給學(xué)生切身的感受,擺脫“紙上談兵”的感覺,這種立體的感受有助于學(xué)生深入理解和掌握這些知識點(diǎn)。設(shè)計(jì)型實(shí)驗(yàn)要求學(xué)生能分別運(yùn)用棧/隊(duì)列解決簡單應(yīng)用問題。這類實(shí)驗(yàn)題目主要是用來引導(dǎo)和加強(qiáng)學(xué)生對棧/隊(duì)列的靈活運(yùn)用。設(shè)計(jì)加強(qiáng)理解型實(shí)驗(yàn)的目的是強(qiáng)化學(xué)生對棧和隊(duì)列的結(jié)構(gòu)特性的理解和體會(huì)。為了達(dá)到這個(gè)目的,加強(qiáng)理解型實(shí)驗(yàn)題目的設(shè)計(jì)思路有兩個(gè)方面:(1)引導(dǎo)學(xué)生去思考并解決這樣兩個(gè)問題:能否利用棧的LIFO特性來實(shí)現(xiàn)隊(duì)列的FIFO特性?能否利用隊(duì)列的FIFO特性來實(shí)現(xiàn)棧的LIFO特性?(2)讓學(xué)生實(shí)現(xiàn)其他更為復(fù)雜的棧和隊(duì)列。

在棧的理論教學(xué)過程中可以開設(shè)棧的基礎(chǔ)型實(shí)驗(yàn),在棧的理論教學(xué)結(jié)束后可以開設(shè)棧的設(shè)計(jì)型實(shí)驗(yàn),在隊(duì)列的理論教學(xué)過程中可以開設(shè)隊(duì)列的基礎(chǔ)型實(shí)驗(yàn),在隊(duì)列的理論教學(xué)結(jié)束后可以開設(shè)隊(duì)列的設(shè)計(jì)型實(shí)驗(yàn)和加強(qiáng)理解型實(shí)驗(yàn)題目。表1給出了具體的實(shí)驗(yàn)安排。

學(xué)生必須在相關(guān)內(nèi)容的理論教學(xué)過程中利用自己的課外時(shí)間完成全部基礎(chǔ)型實(shí)驗(yàn)題目,教師根據(jù)學(xué)時(shí)安排選擇1~2道設(shè)計(jì)型實(shí)驗(yàn)題目讓學(xué)生在上機(jī)課上完成,未選擇的題目應(yīng)向?qū)W生提供完整的源代碼和設(shè)計(jì)說明。相關(guān)內(nèi)容的理論教學(xué)結(jié)束后,學(xué)生必須利用自己的課外時(shí)間完成加強(qiáng)理解型實(shí)驗(yàn)題目中的第1題和第2題,剩下兩題可以選做。

(二)教學(xué)方法

因?yàn)槿N類型實(shí)驗(yàn)的要求、難易程度不同,因此在學(xué)生參與形式、教師參與程度、教師參與方式等方面需要區(qū)別對待。表2給出了對三種類型實(shí)驗(yàn)在上述這幾個(gè)方面的設(shè)計(jì)。

基礎(chǔ)型實(shí)驗(yàn)要求每位學(xué)生利用課外時(shí)間獨(dú)立完成,教師全程參與指導(dǎo)。所謂全程參與指導(dǎo)是指從算法基本思想到算法實(shí)現(xiàn)的各個(gè)環(huán)節(jié)(包括編程技巧、程序調(diào)試與測試等)都要參與指導(dǎo)。參與方式多種多樣,例如利用QQ等即時(shí)通訊工具進(jìn)行指導(dǎo),約定時(shí)間和地點(diǎn)進(jìn)行答疑,等等。

設(shè)計(jì)型實(shí)驗(yàn)要求每位學(xué)生在上機(jī)課上獨(dú)立完成,教師前期參與指導(dǎo)。所謂前期參與指導(dǎo)是指教師參與學(xué)生在算法設(shè)計(jì)環(huán)節(jié)的討論,教師可以給出提示,同時(shí)鼓勵(lì)學(xué)生設(shè)計(jì)不同的算法。參與方式是面對面的交流。

加強(qiáng)理解型實(shí)驗(yàn)要求每位學(xué)生利用課外時(shí)間獨(dú)立完成,教師后期參與指導(dǎo)。所謂后期參與指導(dǎo)是指教師在收齊學(xué)生提交的源碼和設(shè)計(jì)報(bào)告后,對其進(jìn)行分析總結(jié),并將總結(jié)結(jié)果以班級為單位采用面對面的方式反饋給學(xué)生。

(三)考核方法

對三種類型的實(shí)驗(yàn)采用不同的考核辦法。表3給出了這方面的設(shè)計(jì)。

對基礎(chǔ)型實(shí)驗(yàn)不做專門考核的原因是學(xué)生基礎(chǔ)型實(shí)驗(yàn)完成的好壞會(huì)直接影響設(shè)計(jì)型實(shí)驗(yàn)和加強(qiáng)理解型實(shí)驗(yàn)的完成,因此對其他兩種類型實(shí)驗(yàn)的考核間接考核了基礎(chǔ)型實(shí)驗(yàn)。

對設(shè)計(jì)型實(shí)驗(yàn)的考核分兩個(gè)部分:一是本次上機(jī)課上實(shí)驗(yàn)的完成情況,包括程序是否調(diào)試成功、程序的運(yùn)行結(jié)果是否正確,代碼編寫的質(zhì)量等;二是本次上機(jī)課結(jié)束后提交的實(shí)驗(yàn)報(bào)告的完成情況,包括內(nèi)容是否完成、書寫是否規(guī)范等。

對加強(qiáng)理解型實(shí)驗(yàn)的考核主要是考核學(xué)生提交的源代碼和設(shè)計(jì)報(bào)告的完成質(zhì)量。

設(shè)計(jì)型實(shí)驗(yàn)的成績占總實(shí)驗(yàn)成績的70%,加強(qiáng)理解型實(shí)驗(yàn)的成績占總實(shí)驗(yàn)成績的30%。

四、結(jié)語

數(shù)據(jù)結(jié)構(gòu)是一門理論性和實(shí)踐性很強(qiáng)的課程,其理論教學(xué)環(huán)節(jié)與實(shí)驗(yàn)教學(xué)環(huán)節(jié)相輔相成。棧和隊(duì)列是兩種重要的線性結(jié)構(gòu),為了提高它們的教學(xué)效果,增強(qiáng)實(shí)驗(yàn)教學(xué)對其理論教學(xué)的促進(jìn)作用,本文提出了一種棧和隊(duì)列的實(shí)驗(yàn)教學(xué)方案。該方案的設(shè)計(jì)思路同樣適用于其他數(shù)據(jù)結(jié)構(gòu)或課程的實(shí)驗(yàn)教學(xué)方案設(shè)計(jì)。

參考文獻(xiàn):

[1]朱金秀,金紀(jì)東,周妍,等.實(shí)踐教學(xué)與就業(yè)能力培養(yǎng)相融合的研究與探索[J].實(shí)驗(yàn)室研究與探索,2011,30(4):105-107.

[2]榮瑞芬,閆文杰,李京霞,等.實(shí)踐教學(xué)課程考核評價(jià)模式探索[J].實(shí)驗(yàn)技術(shù)與管理,2011,28(3):232-234.

[3]張純?nèi)?,施曉?問題與案例驅(qū)動(dòng)的課內(nèi)實(shí)踐教學(xué)分級模式探索[J].實(shí)驗(yàn)室研究與探索,2012,31(1):145-148.

[4]教育部高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會(huì).高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)人才專業(yè)能力構(gòu)成與培養(yǎng)[M].北京:機(jī)械工業(yè)出版社,2010:143-147.

[5]董麗薇.數(shù)據(jù)結(jié)構(gòu)課程教學(xué)方法的改進(jìn)[J].沈陽師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,30(2):307-309.

[6]劉城霞,董宛,蔡英.數(shù)據(jù)結(jié)構(gòu)中基本教學(xué)案例的研究[J].計(jì)算機(jī)教育,2010,(03):144-146.

[7]韓建民,鐘發(fā)榮,趙相福,等.基于ACM-ICPC訓(xùn)練模式的數(shù)據(jù)結(jié)構(gòu)實(shí)踐教學(xué)探討[J].計(jì)算機(jī)教育,2013,(10):103-107.

[8]沈華.數(shù)據(jù)結(jié)構(gòu)、算法和程序之間關(guān)系的探討[J].計(jì)算機(jī)教育,2013,(04):58-61.

[9]沈華.數(shù)據(jù)結(jié)構(gòu)入門教學(xué)中的實(shí)例法[J].計(jì)算機(jī)教育,2013,(24):64-66.

[10]沈華.數(shù)據(jù)結(jié)構(gòu)課內(nèi)實(shí)踐教學(xué)方案[J].實(shí)驗(yàn)室研究與探索,2013,32(10):396-400.

篇10

關(guān)鍵詞:課程融合;做中學(xué);項(xiàng)目驅(qū)動(dòng)

中圖分類號:G642

文獻(xiàn)標(biāo)識碼:B

1引言

“面向?qū)ο蟪绦蛟O(shè)計(jì)”和“數(shù)據(jù)結(jié)構(gòu)”是信息學(xué)科相關(guān)專業(yè)本科生的必修課程,也是專業(yè)基礎(chǔ)課程?!懊嫦?qū)ο蟪绦蛟O(shè)計(jì)”課程通過全面、系統(tǒng)地介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念、分析方法、設(shè)計(jì)方法、基本語法和編程方法,使學(xué)生能深刻理解和領(lǐng)會(huì)面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)和風(fēng)格,類的封裝性、繼承性和多態(tài)性與程序的安全性、結(jié)構(gòu)性和靈活多樣性之間的關(guān)系,進(jìn)而掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)方法和編程基礎(chǔ),并具備解決一般程序設(shè)計(jì)問題的能力;“數(shù)據(jù)結(jié)構(gòu)”課程有助于學(xué)生更有效地組織數(shù)據(jù)、設(shè)計(jì)高效的算法、完成高質(zhì)量的程序以滿足錯(cuò)綜復(fù)雜的實(shí)際需要,強(qiáng)調(diào)數(shù)據(jù)的組織方式和解決問題的思想。

在實(shí)際的教學(xué)過程中,學(xué)生對這兩門課程的掌握和運(yùn)用不盡人意。一方面,相當(dāng)部分學(xué)生雖然學(xué)過了“面向?qū)ο蟪绦蛟O(shè)計(jì)語言”課程,但在“數(shù)據(jù)結(jié)構(gòu)”課程中卻難以利用面向?qū)ο蟮乃枷朐O(shè)計(jì)和實(shí)現(xiàn)相關(guān)的數(shù)據(jù)結(jié)構(gòu)和算法,影響了學(xué)生對數(shù)據(jù)結(jié)構(gòu)課程知識的掌握;另一方面,數(shù)據(jù)結(jié)構(gòu)和算法是計(jì)算機(jī)科學(xué)的核心問題,很多學(xué)生在學(xué)習(xí)的過程中沒有意識到這一點(diǎn),以至于到了實(shí)際項(xiàng)目中不知道運(yùn)用所學(xué)的“數(shù)據(jù)結(jié)構(gòu)”知識來解決實(shí)際問題。

2問題分析

“面向?qū)ο蟪绦蛟O(shè)計(jì)”和“數(shù)據(jù)結(jié)構(gòu)”課程作為非常重要的專業(yè)基礎(chǔ)課,各高校在課時(shí)分配和課程建設(shè)方面都非常重視,出現(xiàn)上述問題的原因主要是課程設(shè)置和教學(xué)方式上存在問題。

在現(xiàn)代教學(xué)體系中,從抽象數(shù)據(jù)類型和面向?qū)ο笥^點(diǎn)來討論數(shù)據(jù)結(jié)構(gòu)已經(jīng)成為一種主流,使得“面向?qū)ο蟪绦蛟O(shè)計(jì)”和“數(shù)據(jù)結(jié)構(gòu)”兩門課程構(gòu)成了強(qiáng)相關(guān)的課程。但在當(dāng)前的實(shí)際教學(xué)中,這兩門課程被一直被設(shè)定為相互獨(dú)立的課程,課程間的教學(xué)出現(xiàn)了相互脫節(jié)現(xiàn)象,而且這種

現(xiàn)象在許多高校的教學(xué)中普遍存在。

在實(shí)踐環(huán)節(jié)上,由于課程設(shè)置上的相對獨(dú)立,也使得兩門課程在實(shí)踐教學(xué)方面有相當(dāng)?shù)闹貜?fù),雖然總體的實(shí)踐教學(xué)學(xué)時(shí)很多,但各自側(cè)重點(diǎn)在實(shí)踐教學(xué)中沒有有效地體現(xiàn),使得學(xué)生“事倍功半”,收效甚微。課程中實(shí)驗(yàn)項(xiàng)目過于單一和相對獨(dú)立,也使得實(shí)踐環(huán)節(jié)與實(shí)際項(xiàng)目聯(lián)系過于松散,學(xué)生運(yùn)用所學(xué)知識解決實(shí)際問題的能力和實(shí)際工程能力很難得到鍛煉,也難以培養(yǎng)軟件開發(fā)中所必須的團(tuán)隊(duì)合作精神。

3課程改革方案及實(shí)施

針對目前“面向?qū)ο蟪绦蛟O(shè)計(jì)”和“數(shù)據(jù)結(jié)構(gòu)”這兩門課程教學(xué)中存在的問題,我們將這兩門課程進(jìn)行有機(jī)結(jié)合,探索采用教師指導(dǎo)下的以項(xiàng)目為驅(qū)動(dòng)的“做中學(xué)”教學(xué)方式進(jìn)行教學(xué)。精心設(shè)計(jì)項(xiàng)目,將面向?qū)ο蟮脑O(shè)計(jì)思想、程序設(shè)計(jì)語言和數(shù)據(jù)結(jié)構(gòu)課程教學(xué)內(nèi)容恰當(dāng)?shù)厝谌氲剿O(shè)計(jì)的項(xiàng)目當(dāng)中,有效整合兩門課程中的重疊部分,突出各自的側(cè)重點(diǎn)。面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)采用“做中學(xué)”(Learning By Doing)以及“按需教學(xué)”(Teaching On Demand)的方式進(jìn)行教學(xué),使學(xué)生在具體項(xiàng)目過程當(dāng)中在掌握和熟練運(yùn)用高級語言的特征的同時(shí),深入理解和鞏固相應(yīng)的數(shù)據(jù)結(jié)構(gòu)知識;教學(xué)采用的項(xiàng)目與實(shí)際項(xiàng)目接軌,提高學(xué)生利用所學(xué)知識解決實(shí)際問題的能力;在教學(xué)過程中以項(xiàng)目組的方式組織學(xué)生,培養(yǎng)學(xué)生的團(tuán)隊(duì)合作精神,提高學(xué)生的職業(yè)素養(yǎng)。

3.1課程項(xiàng)目

為了有效整合這兩門基礎(chǔ)課,我們精心設(shè)計(jì)了“Mini數(shù)據(jù)庫”項(xiàng)目,該項(xiàng)目較好地包含了“數(shù)據(jù)結(jié)構(gòu)”中線性表、字符串、二叉樹、索引、查找、排序、文件等章節(jié)的主要內(nèi)容。通過該項(xiàng)目實(shí)現(xiàn)了“數(shù)據(jù)結(jié)構(gòu)”和“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程內(nèi)容的有機(jī)融合。

Mini數(shù)據(jù)庫分為三個(gè)模塊:基本數(shù)據(jù)模塊,數(shù)據(jù)庫內(nèi)核模塊,數(shù)據(jù)庫管理界面模塊。其中,數(shù)據(jù)庫管理界面模塊呈現(xiàn)數(shù)據(jù)庫管理的總界面風(fēng)格及形式,在項(xiàng)目具體實(shí)施過程當(dāng)中,這一塊不作太多要求以免轉(zhuǎn)移項(xiàng)目重點(diǎn),學(xué)生可以只完成控制臺形式界面。

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

數(shù)據(jù)庫內(nèi)核模塊(如圖2所示)主要負(fù)責(zé)對文件中數(shù)據(jù)進(jìn)行讀寫操作,實(shí)現(xiàn)定義表及表的屬性,設(shè)置主鍵和外鍵,定義表之間的關(guān)聯(lián)以及實(shí)現(xiàn)表的更改等功能。

Mini數(shù)據(jù)庫項(xiàng)目所涉及到的數(shù)據(jù)結(jié)構(gòu)基本上基于本科教材中介紹的常用數(shù)據(jù)結(jié)構(gòu),部分?jǐn)?shù)據(jù)結(jié)構(gòu)在課本的基礎(chǔ)上稍做修改便可用于該項(xiàng)目,部分需要對教材所介紹的相應(yīng)數(shù)據(jù)結(jié)構(gòu)進(jìn)行重新設(shè)計(jì)以適于項(xiàng)目。每一個(gè)數(shù)據(jù)結(jié)構(gòu)都有其相關(guān)的代價(jià)和效益權(quán)衡,要完成項(xiàng)目,學(xué)生需要對多種數(shù)據(jù)結(jié)構(gòu)的有效性進(jìn)行評估來決定在什么情況下需要采取哪種數(shù)據(jù)結(jié)構(gòu)。通過該項(xiàng)目我們希望達(dá)到三個(gè)目的:

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

(2) 引入“權(quán)衡(tradeoff)“的概念,在項(xiàng)目中通過分析不同數(shù)據(jù)結(jié)構(gòu)的代價(jià)和效益來討論“權(quán)衡”的概念;

(3) 評估數(shù)據(jù)結(jié)構(gòu)或算法的有效性,在項(xiàng)目過程中引導(dǎo)學(xué)生分析工具箱中哪一種數(shù)據(jù)結(jié)構(gòu)最適合解決項(xiàng)目中的某一問題,這種技術(shù)也使得程序員能夠判斷自己或別人發(fā)明的新數(shù)據(jù)結(jié)構(gòu)的價(jià)值。

3.2教學(xué)方式及實(shí)踐

Mini數(shù)據(jù)庫系統(tǒng)在難度和復(fù)雜度上較傳統(tǒng)實(shí)驗(yàn)高,如何引導(dǎo)學(xué)生在學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)”課程的同時(shí)完成該項(xiàng)目是一個(gè)值得研究的問題。我們的做法是:首先在教師指導(dǎo)下讓學(xué)生全面了解所要完成項(xiàng)目的整體結(jié)構(gòu),在學(xué)習(xí)“數(shù)據(jù)結(jié)構(gòu)”課程的過程中結(jié)合所學(xué)知識逐步完成系統(tǒng)的各個(gè)模塊,最終完成整個(gè)項(xiàng)目。

我們采用集課堂理論教學(xué)、開放實(shí)驗(yàn)、每周討論、網(wǎng)上答疑等多環(huán)節(jié)組成的立體化教學(xué)方式進(jìn)行教學(xué)。

在課堂理論教學(xué)部分,根據(jù)所設(shè)計(jì)的項(xiàng)目我們對教學(xué)內(nèi)容進(jìn)行適當(dāng)調(diào)整,強(qiáng)調(diào)所學(xué)內(nèi)容在項(xiàng)目中的應(yīng)用。完成相關(guān)理論知識的講授后,指導(dǎo)學(xué)生如何運(yùn)用所學(xué)知識解決課程項(xiàng)目中的問題,并且理論教學(xué)中部分內(nèi)容采取“做中教”方式進(jìn)行,教師在現(xiàn)場編寫程序完成教學(xué)任務(wù),幫助學(xué)生克服“編程難”的心理陰影,培養(yǎng)學(xué)生分析問題和解決問題的能力以及養(yǎng)成良好的編程風(fēng)格,該方法深受學(xué)生歡迎。

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

為了克服簡單的“說教”型教學(xué),每一周由指導(dǎo)教師或助教召集開展“每周討論”活動(dòng),學(xué)生以自愿方式參與“每周討論”?!懊恐苡懻摗币詫W(xué)生為主體,由學(xué)生講解他們所設(shè)計(jì)的代碼以及所遇到的問題,特別鼓勵(lì)學(xué)生將上一周在課程項(xiàng)目或課程實(shí)驗(yàn)中所遇到的問題提出來,由參與學(xué)生一起討論問題的解決辦法。為了鼓勵(lì)學(xué)生積極參與 “每周討論”活動(dòng),我們對積極參與討論和提出問題的學(xué)生在平時(shí)成績上予以體現(xiàn),下一步我們將考慮對由學(xué)生評選“每周討論”活動(dòng)積極分子,并給與獎(jiǎng)勵(lì)。

課程網(wǎng)站是課程教學(xué)的有機(jī)組成部分,我們逐步建立了相對完善的課程網(wǎng)站。課程網(wǎng)站在為學(xué)生提供課程資源、課程項(xiàng)目和實(shí)驗(yàn)任務(wù)的同時(shí),為學(xué)生提供了網(wǎng)絡(luò)交流平臺。在“學(xué)習(xí)交流”板塊中,學(xué)生可以提出學(xué)習(xí)中遇到的問題,回答其他學(xué)生的提問。為了及時(shí)解決學(xué)生的提問,我們安排了教師和助教進(jìn)行網(wǎng)絡(luò)值班。為鼓勵(lì)學(xué)生積極提問和回答其他學(xué)生問題,網(wǎng)上“學(xué)習(xí)交流”模塊中設(shè)計(jì)了加分功能,學(xué)生所得分?jǐn)?shù)將作為平時(shí)成績的重要組成部分。

采用上述方式,我們在湖南大學(xué)軟件學(xué)院2004級和2005級本科生中進(jìn)行了試點(diǎn),每次挑選了30多位學(xué)生參加。第一次挑選的學(xué)生在全年級中屬于較為優(yōu)秀的學(xué)生,完成情況非常好,其中兩位同學(xué)進(jìn)入微軟亞洲工程院實(shí)習(xí),并將他們在本課程中完成的項(xiàng)目作為一個(gè)亮點(diǎn)向?qū)嵙?xí)單位介紹;第二次參加的學(xué)生的整體素質(zhì)處于全年級中等水平,也順利完成了整個(gè)項(xiàng)目。在前兩屆學(xué)生成功試點(diǎn)的情況下,目前我們對2006級本科生全面采用上述教學(xué)方式進(jìn)行“數(shù)據(jù)結(jié)構(gòu)”和“面向?qū)ο蟪绦蛟O(shè)計(jì)”兩門課程的教學(xué),通過近一個(gè)學(xué)期的教學(xué),從教學(xué)的效果來看,學(xué)生的動(dòng)手能力整體上較上幾屆學(xué)生有明顯改觀,并且學(xué)生的學(xué)習(xí)積極性也大大提高,90%以上的學(xué)生項(xiàng)目組能夠按照教學(xué)進(jìn)度完成項(xiàng)目內(nèi)容。

參考文獻(xiàn):