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

?

Java語言實(shí)驗(yàn)教學(xué)改革探討

2009-06-20 08:45
計(jì)算機(jī)教育 2009年10期

陳 昊 明 仲

文章編號:1672-5913(2009)10-0148-03

摘要:針對Java語言實(shí)驗(yàn)課程的教學(xué)現(xiàn)狀,本文探討了該課程實(shí)驗(yàn)教學(xué)方面的改革。通過在課程中引入敏捷方法和自動(dòng)單元測試,來激發(fā)學(xué)生的學(xué)習(xí)興趣,提高學(xué)生的編程能力、溝通能力和團(tuán)隊(duì)合作能力,改善學(xué)生編寫程序的質(zhì)量。

關(guān)鍵詞:Java;敏捷方法;結(jié)對編程

中圖分類號:G642

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

1引言

Java自1995年由Sun公司正式推出,就迅速成為全球主流與應(yīng)用廣泛的開發(fā)語言,其跨平臺(tái)的技術(shù)優(yōu)勢為網(wǎng)絡(luò)計(jì)算帶來了劃時(shí)代的變革,從一種編程語言發(fā)展成為全球第一大領(lǐng)先開發(fā)平臺(tái)。為了適用人才培養(yǎng)的需要,各高校紛紛開設(shè)了Java程序設(shè)計(jì)語言的課程,該語言也逐漸成為計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)和軟件工程專業(yè)學(xué)生需掌握的一門面向?qū)ο蟪绦蛟O(shè)計(jì)語言。我校軟件工程專業(yè)培養(yǎng)方案中將該課程安排在“面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)”之后開設(shè),即二年級上學(xué)期。在實(shí)際的教學(xué)過程中,該課程教學(xué)大多仍沿用傳統(tǒng)的教學(xué)模式,主要強(qiáng)調(diào)個(gè)體的動(dòng)手實(shí)踐,而忽視了溝通與交互,導(dǎo)致學(xué)生學(xué)習(xí)興趣不高、理解不夠深入、開發(fā)效率較低。且大多數(shù)同學(xué)習(xí)慣于編寫“基本正確的程序”,而不是致力于編寫“盡量正確的程序”,結(jié)果所編程序的質(zhì)量不高。

敏捷方法首次提出來是在上世紀(jì)90年代后期,其目的是為了在需求和技術(shù)不斷變化的過程中實(shí)現(xiàn)快速的軟件開發(fā)。敏捷的價(jià)值觀是:個(gè)體和交互勝過過程和工具;可以工作的軟件勝過面面俱到的文檔;客戶合作勝過合同談判;響應(yīng)變化勝過遵循計(jì)劃。敏捷方法強(qiáng)調(diào)應(yīng)加強(qiáng)開發(fā)人員之間的交互,加強(qiáng)與客戶的交互,注重有可工作的軟件和完善、不過分的文檔,積極、快速應(yīng)對客戶的需求變化,而不是回避。近年來,敏捷方法已經(jīng)受到工業(yè)界和學(xué)術(shù)界的越來越多的關(guān)注。其中一些方法,如結(jié)對編程等已經(jīng)被實(shí)踐證明能有效提高軟件設(shè)計(jì)質(zhì)量,并應(yīng)用于程序設(shè)計(jì)和軟件開發(fā)等課程的教學(xué)過程中,取得良好的教學(xué)效果。

在分析Java語言課程的特點(diǎn)和學(xué)生的實(shí)踐背景的基礎(chǔ)上,針對該課程傳統(tǒng)實(shí)驗(yàn)教學(xué)過程中的一些局限性,通

過引入敏捷方法和自動(dòng)單元測試,來提高學(xué)生動(dòng)手實(shí)踐能力,取得了較好的教學(xué)效果。

2本課程特點(diǎn)

“Java語言程序設(shè)計(jì)”是軟件工程專業(yè)的一門非常重要的專業(yè)選修課,主要講授面向?qū)ο蟮腏ava語言程序設(shè)計(jì)及應(yīng)用。在選修本課程之前,學(xué)生已經(jīng)修過“面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)”,具有C++的基本知識,并對面向?qū)ο笏枷胗幸欢ǖ牧私?。通過本課程的學(xué)習(xí),學(xué)生能夠在一定程度上掌握面向?qū)ο蟮乃季S方式,理解Java語言特有的一些屬性,能夠明白Java語言與其他面向?qū)ο缶幊陶Z言的區(qū)別,使用Java語言有能力編寫有實(shí)際意義的應(yīng)用程序。但是在實(shí)際的教學(xué)過程中,學(xué)生學(xué)習(xí)興趣不大,編程的質(zhì)量不高。其主要原因有:

