黃洪 趙小敏 張繁 葉蕾 王奔
摘要: Java程序設(shè)計語言發(fā)展快、應(yīng)用廣,已成為國內(nèi)外高校實施計算機程序設(shè)計教學(xué)的主流課程。然而,在Java程序設(shè)計課程的教學(xué)中存在不少問題,其中最主要的問題是教學(xué)方法問題。實踐證明,傳統(tǒng)的滿堂灌教學(xué)方法不能激發(fā)學(xué)生的學(xué)習(xí)熱情和主動學(xué)習(xí)的積極性,嚴重影響教學(xué)效果和學(xué)生編程能力的培養(yǎng)。鑒于此,介紹了在Java程序設(shè)計課程中應(yīng)用任務(wù)驅(qū)動教學(xué)法的改革思路、實施方案、實施過程、取得的成效和體會。
關(guān)鍵詞: 任務(wù)驅(qū)動教學(xué)法; Java程序設(shè)計; 教學(xué)改革; 教學(xué)方法; 計算機課程
中圖分類號:G642 文獻標(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語言由于其眾多公認的優(yōu)點已經(jīng)成為各類軟件開發(fā)的首選語言,許多高校都開設(shè)了Java程序設(shè)計課程。在教育部計算機基礎(chǔ)課程教學(xué)指導(dǎo)委員會制定的白皮書中,Java課程被列為核心課程之一。
Java程序設(shè)計課程對構(gòu)筑學(xué)生的軟件開發(fā)知識結(jié)構(gòu)體系起著重要的作用。然而,在多年的教學(xué)實踐中,我們意識到在Java程序設(shè)計等程序設(shè)計類課程的教學(xué)中存在許多問題。目前的程序設(shè)計類課程的教學(xué)現(xiàn)狀是,在教學(xué)形式和教學(xué)過程方面,以教師課堂講授為主,輔以復(fù)習(xí)所學(xué)知識點的課后作業(yè),安排相應(yīng)的驗證性課內(nèi)實驗,最后通過筆試對學(xué)生進行考核,評定學(xué)生的成績。程序設(shè)計課程在這種基本上屬于填鴨式的教學(xué)方式下,存在以下一些主要問題:
⑴ 無法調(diào)動學(xué)生的學(xué)習(xí)積極性。由于教學(xué)方法單一,教師按照課程的內(nèi)容要求準(zhǔn)備PPT,按部就班進行講授,學(xué)生學(xué)得很被動,教學(xué)效果不佳[3]。
⑵ 學(xué)生沒有學(xué)習(xí)目標(biāo),缺乏學(xué)習(xí)興趣。學(xué)生沒有短期的有吸引力的目標(biāo),許多學(xué)生的學(xué)習(xí)動機是“為通過考試而學(xué)習(xí)”,所以平時投入的精力很少[4]。
⑶ 學(xué)生學(xué)習(xí)不夠深入和扎實,缺乏對所學(xué)知識的實際應(yīng)用能力。教師和學(xué)生注重的往往是編程語法等表面知識,忽視實際應(yīng)用和編程思維的訓(xùn)練,其結(jié)果是學(xué)生不會應(yīng)用所學(xué)知識解決實際問題,學(xué)到的知識也會很快遺忘。
上述問題帶來的綜合后果就是,程序設(shè)計課程的教學(xué)效果不夠理想,課程結(jié)束后學(xué)生仍不會編程,而且直接影響學(xué)生后續(xù)課程的學(xué)習(xí)。
鑒于上述情況,根據(jù)Java程序設(shè)計課程的特點,我們決定以Java程序設(shè)計課程的總體目標(biāo)為導(dǎo)向,引入任務(wù)驅(qū)動教學(xué)法來激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的編程能力、知識應(yīng)用能力和自主學(xué)習(xí)能力,希望以此來提高Java程序設(shè)計課程的教學(xué)質(zhì)量和教學(xué)效果。
1 教學(xué)改革的思路
Java程序設(shè)計是一門實踐性很強的課程,必須根據(jù)課程的特點采用合適的教學(xué)方法。程序設(shè)計課程的教學(xué)過程,學(xué)生的參與是至關(guān)重要的[1]。任務(wù)驅(qū)動教學(xué)法非常適合用于實踐性強的課程,但這并不意味著任務(wù)驅(qū)動教學(xué)法適用于Java程序設(shè)計課程的整個教學(xué)過程,能夠解決所有的教學(xué)問題。只有在課程的不同階段,根據(jù)課程內(nèi)容的不同特點以及學(xué)生的不同特點,以“任務(wù)驅(qū)動”教學(xué)法為主,綜合應(yīng)用不同的教學(xué)方法來實施教學(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)的達成,實現(xiàn)課程的總體目標(biāo)。
在課程開始時,布置一個需要綜合應(yīng)用課程知識的“大任務(wù)”,即課程項目,以引領(lǐng)總的課程教學(xué)目標(biāo)。
⑵ 綜合運用任務(wù)驅(qū)動與填鴨式教學(xué)法
由于學(xué)時數(shù)的限制和部分課程內(nèi)容的特點,在Java程序設(shè)計課程的教學(xué)中需要綜合運用各種教學(xué)方法,以提高課程基礎(chǔ)知識的教學(xué)效率。
對于知識性的內(nèi)容,填鴨式教學(xué)法是效率最高的一種教學(xué)方法。因此,在進行Java基礎(chǔ)知識(如數(shù)據(jù)類型、基本控制結(jié)構(gòu)等)的教學(xué)時,采用“填鴨式”教學(xué),不失為一種好的選擇。
⑶ 通過“任務(wù)驅(qū)動”實施“做中學(xué)”,鍛煉學(xué)生的實際動手能力
“做中學(xué)”是一種行之有效的教學(xué)方法,該方法特別適合與“任務(wù)驅(qū)動”教學(xué)法相結(jié)合,使學(xué)生學(xué)以致用,提高學(xué)生的學(xué)習(xí)興趣和教學(xué)效果。通過“任務(wù)驅(qū)動”實施“做中學(xué)”可以促使學(xué)生主動學(xué)習(xí),但使用這種教學(xué)方法的前提是學(xué)生有一定的基礎(chǔ),任務(wù)的規(guī)模和難度適中,與學(xué)生的已有基礎(chǔ)能夠合理匹配,否則教學(xué)就可能無法進行,學(xué)生也會因為失去信心而喪失學(xué)習(xí)的興趣。因此,實施“任務(wù)驅(qū)動”教學(xué)時,根據(jù)教學(xué)進展的情況設(shè)計適當(dāng)?shù)摹叭蝿?wù)”是有效地開展“做中學(xué)”的關(guān)鍵。
按照以上思路,配合一些其他的措施和手段(如小班化教學(xué)等)應(yīng)該能夠很好地解決Java程序設(shè)計課程教學(xué)中的各種問題,提高教學(xué)質(zhì)量。
2 教學(xué)改革的實施方案
根據(jù)前述教學(xué)改革思路,我們提出了以下具體的實施方案。
⑴ 設(shè)立綜合性項目,通過目標(biāo)引領(lǐng)激勵學(xué)生。
在課程開始時就布置一個需要綜合運用課程內(nèi)容的綜合性任務(wù)作為學(xué)生的課程項目(Course Project),提供項目需求說明書,給出評分標(biāo)準(zhǔn),并告知學(xué)生該項目將以很大的比重計入課程的總評成績。在課堂上演示已經(jīng)實現(xiàn)了的項目,但不提供源代碼。要求學(xué)生在期末考試之前完成并提交所布置的項目。
⑵ 基礎(chǔ)知識以“填鴨式”教學(xué)法進行,提高學(xué)習(xí)效率。
教學(xué)初期采用快速填鴨式教學(xué)方法,將基本數(shù)據(jù)類型、程序控制結(jié)構(gòu)、面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ)等初級編程知識傳授給學(xué)生。這樣的快速入門是完全可行的,因為這些內(nèi)容在以后的教學(xué)中會反復(fù)出現(xiàn)和運用。通過日后的不斷重復(fù),相關(guān)知識會固化在學(xué)生的腦中?;A(chǔ)知識是學(xué)生以后實施“任務(wù)驅(qū)動”和“做中學(xué)”的基礎(chǔ),因此初期的教學(xué)以教師講授為主,輔以課堂演示和驗證性課內(nèi)實驗。
⑶ 任務(wù)驅(qū)動,通過“做中學(xué)”深入課程腹地,培養(yǎng)學(xué)生的實際應(yīng)用能力[5]。
Java程序設(shè)計課程項目由于綜合應(yīng)用了課程的全部知識,學(xué)生最初是沒有能力完成的。學(xué)生沒有能力完成,就會失去信心。為了不斷激勵學(xué)生,樹立學(xué)生的信心,就必須不斷地為學(xué)生設(shè)立力所能及的短期目標(biāo),通過短期目標(biāo)的達成,構(gòu)筑學(xué)生完整的知識能力體系,幫助其最終完成課程項目。基本做法是每堂課上課之初提出一個與本堂課要學(xué)習(xí)的內(nèi)容相關(guān)的編程任務(wù),讓學(xué)生分組解決。然后讓各組學(xué)生給出他們的解決方案,并開展討論。最后老師進行提煉和總結(jié),給出參考方案,并布置預(yù)習(xí)的內(nèi)容。如此反復(fù),不斷驅(qū)動。
⑷ 通過“項目驅(qū)動”構(gòu)筑學(xué)生的綜合能力。
課程開始時布置了一個綜合性的課程項目,接下來如何高質(zhì)量地完成這個項目成為學(xué)生學(xué)習(xí)本課程的一個持久驅(qū)動力。在課程學(xué)習(xí)過程中,教師要經(jīng)常提醒學(xué)生“今天學(xué)習(xí)的知識如何能夠運用到課程項目中去?”,這不僅可以激發(fā)學(xué)生的學(xué)習(xí)興趣,而且這種“為了應(yīng)用而學(xué)習(xí)”的主動學(xué)習(xí)方式與單純的“為了通過考試而學(xué)習(xí)”的被動學(xué)習(xí)方式相比有著不言而喻的優(yōu)越性[2]。最后,通過整個課程項目的完成,學(xué)生運用Java程序設(shè)計語言進行軟件開發(fā)的初步能力必將形成。
3 實施效果和遇到的問題
2010年暑假,我們組織教師進行了相關(guān)教學(xué)方法的學(xué)習(xí)研討,設(shè)計了針對Java程序設(shè)計課程特點的教學(xué)方法綜合應(yīng)用方案,授課計劃,并準(zhǔn)備了幾個課程項目和每次課的階段性任務(wù),教學(xué)組織方案等。2010-2011學(xué)年第一個學(xué)期,我們在一個Java程序設(shè)計課程教學(xué)班級進行了教學(xué)試點。學(xué)生是大學(xué)二年級的,教學(xué)班級的人數(shù)達到了62人。
我們布置的課程項目是一個類似QQ聊天的軟件,該項目除了Java程序設(shè)計的基本知識外,還要用到圖形用戶界面程序設(shè)計、輸入輸出程序設(shè)計、多線程程序設(shè)計、網(wǎng)絡(luò)程序設(shè)計等知識,覆蓋了Java程序設(shè)計課程的全部教學(xué)內(nèi)容。
我們基本按照計劃實施了教學(xué),取得了良好的教學(xué)效果,學(xué)生反映良好。絕大部分同學(xué)完成了課程項目,實現(xiàn)了項目要求的基本功能;約20%的同學(xué)比較出色地完成了項目,不僅功能齊全、界面美觀,而且在容錯性等方面都有體現(xiàn)。最后總評成績的優(yōu)良率達到了62%。在當(dāng)年組織的Java程序設(shè)計課程競賽中,這個班級的獲獎率也高于其他同類的非試點班級。2010-2011學(xué)年第二個學(xué)期,該班有多名同學(xué)參與了教師和研究生的科研項目,參與編寫了許多程序模塊、實現(xiàn)不同的算法等等,表現(xiàn)令人滿意,說明他們已經(jīng)具備了使用Java語言參與軟件項目開發(fā)的基本能力。
在教學(xué)改革實施的過程中,我們也積累了一些經(jīng)驗。
⑴ 宜采用小班化教學(xué)來實施任務(wù)驅(qū)動教學(xué)。
由于學(xué)生自由選課的原因,2010-2011學(xué)年Java程序設(shè)計課程所有教學(xué)班級的人數(shù)都比較多,因為沒有采取限制措施,所以試點班的學(xué)生數(shù)也達到了62人。實踐證明,教學(xué)班級人數(shù)過多會影響任務(wù)驅(qū)動教學(xué)的實施。因為人數(shù)一多,許多學(xué)生就沒有機會展示他們的解決方案,學(xué)生會缺乏參與感。還有一些本來就不夠自覺的同學(xué)則會濫竽充數(shù)。所以,盡管是試點班,最后總評成績也出現(xiàn)了不及格的情況。
但是,如果實施小班化教學(xué),就會需要增加教師,這對很多學(xué)校來說可能是一個短期內(nèi)難以解決的問題。
⑵ 在Java程序設(shè)計課程中實施任務(wù)驅(qū)動教學(xué)需要一定的硬件條件。
學(xué)生在課堂上完成任務(wù)時,最好是直接在電腦上進行編程和調(diào)試,而不是在紙張上寫程序代碼。這樣一方面可以及時發(fā)現(xiàn)問題所在,方便對程序的修改,提高他們的實際動手能力,提高時間利用率,也方便展示和講評他們的實現(xiàn)方案。然而,目前的教室普遍只有講臺上有一臺電腦,即使讓學(xué)生帶筆記本電腦也會因為教室沒有足夠的電源插座而不便使用。所以,Java程序設(shè)計課程以任務(wù)驅(qū)動方式實施教學(xué)最好能夠在機房進行。但這一般很難做到。
⑶ 采用任務(wù)驅(qū)動教學(xué)法對教師的知識水平和課堂掌控能力提出了更高的要求。
學(xué)生在嘗試完成任務(wù)的過程中,會出現(xiàn)各種千奇百怪的問題,這就要求教師有比較全面的知識,對授課內(nèi)容非常熟悉,反應(yīng)靈活,善于解答學(xué)生的問題并把學(xué)生引導(dǎo)到正確的軌道上來。另外,在提出任務(wù)、初期引導(dǎo)、學(xué)生自學(xué)提出解決方案、討論點評、糾錯和總結(jié)等教學(xué)環(huán)節(jié)的時間分配和掌控方面,也要求教師能夠合理掌控和靈活處理。
4 結(jié)束語
經(jīng)過一年的改革探索和實踐,在Java程序設(shè)計課程的教學(xué)中我們基本形成了應(yīng)用任務(wù)驅(qū)動教學(xué)法的具體實施方法和模式,并取得了比較滿意的效果。本學(xué)期(2011-2012學(xué)年第一學(xué)期),我們在Java教學(xué)班級中選定了35人組成小班,進行進一步的探索和完善。打算在總結(jié)經(jīng)驗、形成規(guī)范之后,在所有Java程序設(shè)計課程的教學(xué)中進行推廣。
參考文獻:
[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] 易虹,徐振強,張紅梅.程序設(shè)計基礎(chǔ)教學(xué)改革實踐與創(chuàng)新[J].計算機教育,2010.8:46~49
[4] 朱旻如,郭劍,朱立華. 程序設(shè)計實踐課程教學(xué)改革探索[J]. 計算機教育,2010.22:109~111,115
[5] 張錦,林亞平,王如龍,凌小寧.基于"做中學(xué)"理念的教學(xué)方案設(shè)計與實踐[J].計算機教育,2008.24:38~42