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