(1) 學(xué)生雖然已經(jīng)學(xué)過C++,但是不夠熟練,且對面向?qū)ο笏枷肜斫獠簧睿趯W(xué)習(xí)Java語言的初期有不少疑惑。如經(jīng)常有同學(xué)提出“Java 到底有什么用?”,“我已經(jīng)學(xué)了C++,為什么還要學(xué)Java?”以及“Java怎么感覺與C++有很大的不同?”等問題。如果不能及時(shí)解決學(xué)生的疑惑,將導(dǎo)致學(xué)生在隨后的學(xué)習(xí)過程中缺乏興趣,散失信心。因此在這個(gè)階段,教師在實(shí)驗(yàn)教學(xué)中應(yīng)通過比較Java與C++的異同來展示Java的基本語法和一些特性,使學(xué)生充分了解學(xué)習(xí)Java的必要性,從而激發(fā)學(xué)習(xí)興趣。

(2) 在教學(xué)過程中,主要強(qiáng)調(diào)通過實(shí)例來展示Java的特性,并要求學(xué)生模仿實(shí)例來使用這些特性編寫應(yīng)用程序,但是忽略了程序的質(zhì)量,甚至有些實(shí)例代碼本身就不夠嚴(yán)謹(jǐn)。因此學(xué)生所編寫程序的質(zhì)量很難得到保證。

(3) 學(xué)生獨(dú)立性較強(qiáng),不善于團(tuán)隊(duì)合作和溝通。在之前的程序設(shè)計(jì)等先修課程中主要是培養(yǎng)學(xué)生獨(dú)立的邏輯思考和編程能力,而忽視了溝通、交互與團(tuán)隊(duì)合作。

從以往選修該課程的學(xué)生反饋來看,不少同學(xué)反映對Java語言掌握得不好,并且在今后兩年的學(xué)習(xí)和實(shí)踐過程中很少采用Java技術(shù)。然而這將導(dǎo)致學(xué)生在今后就業(yè)時(shí)失去不少機(jī)會(huì)。因此,在Java語言實(shí)驗(yàn)教學(xué)中,應(yīng)該對教學(xué)內(nèi)容和教學(xué)手段進(jìn)行適當(dāng)調(diào)整。通過引入結(jié)對編程這一敏捷方法和自動(dòng)單元測試,來培養(yǎng)學(xué)生實(shí)際編程能力和溝通能力。

3實(shí)驗(yàn)教學(xué)改革及實(shí)施過程

通過分析Java語言課程的特點(diǎn)和敏捷方法的主要特征,在實(shí)驗(yàn)教學(xué)環(huán)節(jié)中引入敏捷方法有助于綜合培養(yǎng)學(xué)生的編程能力、溝通能力和團(tuán)隊(duì)合作能力,改善學(xué)生所編寫程序的質(zhì)量。因此,首先,教師通過比較Java與C++的異同來展示Java的基本語法和一些特性,使學(xué)生充分了解學(xué)習(xí)Java的必要性,從而激發(fā)學(xué)習(xí)興趣,加快入門過程。從中期開始,在實(shí)驗(yàn)教學(xué)中,教師要求學(xué)生以結(jié)對編程的形式完成實(shí)驗(yàn),并全程指導(dǎo)如何有效地應(yīng)用結(jié)對編程。在后期,教師介紹JUnit測試框架,并要求在實(shí)驗(yàn)中編寫測試代碼,從而進(jìn)行自動(dòng)單元測試。

具體實(shí)施包括以下三個(gè)環(huán)節(jié):利用對比加快入門、引入結(jié)對編程和自動(dòng)單元測試。

3.1利用對比加快入門

對比的目的是理解隱藏在程序語言背后的設(shè)計(jì)哲理,使我們知道對于一個(gè)問題的解決,為什么在此語言中是這樣一種解決方案,而在彼語言中又是那樣一種解決方案?這樣思考會(huì)讓我們更好地掌握編程語言的精髓。

