黃洪 趙小敏 張繁 葉蕾 王奔
摘要: Java程序設(shè)計(jì)語言發(fā)展快、應(yīng)用廣,已成為國內(nèi)外高校實(shí)施計(jì)算機(jī)程序設(shè)計(jì)教學(xué)的主流課程。然而,在Java程序設(shè)計(jì)課程的教學(xué)中存在不少問題,其中最主要的問題是教學(xué)方法問題。實(shí)踐證明,傳統(tǒng)的滿堂灌教學(xué)方法不能激發(fā)學(xué)生的學(xué)習(xí)熱情和主動學(xué)習(xí)的積極性,嚴(yán)重影響教學(xué)效果和學(xué)生編程能力的培養(yǎng)。鑒于此,介紹了在Java程序設(shè)計(jì)課程中應(yīng)用任務(wù)驅(qū)動教學(xué)法的改革思路、實(shí)施方案、實(shí)施過程、取得的成效和體會。
關(guān)鍵詞: 任務(wù)驅(qū)動教學(xué)法; Java程序設(shè)計(jì); 教學(xué)改革; 教學(xué)方法; 計(jì)算機(jī)課程
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A文章編號:1006-8228(2012)04-49-03
Application of Task Driven Teaching Method in Java Programming Curriculum
Huang Hong, Zhao Xiaomin, Zhang Fan, ye Lei, Wang Ben
(School of Computer Science and Technology, Zhejiang University of Technology, Hangzhou, Zhejiang 310023, China)
Abstract: Java is a fast developing programming language widely used in various areas and becomes one of the main curriculums in colleges computer programming education. But there are some problems that impact the results of Java programming curriculums teaching and learning, among them teaching method is a main issue. Long term teaching practices have demonstrated that the traditional cramming method of teaching cannot arouse the learning enthusiasm and initiative of students, hence will hinder the achievement of good teaching effect. Therefore the authors introduce task-driven approach to the Java programming teaching as an efficient student-centered teaching method. In the paper the idea, implementation scheme and procedure, the achieved results and experience of task driving teaching methods used in Java programming are introduced in detail.
Key words: task driving teaching method; Java programming curriculum; teaching method; teaching reform; computer curriculums
0 引言
Java語言由于其眾多公認(rèn)的優(yōu)點(diǎn)已經(jīng)成為各類軟件開發(fā)的首選語言,許多高校都開設(shè)了Java程序設(shè)計(jì)課程。在教育部計(jì)算機(jī)基礎(chǔ)課程教學(xué)指導(dǎo)委員會制定的白皮書中,Java課程被列為核心課程之一。
Java程序設(shè)計(jì)課程對構(gòu)筑學(xué)生的軟件開發(fā)知識結(jié)構(gòu)體系起著重要的作用。然而,在多年的教學(xué)實(shí)踐中,我們意識到在Java程序設(shè)計(jì)等程序設(shè)計(jì)類課程的教學(xué)中存在許多問題。目前的程序設(shè)計(jì)類課程的教學(xué)現(xiàn)狀是,在教學(xué)形式和教學(xué)過程方面,以教師課堂講授為主,輔以復(fù)習(xí)所學(xué)知識點(diǎn)的課后作業(yè),安排相應(yīng)的驗(yàn)證性課內(nèi)實(shí)驗(yàn),最后通過筆試對學(xué)生進(jìn)行考核,評定學(xué)生的成績。程序設(shè)計(jì)課程在這種基本上屬于填鴨式的教學(xué)方式下,存在以下一些主要問題:
⑴ 無法調(diào)動學(xué)生的學(xué)習(xí)積極性。由于教學(xué)方法單一,教師按照課程的內(nèi)容要求準(zhǔn)備PPT,按部就班進(jìn)行講授,學(xué)生學(xué)得很被動,教學(xué)效果不佳[3]。
⑵ 學(xué)生沒有學(xué)習(xí)目標(biāo),缺乏學(xué)習(xí)興趣。學(xué)生沒有短期的有吸引力的目標(biāo),許多學(xué)生的學(xué)習(xí)動機(jī)是“為通過考試而學(xué)習(xí)”,所以平時投入的精力很少[4]。
⑶ 學(xué)生學(xué)習(xí)不夠深入和扎實(shí),缺乏對所學(xué)知識的實(shí)際應(yīng)用能力。教師和學(xué)生注重的往往是編程語法等表面知識,忽視實(shí)際應(yīng)用和編程思維的訓(xùn)練,其結(jié)果是學(xué)生不會應(yīng)用所學(xué)知識解決實(shí)際問題,學(xué)到的知識也會很快遺忘。
上述問題帶來的綜合后果就是,程序設(shè)計(jì)課程的教學(xué)效果不夠理想,課程結(jié)束后學(xué)生仍不會編程,而且直接影響學(xué)生后續(xù)課程的學(xué)習(xí)。
鑒于上述情況,根據(jù)Java程序設(shè)計(jì)課程的特點(diǎn),我們決定以Java程序設(shè)計(jì)課程的總體目標(biāo)為導(dǎo)向,引入任務(wù)驅(qū)動教學(xué)法來激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的編程能力、知識應(yīng)用能力和自主學(xué)習(xí)能力,希望以此來提高Java程序設(shè)計(jì)課程的教學(xué)質(zhì)量和教學(xué)效果。
1 教學(xué)改革的思路
Java程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,必須根據(jù)課程的特點(diǎn)采用合適的教學(xué)方法。程序設(shè)計(jì)課程的教學(xué)過程,學(xué)生的參與是至關(guān)重要的[1]。任務(wù)驅(qū)動教學(xué)法非常適合用于實(shí)踐性強(qiáng)的課程,但這并不意味著任務(wù)驅(qū)動教學(xué)法適用于Java程序設(shè)計(jì)課程的整個教學(xué)過程,能夠解決所有的教學(xué)問題。只有在課程的不同階段,根據(jù)課程內(nèi)容的不同特點(diǎn)以及學(xué)生的不同特點(diǎn),以“任務(wù)驅(qū)動”教學(xué)法為主,綜合應(yīng)用不同的教學(xué)方法來實(shí)施教學(xué),才能更好地解決各種教學(xué)問題,有效地提高教學(xué)效果和教學(xué)質(zhì)量。據(jù)此,我們提出以下教學(xué)改革思路。
⑴ 通過“任務(wù)驅(qū)動”幫助學(xué)生建立學(xué)習(xí)目標(biāo)
“任務(wù)驅(qū)動”教學(xué)法通過在教學(xué)過程中不斷地布置適當(dāng)?shù)娜蝿?wù),幫助學(xué)生確立學(xué)習(xí)的短期目標(biāo)。這不僅可以激發(fā)學(xué)生的積極性,而且可以通過一個個短期目標(biāo)的達(dá)成,實(shí)現(xiàn)課程的總體目標(biāo)。
在課程開始時,布置一個需要綜合應(yīng)用課程知識的“大任務(wù)”,即課程項(xiàng)目,以引領(lǐng)總的課程教學(xué)目標(biāo)。
⑵ 綜合運(yùn)用任務(wù)驅(qū)動與填鴨式教學(xué)法
由于學(xué)時數(shù)的限制和部分課程內(nèi)容的特點(diǎn),在Java程序設(shè)計(jì)課程的教學(xué)中需要綜合運(yùn)用各種教學(xué)方法,以提高課程基礎(chǔ)知識的教學(xué)效率。
對于知識性的內(nèi)容,填鴨式教學(xué)法是效率最高的一種教學(xué)方法。因此,在進(jìn)行Java基礎(chǔ)知識(如數(shù)據(jù)類型、基本控制結(jié)構(gòu)等)的教學(xué)時,采用“填鴨式”教學(xué),不失為一種好的選擇。
⑶ 通過“任務(wù)驅(qū)動”實(shí)施“做中學(xué)”,鍛煉學(xué)生的實(shí)際動手能力
“做中學(xué)”是一種行之有效的教學(xué)方法,該方法特別適合與“任務(wù)驅(qū)動”教學(xué)法相結(jié)合,使學(xué)生學(xué)以致用,提高學(xué)生的學(xué)習(xí)興趣和教學(xué)效果。通過“任務(wù)驅(qū)動”實(shí)施“做中學(xué)”可以促使學(xué)生主動學(xué)習(xí),但使用這種教學(xué)方法的前提是學(xué)生有一定的基礎(chǔ),任務(wù)的規(guī)模和難度適中,與學(xué)生的已有基礎(chǔ)能夠合理匹配,否則教學(xué)就可能無法進(jìn)行,學(xué)生也會因?yàn)槭バ判亩鴨适W(xué)習(xí)的興趣。因此,實(shí)施“任務(wù)驅(qū)動”教學(xué)時,根據(jù)教學(xué)進(jìn)展的情況設(shè)計(jì)適當(dāng)?shù)摹叭蝿?wù)”是有效地開展“做中學(xué)”的關(guān)鍵。
按照以上思路,配合一些其他的措施和手段(如小班化教學(xué)等)應(yīng)該能夠很好地解決Java程序設(shè)計(jì)課程教學(xué)中的各種問題,提高教學(xué)質(zhì)量。
2 教學(xué)改革的實(shí)施方案
根據(jù)前述教學(xué)改革思路,我們提出了以下具體的實(shí)施方案。
⑴ 設(shè)立綜合性項(xiàng)目,通過目標(biāo)引領(lǐng)激勵學(xué)生。
在課程開始時就布置一個需要綜合運(yùn)用課程內(nèi)容的綜合性任務(wù)作為學(xué)生的課程項(xiàng)目(Course Project),提供項(xiàng)目需求說明書,給出評分標(biāo)準(zhǔn),并告知學(xué)生該項(xiàng)目將以很大的比重計(jì)入課程的總評成績。在課堂上演示已經(jīng)實(shí)現(xiàn)了的項(xiàng)目,但不提供源代碼。要求學(xué)生在期末考試之前完成并提交所布置的項(xiàng)目。
⑵ 基礎(chǔ)知識以“填鴨式”教學(xué)法進(jìn)行,提高學(xué)習(xí)效率。
教學(xué)初期采用快速填鴨式教學(xué)方法,將基本數(shù)據(jù)類型、程序控制結(jié)構(gòu)、面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)等初級編程知識傳授給學(xué)生。這樣的快速入門是完全可行的,因?yàn)檫@些內(nèi)容在以后的教學(xué)中會反復(fù)出現(xiàn)和運(yùn)用。通過日后的不斷重復(fù),相關(guān)知識會固化在學(xué)生的腦中?;A(chǔ)知識是學(xué)生以后實(shí)施“任務(wù)驅(qū)動”和“做中學(xué)”的基礎(chǔ),因此初期的教學(xué)以教師講授為主,輔以課堂演示和驗(yàn)證性課內(nèi)實(shí)驗(yàn)。
⑶ 任務(wù)驅(qū)動,通過“做中學(xué)”深入課程腹地,培養(yǎng)學(xué)生的實(shí)際應(yīng)用能力[5]。
Java程序設(shè)計(jì)課程項(xiàng)目由于綜合應(yīng)用了課程的全部知識,學(xué)生最初是沒有能力完成的。學(xué)生沒有能力完成,就會失去信心。為了不斷激勵學(xué)生,樹立學(xué)生的信心,就必須不斷地為學(xué)生設(shè)立力所能及的短期目標(biāo),通過短期目標(biāo)的達(dá)成,構(gòu)筑學(xué)生完整的知識能力體系,幫助其最終完成課程項(xiàng)目?;咀龇ㄊ敲刻谜n上課之初提出一個與本堂課要學(xué)習(xí)的內(nèi)容相關(guān)的編程任務(wù),讓學(xué)生分組解決。然后讓各組學(xué)生給出他們的解決方案,并開展討論。最后老師進(jìn)行提煉和總結(jié),給出參考方案,并布置預(yù)習(xí)的內(nèi)容。如此反復(fù),不斷驅(qū)動。
⑷ 通過“項(xiàng)目驅(qū)動”構(gòu)筑學(xué)生的綜合能力。
課程開始時布置了一個綜合性的課程項(xiàng)目,接下來如何高質(zhì)量地完成這個項(xiàng)目成為學(xué)生學(xué)習(xí)本課程的一個持久驅(qū)動力。在課程學(xué)習(xí)過程中,教師要經(jīng)常提醒學(xué)生“今天學(xué)習(xí)的知識如何能夠運(yùn)用到課程項(xiàng)目中去?”,這不僅可以激發(fā)學(xué)生的學(xué)習(xí)興趣,而且這種“為了應(yīng)用而學(xué)習(xí)”的主動學(xué)習(xí)方式與單純的“為了通過考試而學(xué)習(xí)”的被動學(xué)習(xí)方式相比有著不言而喻的優(yōu)越性[2]。最后,通過整個課程項(xiàng)目的完成,學(xué)生運(yùn)用Java程序設(shè)計(jì)語言進(jìn)行軟件開發(fā)的初步能力必將形成。
3 實(shí)施效果和遇到的問題
2010年暑假,我們組織教師進(jìn)行了相關(guān)教學(xué)方法的學(xué)習(xí)研討,設(shè)計(jì)了針對Java程序設(shè)計(jì)課程特點(diǎn)的教學(xué)方法綜合應(yīng)用方案,授課計(jì)劃,并準(zhǔn)備了幾個課程項(xiàng)目和每次課的階段性任務(wù),教學(xué)組織方案等。2010-2011學(xué)年第一個學(xué)期,我們在一個Java程序設(shè)計(jì)課程教學(xué)班級進(jìn)行了教學(xué)試點(diǎn)。學(xué)生是大學(xué)二年級的,教學(xué)班級的人數(shù)達(dá)到了62人。
我們布置的課程項(xiàng)目是一個類似QQ聊天的軟件,該項(xiàng)目除了Java程序設(shè)計(jì)的基本知識外,還要用到圖形用戶界面程序設(shè)計(jì)、輸入輸出程序設(shè)計(jì)、多線程程序設(shè)計(jì)、網(wǎng)絡(luò)程序設(shè)計(jì)等知識,覆蓋了Java程序設(shè)計(jì)課程的全部教學(xué)內(nèi)容。
我們基本按照計(jì)劃實(shí)施了教學(xué),取得了良好的教學(xué)效果,學(xué)生反映良好。絕大部分同學(xué)完成了課程項(xiàng)目,實(shí)現(xiàn)了項(xiàng)目要求的基本功能;約20%的同學(xué)比較出色地完成了項(xiàng)目,不僅功能齊全、界面美觀,而且在容錯性等方面都有體現(xiàn)。最后總評成績的優(yōu)良率達(dá)到了62%。在當(dāng)年組織的Java程序設(shè)計(jì)課程競賽中,這個班級的獲獎率也高于其他同類的非試點(diǎn)班級。2010-2011學(xué)年第二個學(xué)期,該班有多名同學(xué)參與了教師和研究生的科研項(xiàng)目,參與編寫了許多程序模塊、實(shí)現(xiàn)不同的算法等等,表現(xiàn)令人滿意,說明他們已經(jīng)具備了使用Java語言參與軟件項(xiàng)目開發(fā)的基本能力。
在教學(xué)改革實(shí)施的過程中,我們也積累了一些經(jīng)驗(yàn)。
⑴ 宜采用小班化教學(xué)來實(shí)施任務(wù)驅(qū)動教學(xué)。
由于學(xué)生自由選課的原因,2010-2011學(xué)年Java程序設(shè)計(jì)課程所有教學(xué)班級的人數(shù)都比較多,因?yàn)闆]有采取限制措施,所以試點(diǎn)班的學(xué)生數(shù)也達(dá)到了62人。實(shí)踐證明,教學(xué)班級人數(shù)過多會影響任務(wù)驅(qū)動教學(xué)的實(shí)施。因?yàn)槿藬?shù)一多,許多學(xué)生就沒有機(jī)會展示他們的解決方案,學(xué)生會缺乏參與感。還有一些本來就不夠自覺的同學(xué)則會濫竽充數(shù)。所以,盡管是試點(diǎn)班,最后總評成績也出現(xiàn)了不及格的情況。
但是,如果實(shí)施小班化教學(xué),就會需要增加教師,這對很多學(xué)校來說可能是一個短期內(nèi)難以解決的問題。
⑵ 在Java程序設(shè)計(jì)課程中實(shí)施任務(wù)驅(qū)動教學(xué)需要一定的硬件條件。
學(xué)生在課堂上完成任務(wù)時,最好是直接在電腦上進(jìn)行編程和調(diào)試,而不是在紙張上寫程序代碼。這樣一方面可以及時發(fā)現(xiàn)問題所在,方便對程序的修改,提高他們的實(shí)際動手能力,提高時間利用率,也方便展示和講評他們的實(shí)現(xiàn)方案。然而,目前的教室普遍只有講臺上有一臺電腦,即使讓學(xué)生帶筆記本電腦也會因?yàn)榻淌覜]有足夠的電源插座而不便使用。所以,Java程序設(shè)計(jì)課程以任務(wù)驅(qū)動方式實(shí)施教學(xué)最好能夠在機(jī)房進(jìn)行。但這一般很難做到。
⑶ 采用任務(wù)驅(qū)動教學(xué)法對教師的知識水平和課堂掌控能力提出了更高的要求。
學(xué)生在嘗試完成任務(wù)的過程中,會出現(xiàn)各種千奇百怪的問題,這就要求教師有比較全面的知識,對授課內(nèi)容非常熟悉,反應(yīng)靈活,善于解答學(xué)生的問題并把學(xué)生引導(dǎo)到正確的軌道上來。另外,在提出任務(wù)、初期引導(dǎo)、學(xué)生自學(xué)提出解決方案、討論點(diǎn)評、糾錯和總結(jié)等教學(xué)環(huán)節(jié)的時間分配和掌控方面,也要求教師能夠合理掌控和靈活處理。
4 結(jié)束語
經(jīng)過一年的改革探索和實(shí)踐,在Java程序設(shè)計(jì)課程的教學(xué)中我們基本形成了應(yīng)用任務(wù)驅(qū)動教學(xué)法的具體實(shí)施方法和模式,并取得了比較滿意的效果。本學(xué)期(2011-2012學(xué)年第一學(xué)期),我們在Java教學(xué)班級中選定了35人組成小班,進(jìn)行進(jìn)一步的探索和完善。打算在總結(jié)經(jīng)驗(yàn)、形成規(guī)范之后,在所有Java程序設(shè)計(jì)課程的教學(xué)中進(jìn)行推廣。
參考文獻(xiàn):
[1] T. Jenkins, A participative approach to teaching programming[A],Proceedings of the 6th annual conference on the teaching of computing and the 3rd annual conference on Integrating technology into computer science education: Changing the delivery of computer science education[C], ACM New York, NY, US, 1998.125~129
[2] Hong Huang, Dongyong Yang. Teaching Design Patterns: A Modified PBL Approach[A]. Proceeding of The 9th International Conference for Young Computer Scientists[C]. Zhang Jia Jie, Hunan, China. November 18~21, 2008. 2422~2427
[3] 易虹,徐振強(qiáng),張紅梅.程序設(shè)計(jì)基礎(chǔ)教學(xué)改革實(shí)踐與創(chuàng)新[J].計(jì)算機(jī)教育,2010.8:46~49
[4] 朱旻如,郭劍,朱立華. 程序設(shè)計(jì)實(shí)踐課程教學(xué)改革探索[J]. 計(jì)算機(jī)教育,2010.22:109~111,115
[5] 張錦,林亞平,王如龍,凌小寧.基于"做中學(xué)"理念的教學(xué)方案設(shè)計(jì)與實(shí)踐[J].計(jì)算機(jī)教育,2008.24:38~42