林葉郁 林亞明
應(yīng)用型本科“Java程序設(shè)計(jì)”課程的教學(xué)改革
林葉郁 林亞明
Java程序設(shè)計(jì)是Java系列課程的基礎(chǔ),其教學(xué)效果的好壞直接決定后續(xù)課程的教學(xué)質(zhì)量。針對(duì)Java知識(shí)點(diǎn)眾多、學(xué)生編程能力和學(xué)習(xí)主動(dòng)性偏薄弱等問題,以培養(yǎng)符合企業(yè)需求的應(yīng)用型人才為目標(biāo),從合理設(shè)置教學(xué)內(nèi)容、改進(jìn)教學(xué)方式、改革考核方式等方面進(jìn)行了探討,以期起到拋磚引玉的作用。
教學(xué)內(nèi)容;教學(xué)方式;考核方式
隨著信息產(chǎn)業(yè)的快速發(fā)展,社會(huì)對(duì)計(jì)算機(jī)人才的需求日益增加。據(jù)IDC統(tǒng)計(jì),在所有軟件開發(fā)類人才的需求中,對(duì)Java工程師的需求量最大。然而這并沒有讓計(jì)算機(jī)及軟件專業(yè)畢業(yè)生的就業(yè)壓力得到緩解,其根本原因是傳統(tǒng)教學(xué)模式的滯后導(dǎo)致了畢業(yè)生實(shí)際的動(dòng)手實(shí)踐能力偏薄弱,與企業(yè)的實(shí)際需要存在差距。
Java程序設(shè)計(jì)作為Java系列課程的基礎(chǔ)課,其教學(xué)效果將直接決定后續(xù)課程的教學(xué)質(zhì)量。如何能在有限的課堂上最大化地激發(fā)學(xué)生對(duì)Java編程的學(xué)習(xí)興趣,提高教學(xué)質(zhì)量,從而為后續(xù)Java高級(jí)課程的教學(xué)打下良好的入門基礎(chǔ),是Java教學(xué)工作者急需研究和解決的問題。作者根據(jù)近幾年的教學(xué)實(shí)踐,從合理設(shè)置教學(xué)內(nèi)容、改進(jìn)教學(xué)方式、改革考核方式等方面對(duì)Java程序設(shè)計(jì)課程的教學(xué)進(jìn)行了探討。
Java程序設(shè)計(jì)課作為Java系列課程的基礎(chǔ)課,根據(jù)一般學(xué)校教學(xué)計(jì)劃,多在大三開設(shè),作為C或C++語言之后的第二門編程語言。該課程的主要教學(xué)目標(biāo)為:(1)實(shí)現(xiàn)學(xué)生從C語言面向過程編程思想向主流面向?qū)ο缶幊?OOP)思想的轉(zhuǎn)變;(2)讓學(xué)生掌握J(rèn)ava編程技能,為JEE或JME高層次軟件開發(fā)打下基礎(chǔ)。為達(dá)到這一目的,首先需要合理安排教學(xué)內(nèi)容。筆者將Java程序設(shè)計(jì)課程知識(shí)點(diǎn)分為三大類:Java基礎(chǔ)、JSE平臺(tái)開發(fā)和Java拓展。表1給出三大類知識(shí)點(diǎn)及其所需課時(shí)安排建議。
表1 Java程序設(shè)計(jì)課程設(shè)置
目前不少教師采用教授C語言的形式來進(jìn)行Java教學(xué),大多精力花在Java語法學(xué)習(xí)中,不太合理。應(yīng)當(dāng)認(rèn)清課程的目標(biāo)是培養(yǎng)學(xué)生面向?qū)ο笏枷牒蛯?shí)際編程能力,進(jìn)而激發(fā)學(xué)習(xí)Java更深層次的應(yīng)用的學(xué)習(xí)主動(dòng)性。本課程課時(shí)安排應(yīng)以Java基礎(chǔ)知識(shí)點(diǎn)授課課時(shí)為底線。如果該專業(yè)學(xué)生還有JSP互聯(lián)網(wǎng)軟件開發(fā)、JEE與中間件之類的后續(xù)課程,則至少要介紹Java基礎(chǔ)和JSE平臺(tái)開發(fā)知識(shí)點(diǎn);如果學(xué)生是主修Java方向的,則最好課時(shí)安排能夠?qū)ava基礎(chǔ)、JSE平臺(tái)開發(fā)和Java拓展的知識(shí)點(diǎn)介紹完。當(dāng)然在課時(shí)安排上,還可以根據(jù)學(xué)生的學(xué)習(xí)能力情況做細(xì)部的微調(diào)。
大學(xué)的程序類課程是系列化的教學(xué),學(xué)生在接觸Java之前大已經(jīng)學(xué)過其他語言類課程,如C或C++語言。這些課程的基本風(fēng)格、語法、程序邏輯是類似的,因此在Java教學(xué)中,對(duì)于這些基本的內(nèi)容不必詳細(xì)講解,通過簡(jiǎn)單的回顧即可,適合把大量的時(shí)間和資源用于更高級(jí)、更專業(yè)內(nèi)容的學(xué)習(xí)上,這樣學(xué)生才能更快地提高自身素質(zhì),加強(qiáng)編程能力。
1.以項(xiàng)目作為教學(xué)案例。
傳統(tǒng)的Java程序設(shè)計(jì)課程教學(xué)中,多數(shù)教師一般嚴(yán)格按照教學(xué)大綱和教材組織教學(xué),雖然能系統(tǒng)完整地講解各章節(jié)的知識(shí)點(diǎn),但由于內(nèi)容比較枯燥,且學(xué)生的學(xué)習(xí)只限于書本上的練習(xí),沒有參與過完整的項(xiàng)目開發(fā),不能把所學(xué)的知識(shí)貫穿在一起,不能建立起整體的編程思想,達(dá)不到軟件業(yè)對(duì)軟件人才的要求。因此,我們?cè)诮虒W(xué)過程中必須改變傳統(tǒng)的以“知識(shí)為本位”的教學(xué)目標(biāo),代之以能培養(yǎng)學(xué)生的主觀能動(dòng)性和創(chuàng)造力為目標(biāo)的教學(xué)方法。
基于項(xiàng)目的教學(xué)法是以建構(gòu)主義理論的指導(dǎo),以項(xiàng)目為支撐的一種新型教學(xué)方式,[1]目前已廣泛應(yīng)用于計(jì)算機(jī)培訓(xùn)機(jī)構(gòu)的教學(xué)。作者在“Java程序設(shè)計(jì)”課程教學(xué)實(shí)踐中,結(jié)合教學(xué)內(nèi)容和教學(xué)對(duì)象的實(shí)際情況,選取實(shí)用趣味、難易適當(dāng)?shù)拈_源項(xiàng)目進(jìn)行教學(xué),極大地提高了學(xué)生的學(xué)習(xí)積極性和主動(dòng)性。例如,在介紹SWING圖形界面編程時(shí),以俄羅斯方塊游戲作為項(xiàng)目案例。由于大部分學(xué)生都對(duì)該游戲熟悉,因此項(xiàng)目需求可以很快帶過,直接進(jìn)入設(shè)計(jì)環(huán)節(jié)。按照軟件工程項(xiàng)目設(shè)計(jì)的流程,首先分析系統(tǒng)的用例場(chǎng)景,接著通過討論概要設(shè)計(jì),自然引出swing繪圖API和鍵盤事件響應(yīng)API的介紹。在深入細(xì)節(jié)之前,通過編寫一個(gè)捕獲用戶鍵盤輸入,并顯示在窗口標(biāo)簽上的簡(jiǎn)單例子,讓學(xué)生對(duì)鍵盤捕獲處理有一個(gè)感性認(rèn)識(shí),再通過編寫一個(gè)簡(jiǎn)單的在窗口上畫彩色矩形圖形的例子,讓學(xué)生了解畫圖API的使用技巧。這樣復(fù)雜的任務(wù)分解為多個(gè)小的任務(wù),每個(gè)任務(wù)關(guān)注一個(gè)知識(shí)點(diǎn),學(xué)生循序漸進(jìn)地掌握每個(gè)任務(wù)的編程知識(shí)和技巧。接口部分介紹完后,接下來通過實(shí)際的用例場(chǎng)景描述,讓學(xué)生思考在實(shí)現(xiàn)俄羅斯方塊游戲過程中需要用到的算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。比如在介紹俄羅斯方塊游戲時(shí),方塊的類型和外觀該如何用數(shù)據(jù)結(jié)構(gòu)表達(dá),可以考慮二維數(shù)組或者稀疏矩陣,每種數(shù)據(jù)結(jié)構(gòu)在Java語言中該如何使用相關(guān)的API表示,結(jié)合算法,討論每種數(shù)據(jù)結(jié)構(gòu)在算法實(shí)現(xiàn)過程中帶來的優(yōu)缺點(diǎn)。這種討論實(shí)際上讓學(xué)生真正體會(huì)設(shè)計(jì)的過程,讓學(xué)生了解設(shè)計(jì)的過程而不是直接擺出代碼結(jié)果,這樣對(duì)學(xué)生的代碼設(shè)計(jì)和編寫能力有極大的提高。
值得注意的是,在實(shí)施項(xiàng)目教學(xué)時(shí),項(xiàng)目的選取至關(guān)重要。須以教學(xué)內(nèi)容為依據(jù),可大可小,既要包含基本的教學(xué)知識(shí)點(diǎn),又能調(diào)動(dòng)學(xué)生解決問題的積極性。作為教師對(duì)知識(shí)點(diǎn)進(jìn)行講解的實(shí)例,所選取的項(xiàng)目必須簡(jiǎn)單和典型,便于學(xué)生對(duì)知識(shí)的遷移;另外,一個(gè)項(xiàng)目要有一定的難度,可促使學(xué)生學(xué)習(xí)和運(yùn)用新的知識(shí)、技能,解決過去從未遇到過的實(shí)際問題。
2.控制學(xué)習(xí)難度階梯曲線,實(shí)現(xiàn)分層次教學(xué)。
在學(xué)生學(xué)習(xí)過程中存在的一個(gè)問題是學(xué)生能夠編寫各種小規(guī)模程序,但是碰到大項(xiàng)目的問題,就無從下手。作者認(rèn)為,由于網(wǎng)絡(luò)上大項(xiàng)目的開發(fā)資料都是靜態(tài)的,沒有展現(xiàn)軟件開發(fā)的動(dòng)態(tài)演進(jìn)的過程,使得學(xué)生缺少較大型軟件項(xiàng)目開發(fā)的實(shí)踐體會(huì)。因此,要在教學(xué)過程中有效地控制學(xué)習(xí)難度階梯曲線,實(shí)現(xiàn)分層次教學(xué)。在Java程序設(shè)計(jì)課程后期,課外布置學(xué)生閱讀影院售票系統(tǒng)的訂票功能的用例規(guī)格表、UML類圖和代碼實(shí)現(xiàn)。由于訂票功能業(yè)務(wù)邏輯相對(duì)簡(jiǎn)單,用例規(guī)格表和UML類圖都很直觀,學(xué)生可以容易地體會(huì)到需求演化為設(shè)計(jì)最后到代碼實(shí)現(xiàn)的一個(gè)過程,接下來再提供給學(xué)生影片信息管理功能的用例規(guī)格表和UML類圖,不提供代碼實(shí)現(xiàn),要求學(xué)生根據(jù)這些文檔給其具體的代碼實(shí)現(xiàn)。由于前面有了訂票功能的演繹展現(xiàn),學(xué)生就會(huì)較容易地實(shí)現(xiàn)影片信息管理的功能要求。最后再將影院售票系統(tǒng)的所有用例規(guī)格表提供給學(xué)生,讓他們根據(jù)自己的能力去實(shí)現(xiàn)功能,完成得越多,成績(jī)?cè)礁?,在這個(gè)開發(fā)過程中,學(xué)生可以逐步掌握軟件項(xiàng)目的開發(fā)技巧。
3.任務(wù)驅(qū)動(dòng)和小組協(xié)作學(xué)習(xí)相結(jié)合的實(shí)驗(yàn)教學(xué)方式。
任務(wù)驅(qū)動(dòng)教學(xué)法是一種能夠很好地應(yīng)用于以實(shí)驗(yàn)性、實(shí)踐性與操作性較強(qiáng)的教學(xué)內(nèi)容的教學(xué)方法。協(xié)作學(xué)習(xí)不僅能提高學(xué)生學(xué)習(xí)的主動(dòng)性和對(duì)學(xué)習(xí)的自我控制,也促進(jìn)了學(xué)生間良好的人際合作關(guān)系,促進(jìn)了學(xué)生心理品質(zhì)的發(fā)展和社會(huì)技能的進(jìn)步。把任務(wù)驅(qū)動(dòng)和小組協(xié)作學(xué)習(xí)相結(jié)合作為實(shí)驗(yàn)教學(xué)方式,不僅提高了學(xué)生的自主學(xué)習(xí)能力,更有利于創(chuàng)新能力和動(dòng)手實(shí)踐能力的培養(yǎng)。[2]當(dāng)然,在這種實(shí)驗(yàn)教學(xué)方式中,要注意以下幾點(diǎn)。
(1)教學(xué)任務(wù)的設(shè)計(jì)。教師可以選擇一些具有真實(shí)問題情境的項(xiàng)目(根據(jù)教學(xué)情況和學(xué)生實(shí)際情況進(jìn)行一定的修改簡(jiǎn)縮)作為學(xué)生上機(jī)的大任務(wù)。同時(shí),根據(jù)實(shí)驗(yàn)進(jìn)度安排,可以將一個(gè)大任務(wù)分解成幾個(gè)小任務(wù),讓學(xué)生分階段進(jìn)行。學(xué)生小組定期要上交任務(wù)報(bào)告。
(2)及時(shí)的輔導(dǎo)。在超出學(xué)生目前知識(shí)結(jié)構(gòu)的地方,教師要加以實(shí)際指導(dǎo),或給予解決思路和參考書目,輔助學(xué)生解決難題。
(3)要完善實(shí)驗(yàn)教學(xué)評(píng)價(jià)機(jī)制。為了增強(qiáng)小組協(xié)作學(xué)習(xí)的意識(shí),教師可以適當(dāng)引進(jìn)一些競(jìng)爭(zhēng)激勵(lì)機(jī)制,完善評(píng)價(jià)機(jī)制,避免部分小組成員偷懶的情況發(fā)生。評(píng)價(jià)的形式可以是組內(nèi)自評(píng)與組外互評(píng)相結(jié)合。組內(nèi)自評(píng)中包括每個(gè)小組成員的個(gè)人評(píng)價(jià),如對(duì)其在小組協(xié)作任務(wù)活動(dòng)中的表現(xiàn)、所分配任務(wù)的完成情況、對(duì)小組的貢獻(xiàn)度等方面的評(píng)分,也包括整個(gè)小組的自評(píng)。小組評(píng)價(jià)的內(nèi)容包括小組學(xué)習(xí)實(shí)施計(jì)劃、組員參與情況、小組實(shí)踐過程、實(shí)踐效果(Java小軟件形式)等方面。
對(duì)于Java程序設(shè)計(jì)課程而言,純粹筆試或單一的大作業(yè)考核都有其片面性。若只采取筆試的形式,只能考核學(xué)生對(duì)編程語言細(xì)節(jié)的熟悉程度,而對(duì)于程序設(shè)計(jì)的思路,開發(fā)工具的掌握以及開發(fā)過程的調(diào)試等重要方面卻很難考查到。而只用開放實(shí)驗(yàn)或課程設(shè)計(jì)的方式進(jìn)行考試有可能導(dǎo)致部分學(xué)生抄襲現(xiàn)成的代碼而不求甚解或分工不均等。因此,采用“筆試+大作業(yè)”的形式是一種較好的考試模式,既能考核學(xué)生的理論掌握水平,又能考核學(xué)生的實(shí)際編程能力。在本門課程的教學(xué)中,作者采用“筆試60%+大作業(yè)40%”的考試模式。
作者在2008級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的Java程序設(shè)計(jì)課程中實(shí)施了教學(xué)改革,并將之與未實(shí)施教改的2007級(jí)學(xué)生Java程序設(shè)計(jì)課程的教學(xué)效果進(jìn)行了粗略的比較分析。采用課程教學(xué)改革后,學(xué)生在學(xué)習(xí)興趣、技術(shù)的掌握、軟件開發(fā)能力的提升方面都有明顯改善。在實(shí)施教改前,2007級(jí)學(xué)生中大概只有三分之一會(huì)在課堂上認(rèn)真聽講,個(gè)別學(xué)生會(huì)做聽課筆記,上機(jī)任務(wù)很少會(huì)提前完成。而實(shí)行教改的2008級(jí),課堂上超過半數(shù)的學(xué)生會(huì)認(rèn)真聽講,達(dá)到三分之一的學(xué)生能提前完成上機(jī)任務(wù)。從學(xué)生的期末平均成績(jī)上看,也從2007級(jí)的71.5分提高到了2008級(jí)的83分。從軟件開發(fā)能力上看,2007級(jí)學(xué)生學(xué)完這門課程后主要能開發(fā)一些功能簡(jiǎn)單的小規(guī)模程序,而在2008級(jí)的學(xué)生中,呈現(xiàn)出一批主動(dòng)要求參加Java系列的大學(xué)生創(chuàng)新項(xiàng)目以及參與企業(yè)需求的項(xiàng)目的同學(xué),為后續(xù)做出有實(shí)用價(jià)值的軟件產(chǎn)品奠基了堅(jiān)實(shí)的基礎(chǔ)。
[1]蔣志勇,張文.項(xiàng)目教學(xué)法在《微機(jī)系統(tǒng)實(shí)現(xiàn)與維護(hù)》課程教學(xué)中的應(yīng)用探索[J].桂林航天工業(yè)高等??茖W(xué)校學(xué)報(bào),2007(3):95-97.
[2]劉文杰,吳婷婷,鄭玉.基于任務(wù)驅(qū)動(dòng)的小組協(xié)作Java教學(xué)模式研究[J].計(jì)算機(jī)教育,2010(20):55-61.
[3]鄭阿奇.Java實(shí)用教程(第2版)[M].電子工業(yè)出版社,2009.
[4]趙呈領(lǐng),賈永娜,等.基于任務(wù)驅(qū)動(dòng)教學(xué)法的現(xiàn)代教育技術(shù)實(shí)驗(yàn)課教學(xué)設(shè)計(jì)研究[J].現(xiàn)代教育技術(shù),2011(1):142-146.
[5]邵奇峰,車戰(zhàn)斌.Java課程教學(xué)方法探討[J].計(jì)算機(jī)教育,2008(12):50-52.
On Teaching Reform of Java Programming Course
Lin Yeyu Lin Yaming
As the foundation of Java series courses,the teaching quality of“Java programming”would directly determine the quality of follow - up courses.Because of the great amounts of knowledge to learn for Java and the students'weak programming skills and their learning motivation,a demand - driven teaching reform is needed ,which includes teaching content,teaching methods and assessment methods,etc.
teaching content;teaching methods;assessment methods
G642.0
A
1672-6758(2011)11-0028-3
林葉郁,碩士,講師,閩江學(xué)院,福建·福州。郵政編碼:350108
林亞明,碩士,講師,閩江學(xué)院,福建·福州。郵政編碼:350108
閩江學(xué)院教育教學(xué)改革研究立項(xiàng)(0914B);閩江學(xué)院青年育苗項(xiàng)目(YKY 07005)
Class No.:G642.0Document Mark:A
(責(zé)任編輯:蔡雪嵐)