通過與C++的對比,學(xué)生可以更好地理解Java的語法特點(diǎn)和設(shè)計(jì)原理,明白Java是如何做的,并進(jìn)一步知道Java“為什么”這么做。通過對比性實(shí)驗(yàn)來學(xué)習(xí),不僅效率很高,而且充滿樂趣,加深學(xué)生對Java的理解。

在初期,教師并未引入結(jié)對編程,因?yàn)閷W(xué)生剛開始接觸Java,對語言不熟悉,而且在此期間布置的實(shí)驗(yàn)題目較簡單。如果匆忙要求學(xué)生采用結(jié)對編程,可能操之過急,無法體現(xiàn)其優(yōu)越性。所以,在實(shí)驗(yàn)教學(xué)初期,要求學(xué)生獨(dú)立完成實(shí)驗(yàn),而且教師在實(shí)驗(yàn)過程中全程指導(dǎo),糾正學(xué)生在使用Java編程時(shí)的一些不良習(xí)慣,幫助他們形成較好的編程風(fēng)格。

3.2引入結(jié)對編程

結(jié)對編程是敏捷方法中最重要的實(shí)踐之一。結(jié)對編程的通俗含義指的是兩個(gè)程序員在同一臺(tái)計(jì)算機(jī)上進(jìn)行編程活動(dòng),一個(gè)同伴使用鼠標(biāo)和鍵盤來編碼,另一個(gè)同伴關(guān)注整體?;旧?,所有的開發(fā)環(huán)節(jié)都一齊肩并肩地、平等地、互補(bǔ)地進(jìn)行,它的核心在于兩名成員緊密合作,時(shí)刻交流。采用結(jié)對編程進(jìn)行合作的學(xué)生能更有效地交流,相互學(xué)習(xí)和傳遞經(jīng)驗(yàn);能提供更好的設(shè)計(jì)質(zhì)量和代碼質(zhì)量;能訓(xùn)練更強(qiáng)的問題解決能力。同時(shí),采取結(jié)對編程的學(xué)生更容易樹立信心,從工作中獲取更多的滿足感。

從中期開始,教師在實(shí)驗(yàn)課上要求學(xué)生自由組成結(jié)對來完成實(shí)驗(yàn)內(nèi)容。學(xué)生剛開始感到很新奇,并樂意組成結(jié)對來完成實(shí)驗(yàn),但是在隨后的實(shí)踐過程中,教師發(fā)現(xiàn)了一些問題,并進(jìn)行針對性的指導(dǎo)。

(1) 有些結(jié)對中一直固定由某個(gè)學(xué)生編碼,而在旁的另一個(gè)學(xué)生雖然仍在關(guān)注,但注意力有些不集中。教師立即要求學(xué)生們根據(jù)實(shí)驗(yàn)中上機(jī)題來輪換角色,這樣不至于使某個(gè)學(xué)生因長時(shí)間擔(dān)任某一角色而出現(xiàn)疲憊狀況或產(chǎn)生厭倦情緒,且使得學(xué)生們能得到全面鍛煉的機(jī)會(huì)。

(2) 也有些結(jié)對中出現(xiàn)了一些指責(zé)和埋怨。教師應(yīng)及時(shí)指出,在結(jié)對中,盡量不要用“你的設(shè)計(jì)有問題”或“這個(gè)錯(cuò)誤是你引起的”之類的話語。結(jié)對成員應(yīng)共同承擔(dān)責(zé)任,不能相互指責(zé),兩人意見不同時(shí),可以協(xié)商解決,雙方應(yīng)互相關(guān)心和體諒。

(3) 在個(gè)別結(jié)對中,某位同學(xué)總是處于強(qiáng)勢,而他的搭檔沒有機(jī)會(huì)發(fā)表自己的意見。在這種情況下,教師應(yīng)強(qiáng)調(diào)公平結(jié)對。即使一方比另一方更有經(jīng)驗(yàn),也不要讓另一方感覺自己不重要。在結(jié)對中,每一方都有平等的機(jī)會(huì),表達(dá)自己的觀點(diǎn),雙方對代碼的控制權(quán)是平等的。

