国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

數(shù)據(jù)結(jié)構(gòu)Java語言描述課程實(shí)驗(yàn)設(shè)計(jì)

2011-12-31 00:00:00李剛黃同愿張小川
計(jì)算機(jī)教育 2011年13期


  摘要:實(shí)驗(yàn)是數(shù)據(jù)結(jié)構(gòu)Java語言描述課程的重要環(huán)節(jié)。本文在分析并確定課程實(shí)驗(yàn)教學(xué)的主要目標(biāo)基礎(chǔ)上,重點(diǎn)討論在課程實(shí)驗(yàn)中結(jié)合軟件工程思想、面向?qū)ο笳Z言Java的任務(wù)組織、過程設(shè)計(jì)以及保障措施,取得良好效果。
  關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu)課程;實(shí)驗(yàn);設(shè)計(jì);Java;軟件工程
  
  數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)類專業(yè)的核心專業(yè)基礎(chǔ)課之一,主要討論數(shù)據(jù)的合理組織和有效存儲(chǔ)、處理以及算法的正確設(shè)計(jì)、分析和評(píng)價(jià),課程本身概念抽象、方法靈活、強(qiáng)調(diào)邏輯思維能力、難度較大,同時(shí)課程實(shí)踐性強(qiáng),實(shí)驗(yàn)是該課程不可或缺的重要環(huán)節(jié)[1-4]。通常數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn)是由教師將問題描述和基本要求作為實(shí)驗(yàn)題目給出,但又絕不是讓學(xué)生拿到實(shí)驗(yàn)題目就直接上機(jī)進(jìn)行編程調(diào)試,而是要通過在實(shí)驗(yàn)中貫穿軟件工程的方法和原理,嚴(yán)格按照分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試等軟件工程過程并結(jié)合具體的實(shí)現(xiàn)語言來完成實(shí)驗(yàn),培養(yǎng)學(xué)生養(yǎng)成良好的實(shí)驗(yàn)習(xí)慣。下文針對(duì)課程實(shí)驗(yàn)特點(diǎn)和目標(biāo),結(jié)合軟件工程思想、面向?qū)ο笳Z言Java,在課程的實(shí)驗(yàn)組織、過程設(shè)計(jì)、保障等方面進(jìn)行了一些探索。
  1課程實(shí)驗(yàn)特點(diǎn)和目標(biāo)
  由于面向?qū)ο蠓椒ㄒ呀?jīng)成為目前系統(tǒng)開發(fā)和程序設(shè)計(jì)的主流方式,而Java語言是一種目前使用最為廣泛的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,因此不少計(jì)算機(jī)類專業(yè)的數(shù)據(jù)結(jié)構(gòu)課程采用了Java語言描述。作為是一種完全面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,Java在提高程序的復(fù)用性和安全性時(shí),在不同類的資源配置方面,較面向過程的程序設(shè)計(jì)語言有更高層面的要求[3],通過Java語言表現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)、實(shí)現(xiàn)相關(guān)算法是數(shù)據(jù)結(jié)構(gòu)課程的難點(diǎn)之一,這給語言基礎(chǔ)薄弱的學(xué)生完成實(shí)驗(yàn)帶來很大困難,迫切需要在目標(biāo)、過程、方法等各方面精心組織和設(shè)計(jì)實(shí)驗(yàn)。
  如圖1所示,作為課程教學(xué)的重要組成部分,課程實(shí)驗(yàn)的目標(biāo)主要圍繞數(shù)據(jù)結(jié)構(gòu)與算法、軟件分析與設(shè)計(jì)、程序?qū)崿F(xiàn)與驗(yàn)證、抽象邏輯思維等方面展開[4-7],即:①以數(shù)據(jù)結(jié)構(gòu)和算法為核心,幫助學(xué)生加深對(duì)數(shù)據(jù)結(jié)構(gòu)的理解;②以軟件工程思想為基礎(chǔ),反復(fù)練習(xí)包括軟件分析與設(shè)計(jì)在內(nèi)的軟件開發(fā)過程,培養(yǎng)分析問題、解決問題和程序設(shè)計(jì)的能力;③以面向?qū)ο蟮腏ava程序設(shè)計(jì)語言為工具,提高學(xué)生利用Java語言實(shí)現(xiàn)和驗(yàn)證算法的能力;④在理解掌握數(shù)據(jù)結(jié)構(gòu)、應(yīng)用軟件工程思想、熟練使用Java語言的同時(shí),還要培養(yǎng)嚴(yán)密的抽象邏輯思維能力。
  上述實(shí)驗(yàn)?zāi)繕?biāo)師生都提出了更高的要求,為了更好地達(dá)到上述目標(biāo),并幫助學(xué)生在學(xué)習(xí)過程中充分發(fā)揮主觀能動(dòng)作用,圍繞課程在數(shù)據(jù)結(jié)構(gòu)、軟件開發(fā)、程序?qū)崿F(xiàn)、邏輯思維各個(gè)方面的目標(biāo),進(jìn)行了課程實(shí)驗(yàn)的設(shè)計(jì),主要包括切實(shí)可行的實(shí)驗(yàn)任務(wù)組織、科學(xué)合理的實(shí)驗(yàn)過程設(shè)計(jì)、結(jié)合多種方法的嚴(yán)格過程保障等方面,如圖2所示。
  2實(shí)驗(yàn)任務(wù)組織
  根據(jù)課程實(shí)驗(yàn)特點(diǎn)和目標(biāo),對(duì)實(shí)驗(yàn)任務(wù)進(jìn)行了精心組織,主要是針對(duì)不同基礎(chǔ)和層次的學(xué)生進(jìn)行了任務(wù)的劃分,如圖3所示。
  2.1基本任務(wù)
  對(duì)于所有的學(xué)生,不管其基礎(chǔ)或?qū)哟稳绾?,都必須完成一定的基本任?wù),那就是用程序驗(yàn)證各種邏輯結(jié)構(gòu)的基本實(shí)現(xiàn)和算法,在實(shí)驗(yàn)的總體結(jié)構(gòu)中實(shí)現(xiàn)函數(shù)的編寫、測(cè)試、調(diào)試、驗(yàn)證,通過這一驗(yàn)證過程達(dá)到加深理解各種數(shù)據(jù)結(jié)構(gòu)和算法、掌握基本教學(xué)內(nèi)容的目的,這也是傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn)所要求的任務(wù)。
  2.2基礎(chǔ)強(qiáng)化
  部分學(xué)生學(xué)習(xí)基礎(chǔ)較差,特別是Java語言的編程能力不足,對(duì)類、接口、封裝、多態(tài)、方法調(diào)用等的認(rèn)識(shí)較模糊,需要在基本的Java語言以及基本的方法功能理解、方法編寫及調(diào)用等方面加強(qiáng)實(shí)驗(yàn),通過對(duì)基本數(shù)據(jù)結(jié)構(gòu)和算法與對(duì)應(yīng)程序的反復(fù)閱讀、編寫、測(cè)試等訓(xùn)練,達(dá)到提高對(duì)Java程序結(jié)構(gòu)、語法以及Java方法在程序設(shè)計(jì)中作用的認(rèn)識(shí)。
  2.3能力提升
  針對(duì)基礎(chǔ)較好、學(xué)習(xí)興趣較濃的學(xué)生,為提供其發(fā)揮能力的空間,有效提高其學(xué)習(xí)興趣,提出一些要求更高、具有一定挑戰(zhàn)性的任務(wù),要求能進(jìn)行分析、設(shè)計(jì)并實(shí)現(xiàn)、測(cè)試,包括:完成比教材里典型基本功能更強(qiáng)的拓展功能,開拓學(xué)生的思路,如統(tǒng)計(jì)線性表中給定值的元素個(gè)數(shù);使用已學(xué)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)完成一些擴(kuò)展任務(wù),提高學(xué)生分析問題、解決問題的能力,如統(tǒng)計(jì)二叉樹的結(jié)點(diǎn)個(gè)數(shù);靈活應(yīng)用編寫的方法,實(shí)現(xiàn)不同的功能要求,培養(yǎng)學(xué)生對(duì)實(shí)驗(yàn)總體結(jié)構(gòu)配置、方法外特性的認(rèn)識(shí),如利用隊(duì)列和堆棧實(shí)現(xiàn)單鏈表的逆序排列。
  總之,在課程實(shí)驗(yàn)組織中,做到有對(duì)整體結(jié)構(gòu)加以介紹的說明;有給學(xué)生完成實(shí)驗(yàn)的思路提示;對(duì)有一定難度的任務(wù)還給出具有參考價(jià)值的實(shí)現(xiàn)作為參照。這樣,根據(jù)課程實(shí)驗(yàn)?zāi)繕?biāo)和學(xué)生的基礎(chǔ)、興趣設(shè)計(jì)客觀、可行的實(shí)驗(yàn)要求和過程,符合人們認(rèn)識(shí)事物的特點(diǎn),避免了因?yàn)橐箅y度太大挫傷學(xué)生的學(xué)習(xí)熱情。
  3實(shí)驗(yàn)過程設(shè)計(jì)
  如果僅僅依靠傳統(tǒng)的驗(yàn)證型實(shí)驗(yàn),學(xué)生只是將課本中算法的對(duì)應(yīng)程序敲入計(jì)算機(jī),運(yùn)行一下程序、驗(yàn)證一下結(jié)論而已,基本上沒有涉及到問題思考、分析分析、總體結(jié)構(gòu)設(shè)計(jì)、程序設(shè)計(jì)等軟件工程所強(qiáng)調(diào)的工作,而如果教師沒有嚴(yán)格要求、反復(fù)強(qiáng)調(diào)、嚴(yán)格考核,多數(shù)學(xué)生都不做預(yù)習(xí)準(zhǔn)備工作,更不用說養(yǎng)成分析、設(shè)計(jì)、比較和總結(jié)的習(xí)慣,結(jié)果是學(xué)生來作實(shí)驗(yàn)了,但不了解實(shí)驗(yàn)的目標(biāo)、流程、問題產(chǎn)生的原因,實(shí)驗(yàn)效果、課程學(xué)習(xí)效果大打折扣。
  3.1實(shí)驗(yàn)過程的規(guī)范
  首先嚴(yán)格規(guī)范實(shí)驗(yàn)流程,讓學(xué)生反復(fù)體會(huì)從接受任務(wù)到分析、設(shè)計(jì)、編碼、測(cè)試的軟件開發(fā)過程[5]。在最初的兩三個(gè)實(shí)驗(yàn)時(shí),由教師根據(jù)實(shí)驗(yàn)題目指導(dǎo)學(xué)生一步一步完成圖4所示內(nèi)容:①問題描述,即實(shí)驗(yàn)要解決問題的描述;②基本要求,即實(shí)驗(yàn)要達(dá)到的具體要求;③測(cè)試數(shù)據(jù),即設(shè)計(jì)能達(dá)到測(cè)試目的的測(cè)試數(shù)據(jù);④算法思想,即描述解決相應(yīng)問題的算法思想;⑤類劃分,即分析問題所需的類,并給出類的邏輯功能描述;⑥源程序,即有充分注釋的參考實(shí)現(xiàn)源程序清單;⑦測(cè)試情況,即程序的測(cè)試情況以及必要的分析和說明。由于數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)尚未要求進(jìn)行較強(qiáng)功能軟件的開發(fā),故上述過程中雖然涉及了軟件工程思想和軟件開發(fā)過程,但一般并不強(qiáng)調(diào)過分詳細(xì)的需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)等步驟,也不必要求提供詳細(xì)的使用手冊(cè)。在隨后的整個(gè)課程實(shí)驗(yàn)過程中,對(duì)學(xué)生嚴(yán)格要求、反復(fù)強(qiáng)調(diào)必須嚴(yán)格遵守圖4的實(shí)驗(yàn)過程,并采用抽查等方式保證其嚴(yán)格執(zhí)行。
  3.2關(guān)注點(diǎn)的分離
  為了將數(shù)據(jù)結(jié)構(gòu)與Java語言、軟件工程有效結(jié)合,要求在課程的實(shí)驗(yàn)過程中也始終與理論教學(xué)中一樣,按圖5所示的三個(gè)典型步驟來解決所遇到的數(shù)據(jù)結(jié)構(gòu)和算法問題:①抽象,即分析問題需求,抽象出一個(gè)解決該問題的適當(dāng)?shù)臄?shù)學(xué)模型(抽象數(shù)據(jù)類型ADT);②接口設(shè)計(jì),即對(duì)應(yīng)地設(shè)計(jì)一個(gè)規(guī)格說明來描述ADT應(yīng)支持的操作,并將這個(gè)規(guī)格說明用Java接口來表示;③實(shí)現(xiàn),即選擇合適的數(shù)據(jù)結(jié)構(gòu)和算法來實(shí)現(xiàn)上述Java接口,最后對(duì)各種不同實(shí)現(xiàn)的代價(jià)進(jìn)行分析和比較。這樣的步驟清楚地區(qū)分了ADT的接口與實(shí)現(xiàn),體現(xiàn)了軟件工程中分離關(guān)注點(diǎn)的重要原則[6],同時(shí)很好地利用了Java語言在抽象、封裝等方面的優(yōu)勢(shì)。
  4實(shí)驗(yàn)保障措施
  通過已有的實(shí)驗(yàn)過程發(fā)現(xiàn),僅有實(shí)驗(yàn)任務(wù)組織和實(shí)驗(yàn)過程設(shè)計(jì)是不夠的,還必須要有良好的動(dòng)手習(xí)慣培養(yǎng)、基本知識(shí)積累以及編程能力提高等作為保障措施,才能較好地達(dá)到所提出的課程實(shí)驗(yàn)?zāi)繕?biāo)。
  4.1動(dòng)手習(xí)慣的培養(yǎng)
  部分學(xué)生沒有動(dòng)手的習(xí)慣,實(shí)踐教學(xué)中應(yīng)注重培養(yǎng)學(xué)生的動(dòng)手習(xí)慣,特別是培養(yǎng)記錄、畫圖、打草稿等基本的動(dòng)手習(xí)慣,避免學(xué)生對(duì)知識(shí)把握不準(zhǔn)、似是而非。如在講解、演示或討論時(shí),讓學(xué)生跟隨教師動(dòng)手在草稿紙上畫圖、記錄,講解完立即就剛剛所學(xué)內(nèi)容的部分關(guān)鍵步驟再抽查學(xué)生重新講解,并要求輔以圖、表等(當(dāng)然抽查也可以在下一次課進(jìn)行),如果存在問題可以由其他同學(xué)糾正,最后由教師進(jìn)一步分析、總結(jié),讓學(xué)生深刻體會(huì)動(dòng)手習(xí)慣對(duì)知識(shí)學(xué)習(xí)所起的鞏固作用。
  
  4.2簡(jiǎn)單知識(shí)的積累
  部分學(xué)生不注重積累那些功能簡(jiǎn)單的小算法,實(shí)踐教學(xué)中教師應(yīng)注重培養(yǎng)學(xué)生對(duì)簡(jiǎn)單知識(shí)的理解、記憶、積累,經(jīng)常抽查,在面對(duì)那些較為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和算法時(shí),充分分析、分解其中涉及到的基本知識(shí)點(diǎn)之間、算法之間的聯(lián)系,提示學(xué)生注意類的小型化、原子化,只有長(zhǎng)期注重對(duì)基本知識(shí)點(diǎn)的理解、記憶和積累,才能避免遇到問題時(shí)無從下手,避免理論與實(shí)踐脫節(jié)。
  4.3編程能力的提高
  由于前導(dǎo)課程如C語言、Java等掌握不好、認(rèn)識(shí)不深、基礎(chǔ)不牢,不少學(xué)生編程能力較弱,缺乏把數(shù)據(jù)結(jié)構(gòu)和算法轉(zhuǎn)化成代碼實(shí)現(xiàn)的能力,部分學(xué)生甚至不能把一些簡(jiǎn)單的算法轉(zhuǎn)換成完整的程序,以及缺乏基本的排錯(cuò)能力,都大大影響了這些學(xué)生學(xué)習(xí)這門課的積極性和效果。
  為了使實(shí)驗(yàn)過程清晰并降低實(shí)現(xiàn)的難度、提高可操作性,要求學(xué)生一開始所設(shè)計(jì)的ADT不一定功能很完備,只要具有那些典型的、能初步表現(xiàn)問題需求的基本功能即可,隨著上述步驟的一輪操作結(jié)束,根據(jù)問題的需求,進(jìn)一步完善現(xiàn)有的ADT及其實(shí)現(xiàn)。讓學(xué)生既在運(yùn)用中逐步體會(huì)了軟件工程原理和應(yīng)用,又對(duì)通過不斷運(yùn)用Java的基本知識(shí),提高了編程能力。
  另外,加強(qiáng)現(xiàn)場(chǎng)指導(dǎo)、交流、溝通,及時(shí)發(fā)現(xiàn)學(xué)生的困難,有針對(duì)性地幫助學(xué)生提高認(rèn)識(shí)、解決問題,以及實(shí)驗(yàn)完成后進(jìn)行分析總結(jié),集中討論實(shí)驗(yàn)中的一些普遍問題,都是提升實(shí)驗(yàn)效果的有力措施。
  5結(jié)語
  基于實(shí)驗(yàn)在數(shù)據(jù)結(jié)構(gòu)教學(xué)中的重要地位,精心的任務(wù)組織、科學(xué)的過程設(shè)計(jì)和嚴(yán)格的保障措施是十分必要的。一段時(shí)間的運(yùn)行表明,上述做法對(duì)于促進(jìn)學(xué)生在學(xué)習(xí)過程中充分發(fā)揮主觀能動(dòng)作用,增強(qiáng)對(duì)數(shù)據(jù)對(duì)象特征的理解、數(shù)據(jù)組織方法的掌握、軟件開發(fā)過程的熟悉、程序?qū)崿F(xiàn)技能的培養(yǎng)以及抽象邏輯思維能力的提高等方面都起到了積極的作用。
  
  參考文獻(xiàn):
  [1] 楊紅賓. 數(shù)據(jù)結(jié)構(gòu)課程改革探討[J]. 教育

阿坝| 南丹县| 海淀区| 汤原县| 太湖县| 青海省| 海安县| 南丹县| 元江| 莱州市| 石泉县| 盘锦市| 沅陵县| 盐池县| 海淀区| 故城县| 清河县| 高阳县| 滁州市| 滕州市| 淮北市| 江城| 宁陕县| 得荣县| 尉氏县| 龙江县| 清徐县| 洛隆县| 南乐县| 静海县| 孝感市| 巩留县| 西丰县| 西华县| 皮山县| 富裕县| 应城市| 绥江县| 赫章县| 吉首市| 桐乡市|