此外,在剛開始引入結(jié)對編程的幾周內(nèi),鼓勵(lì)輪換結(jié)對。這樣可以使學(xué)生有機(jī)會(huì)考慮性格融合和技術(shù)互補(bǔ)等因素來調(diào)整結(jié)對。

在實(shí)踐過程中,有不少學(xué)生反映在實(shí)驗(yàn)室進(jìn)行結(jié)對編程時(shí)效果較好,而課后缺乏合適的環(huán)境。針對這種情況,教師建議可以首先在同宿舍的同學(xué)中找到合適的搭檔。另外,可以在學(xué)生的個(gè)人計(jì)算機(jī)中安裝支持分布式協(xié)作開發(fā)的軟件來支持分布式結(jié)對編程。比如,Eclipse通訊框架(Eclipse Communication Framework——ECF)可以作為Eclipse IDE的插件,給使用Eclipse的團(tuán)隊(duì)提供了實(shí)時(shí)通訊和協(xié)作特性。比如P2P(peer-to-peer)文件共享、遠(yuǎn)程打開Eclipse視圖、屏幕截圖共享、以及實(shí)時(shí)共享編輯。該框架還提供一套通訊API和框架,建立在已有協(xié)議(如Google Talk、XMPP、SSH、HTTP/HTTPS、Rendevous、IRC及其他協(xié)議)之上,使得開發(fā)者可以給自己的基于Equinox的插件增加通訊和消息傳遞功能,或者自定義及擴(kuò)展ECF應(yīng)用。組成結(jié)對的學(xué)生使用Eclipse IDE作為Java開發(fā)工具,且安裝了ECF插件后,再配上Google Talk或Skype等即時(shí)通訊工具,就可以進(jìn)行文字、語音以及視頻通訊、屏幕截圖共享、視圖共享,更重要的是可以實(shí)時(shí)共享編輯,可以相互實(shí)時(shí)關(guān)注對方編程,并發(fā)表觀點(diǎn)。

引入結(jié)對編程是為了培養(yǎng)學(xué)生的溝通能力和團(tuán)隊(duì)合作能力,讓學(xué)生在溝通與合作中相互學(xué)習(xí),共同進(jìn)步,從而提高開發(fā)效率。從實(shí)驗(yàn)結(jié)果的質(zhì)量和學(xué)生的反饋來看,結(jié)對編程的引入有利于編程效率的提高、代碼質(zhì)量的明顯改進(jìn)和培養(yǎng)學(xué)生的團(tuán)隊(duì)合作精神。

3.3引入自動(dòng)單元測試

在Java語言實(shí)驗(yàn)教學(xué)實(shí)踐中,許多學(xué)生在程序開發(fā)過程中忽視了程序質(zhì)量。隨著學(xué)習(xí)的深入,實(shí)驗(yàn)布置的編程題目越來越復(fù)雜,學(xué)生們所編寫的程序中所暴露出來的質(zhì)量問題也越來越嚴(yán)重。主要是由于他們對軟件測試不夠重視,沒有針對實(shí)際問題設(shè)計(jì)出足夠全面的測試用例,此外對軟件測試的手段和技術(shù)了解很少,無法為有些代碼設(shè)計(jì)相應(yīng)的測試用例。

針對這一現(xiàn)象,可以通過讓學(xué)生掌握基本的自動(dòng)單元測試技術(shù)來改善程序質(zhì)量?;貧w測試框架JUnit提供了基于API的自動(dòng)測試方法,可以在測試代碼中調(diào)用這個(gè)框架來進(jìn)行斷言檢查,檢查條件是否滿足,并報(bào)告錯(cuò)誤的數(shù)量和類型。在后期,教師在實(shí)驗(yàn)教學(xué)環(huán)節(jié)中介紹如何使用JUnit編寫自動(dòng)測試代碼來進(jìn)行自動(dòng)單元測試。

通過引入自動(dòng)單元測試,學(xué)生們在隨后的實(shí)驗(yàn)中大多采用JUnit框架進(jìn)行單元測試,代碼質(zhì)量較之前有了明顯的提高。

4結(jié)束語

目前,在軟件工程專業(yè)的“Java語言程序設(shè)計(jì)”課程實(shí)驗(yàn)教學(xué)中已經(jīng)進(jìn)行了上述的改革實(shí)踐。通過利用對比學(xué)習(xí)Java,學(xué)生能較快地從C++編程過渡到Java編程,并逐漸對Java語言感興趣。當(dāng)引入結(jié)對編程之一敏捷方法后,學(xué)生普遍反映結(jié)對編程這一方式促進(jìn)了同學(xué)之間的溝通與學(xué)習(xí),激發(fā)了學(xué)習(xí)興趣,提高了編程和團(tuán)隊(duì)合作能力。后期的實(shí)驗(yàn)教學(xué)中所引入的自動(dòng)單元測試增強(qiáng)了學(xué)生們的程序質(zhì)量意識,大大改善了代碼的質(zhì)量。

在實(shí)踐過程也出現(xiàn)了一些個(gè)別現(xiàn)象,比如有極少數(shù)編程能力較強(qiáng)且個(gè)性較孤僻的同學(xué)不愿參與結(jié)對,而且認(rèn)為自己獨(dú)立開發(fā)效率應(yīng)該更高。在今后的實(shí)驗(yàn)教學(xué)實(shí)踐中,針對這些現(xiàn)象,將思考解決辦法,進(jìn)一步完善該改革方案。

參考文獻(xiàn):

[1] 邵奇峰,車戰(zhàn)斌. Java課程教學(xué)方法探討[J]. 計(jì)算機(jī)教育,2008(12):50-52.

[2]Robert C. Martin. Agile Software Development: Principles, Patterns, and Practices[M]. Pearson Education, Inc., 2003.

[3]Armour P. Agile and Offshore[J]. Communications of the ACM, 2007,50(1):13-16.

[4]Kim Man Lui, Keith C.C. Chan, John Teofil Nosek. The Effect of Pairs in Program Design Tasks[J]. IEEE Transactions on Software Engineering,2008,34(2):197-211.

[5]Jeffrey C. Carver, Lisa Henderson, Lulu He, et al. Increased Retention of Early Computer Science and Software Engineering Students using Pair Programming[C]//In Proceedings of 20th Conference on Software Engineering Education & Training (CSEET'07). Washington,DC,USA:IEEE Computer Society. 2007:115-122.

[6]Richard G. Epstein. Getting Students to Think About How Agile Processes can be Made More Secure[C]//In Proceedings of 21st Conference on Software Engineering Education & Training (CSEET'08). Washington,DC,USA:IEEE Computer Society. 2008:51-58.

[7] 俞輝. 計(jì)算機(jī)專業(yè)提高Java語言教學(xué)效果的探索與實(shí)踐[J]. 計(jì)算機(jī)教育,2008(14):48-49.

[8] 劉竹松,李振坤,王文彥. 極限編程在計(jì)算機(jī)本科畢業(yè)設(shè)計(jì)中的應(yīng)用[J]. 計(jì)算機(jī)教育,2007(7):25-27.

[9] 鐘揚(yáng),劉業(yè)政,馬向輝. 小團(tuán)隊(duì)結(jié)對編程實(shí)踐研究和重構(gòu)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(11):160-163.

Exploration on the Experimental Teaching of Java Programming Course

CHEN Hao, MING Zhong

(College of Computer Science and Software Engineering, Shenzhen University, 518060 Shenzhen, China)

Abstract: Considering the current situation in the experimental teaching of Java programming course, this paper proposes to introduce the agile methods and automatic unit test in the experimental teaching for the sake of stimulating the students learning interest, which also improves their programming skills, communication skills, teamwork capability and program quality.

Key words: Java; Agile methods; pair programming

吴忠市| 会泽县| 东海县| 繁昌县| 靖州| 正阳县| 江山市| 梓潼县| 慈溪市| 阆中市| 汾阳市| 大港区| 潜江市| 宜城市| 崇州市| 武安市| 汾阳市| 盖州市| 辛集市| 高陵县| 海丰县| 太和县| 车险| 康定县| 瑞昌市| 滦平县| 福泉市| 木兰县| 嘉峪关市| 腾冲县| 丽水市| 沙湾县| 会昌县| 崇州市| 安庆市| 丹巴县| 房产| 林州市| 黑水县| 泸溪县| 耒阳市|