文/龐光垚
遞進(jìn)式單案例教學(xué)法在Java課程中的應(yīng)用
文/龐光垚
針對(duì)當(dāng)前Java課程關(guān)于案例教學(xué)過程中存在的問題,結(jié)合Java課程的學(xué)習(xí)任務(wù)以及特點(diǎn),本文提出了遞進(jìn)式單案例教學(xué)法。該方法根據(jù)教學(xué)大綱知識(shí)點(diǎn)逐步深入的特點(diǎn),選取學(xué)生容易理解的一個(gè)案例,對(duì)案例進(jìn)行任務(wù)分解。任務(wù)分解不以功能拓展為主線,而是以模擬企業(yè)級(jí)開發(fā)項(xiàng)目為目標(biāo)。使用新的知識(shí)點(diǎn)不斷對(duì)功能進(jìn)行重構(gòu)、優(yōu)化,從而達(dá)到讓學(xué)生熟練掌握編程技術(shù),具備企業(yè)級(jí)開發(fā)的分析思維以及掌握開發(fā)方法的目的。
Java技術(shù);教學(xué)方法;案例教學(xué)法;遞進(jìn)式教學(xué)法;教學(xué)改革
1.引言
隨著Internet的發(fā)展得以迅速流行,并占據(jù)了顯著地位,Java作為一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,因?yàn)槠渚哂型ㄓ眯浴⒏咝?、平臺(tái)移植性和安全性等特點(diǎn),得到了除微軟外的所有主要軟件提供商的認(rèn)可[1]。隨著移動(dòng)互聯(lián)網(wǎng),尤其是Android陣營的急速發(fā)展,無論企業(yè)或者個(gè)人開發(fā)者都選擇了Java作為核心技術(shù)來構(gòu)建他們的應(yīng)用系統(tǒng),由此奠定了Java作為主流開發(fā)技術(shù)的地位。
因此,目前國內(nèi)許多高校對(duì)學(xué)生的技術(shù)培養(yǎng)主要是以Java、Jsp、SSH架構(gòu)、安卓等Java體系為主,Java程序設(shè)計(jì)課程效果的好壞直接影響了后續(xù)技術(shù)學(xué)習(xí)的優(yōu)劣。如何更好地發(fā)揮Java課程實(shí)踐性強(qiáng)的特點(diǎn),使學(xué)生具備很強(qiáng)的動(dòng)手實(shí)踐能力、掌握J(rèn)ava程序開發(fā)技巧、積累項(xiàng)目開發(fā)經(jīng)驗(yàn)從而勝任企業(yè)需要是當(dāng)前亟待研究解決的問題[2]。
Java教學(xué)一直以來都采用理論加上機(jī)課的方式進(jìn)行授課,所使用的案例多數(shù)為教材中零散的小例子。而這些例子存在幾個(gè)方面的不足:一是例子多以算法為主,學(xué)生花在算法的精力遠(yuǎn)大于學(xué)習(xí)編程技術(shù)的精力;二是例子過于零散,課程學(xué)習(xí)完之后,學(xué)生仍然無法將各個(gè)知識(shí)點(diǎn)融合運(yùn)用,對(duì)面企業(yè)級(jí)開發(fā)更加無從下手;三是即使使用企業(yè)級(jí)案例,仍然過于零散,無法貫穿,更無法體現(xiàn)知識(shí)點(diǎn)遞進(jìn)式演進(jìn)的特點(diǎn)。外加學(xué)生缺乏項(xiàng)目實(shí)訓(xùn),往往會(huì)出現(xiàn)理論知識(shí)和實(shí)踐脫節(jié)的情況,無法形成工程化的開發(fā)思想,開發(fā)實(shí)際項(xiàng)目的能力和經(jīng)驗(yàn)不足[3]。
針對(duì)上述問題,筆者提出了遞進(jìn)式單案例教學(xué)法,并應(yīng)用在了Java課程教學(xué)過程中。實(shí)踐證明,這種方法能夠有效地解決上述問題。
2.遞進(jìn)式單案例教學(xué)法
項(xiàng)目教學(xué)法源自美國哈佛大學(xué)的課堂教學(xué)模式,以建構(gòu)主義的學(xué)習(xí)理論為依據(jù),其4大要素是情境、協(xié)助、會(huì)話和意義建構(gòu)[4]。該方法中教師的教學(xué)重點(diǎn)在于為學(xué)生提供真實(shí)的情境,在情境中展示案例,激發(fā)學(xué)生學(xué)習(xí)興趣,促使學(xué)生充分理解問題的復(fù)雜多樣性,最終解決問題以達(dá)到教學(xué)的要求。
遞進(jìn)式單案例教學(xué)指教師選取一個(gè)學(xué)生能理解的案例,并將其分解為多個(gè)子任務(wù)。每個(gè)子任務(wù)根據(jù)教學(xué)大綱逐步引入新的知識(shí)點(diǎn),隨著知識(shí)點(diǎn)學(xué)習(xí)的不斷深入,則相應(yīng)地對(duì)子任務(wù)對(duì)演進(jìn)或者重構(gòu),通過該方法,學(xué)生能夠循序漸進(jìn)地掌握所有知識(shí)點(diǎn),同時(shí)理解項(xiàng)目演進(jìn)的流程以及功能實(shí)現(xiàn)的思路以及方法。
根據(jù)心理學(xué)家布魯納的學(xué)習(xí)動(dòng)機(jī)理論,教學(xué)過程要重視學(xué)生的學(xué)習(xí)動(dòng)機(jī),而動(dòng)機(jī)分為內(nèi)在動(dòng)機(jī)和外在動(dòng)機(jī),內(nèi)在動(dòng)機(jī)比外在動(dòng)機(jī)更重要[5]。而筆者認(rèn)為,最能調(diào)動(dòng)學(xué)生積極性的做法就是讓學(xué)生因?yàn)槌晒Χa(chǎn)生成就感。按以往初學(xué)學(xué)生反映,理解的最大難點(diǎn)在于知識(shí)點(diǎn)掌握之后如何開發(fā)出帶界面的軟件系統(tǒng)。而遞進(jìn)式單案例教學(xué)法就是通過案例實(shí)現(xiàn)的遞進(jìn)演示,先讓學(xué)生實(shí)現(xiàn)控制臺(tái)操作的簡(jiǎn)單系統(tǒng),再慢慢引導(dǎo)界面實(shí)現(xiàn)。以此類推,再按該思路實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)等的功能,最終在課程學(xué)習(xí)完成之后,能夠掌握知識(shí)點(diǎn),理解軟件實(shí)現(xiàn)的思路和方法,最終做出讓學(xué)生自豪的完整軟件系統(tǒng)。
3.遞進(jìn)式單案例教學(xué)法的實(shí)施
本門課程的教學(xué)對(duì)象是大二下學(xué)期的學(xué)生,已經(jīng)以Java語言學(xué)習(xí)過面向?qū)ο笳n程,理解Java的基本語法。但是編程能力比較弱,不懂如何運(yùn)用Java知識(shí),不理解系統(tǒng)實(shí)現(xiàn)的原理和方法。針對(duì)這些特點(diǎn),案例選擇了學(xué)生經(jīng)常接觸的ATM取款機(jī)作為原型,并且始終以該案例貫穿整個(gè)Java教學(xué)過程。在課堂上用代碼跟學(xué)生進(jìn)行互動(dòng),讓學(xué)生以緊湊的節(jié)奏跟隨老師一起推進(jìn)實(shí)現(xiàn)案例。
3.1遞進(jìn)式單案例的設(shè)計(jì)
為了便于理解,ATM案例選擇登錄、查詢金額、存款、取款以及轉(zhuǎn)賬等常規(guī)功能。表1為筆者Java課程教學(xué)中AMT案例劃分的子任務(wù)列表。任務(wù)1以最低要求實(shí)現(xiàn)所有功能;任務(wù)2以面向?qū)ο蟮乃季S進(jìn)行代碼重構(gòu),灌輸面向?qū)ο笏季S;任務(wù)3以代碼的方式,讓學(xué)生直觀地理解接口、繼承;任務(wù)4結(jié)合控制臺(tái)的輸入輸出以及常用的組件,構(gòu)建出具備完善功能的ATM系統(tǒng);任務(wù)5引導(dǎo)學(xué)生把系統(tǒng)控制臺(tái)處理的方式修改為界面操作方式;任務(wù)6首次提出存儲(chǔ)的概念,讓學(xué)生理解永久性存儲(chǔ)及其技術(shù)實(shí)現(xiàn);任務(wù)7則以企業(yè)級(jí)開發(fā)的思維把數(shù)據(jù)持久化到數(shù)據(jù)庫;任務(wù)8則以線程的方式讓學(xué)生體會(huì)到多用戶登錄以及單點(diǎn)登錄高級(jí)應(yīng)用;任務(wù)9、10引導(dǎo)學(xué)生實(shí)現(xiàn)CS結(jié)構(gòu)的客戶端以及服務(wù)器端;而任務(wù)11則對(duì)系統(tǒng)代碼進(jìn)行了優(yōu)化,讓學(xué)生理解系統(tǒng)的復(fù)雜多變性。
表1 ATM案例子任務(wù)劃分
3.2案例的教學(xué)過程
ATM案例雖然功能不多,但是涉及的內(nèi)容很多。而既要讓學(xué)生掌握知識(shí)點(diǎn),鍛煉出較強(qiáng)的編程能力,又要讓學(xué)生理解系統(tǒng)的開發(fā)過程和學(xué)習(xí)到系統(tǒng)的開發(fā)思路及開發(fā)技術(shù)。為達(dá)到這個(gè)要求,我把整個(gè)Java教學(xué)過程分為3個(gè)階段:
3.2.1第一個(gè)階段,主要培養(yǎng)代碼規(guī)范以及編程能力。該階段要求教師把知識(shí)點(diǎn)講透徹,在演示代碼實(shí)現(xiàn)的時(shí)候簡(jiǎn)單詳細(xì)。最主要的是讓學(xué)生動(dòng)起來,所以布置的課程練習(xí)以及作業(yè),以填空的方式,先填代碼段,再填寫方法,最后填寫整個(gè)類。
3.2.2第二個(gè)階段,主要引導(dǎo)學(xué)生理解功能分解、設(shè)計(jì)分析以及解決問題的能力。以界面開發(fā)為例,前期先灌輸給學(xué)生面向?qū)ο?、分層等的設(shè)計(jì)思想,接著對(duì)程序結(jié)構(gòu)進(jìn)行分層,把業(yè)務(wù)和視圖相分離。最后在業(yè)務(wù)邏輯不變的情況之下,把控制臺(tái)的輸入輸出轉(zhuǎn)換為界面操作。讓學(xué)生理解面向?qū)ο蟮脑O(shè)計(jì)方法,以及程序?qū)崿F(xiàn)的多樣性。
3.2.3教師在課堂上當(dāng)場(chǎng)編寫服務(wù)器端程序以及客戶端程序。然后逐步對(duì)學(xué)生提要求,能夠把老師下發(fā)的客戶端修改配置文件登錄成功則達(dá)到了最低標(biāo)準(zhǔn),能夠調(diào)用接口進(jìn)行存錢等功能則為優(yōu)秀,能夠模仿老師的寫法完成服務(wù)器端則加分。該階段讓學(xué)生理解難度激發(fā)挑戰(zhàn)心理,而以極低的要求則培養(yǎng)了學(xué)生的自信心,從而達(dá)到了由內(nèi)而外的學(xué)習(xí)提升。
通過這由淺到深的三個(gè)階段,加上課程設(shè)計(jì)的功能拓展以及系統(tǒng)優(yōu)化,可以讓學(xué)生建立起健全的Java學(xué)習(xí)體系。
4.結(jié)論
在對(duì)12級(jí)約150個(gè)學(xué)生進(jìn)行教學(xué)改革實(shí)驗(yàn)的過程中,課堂氣氛非?;钴S,基本上所有的學(xué)生都在努力編寫代碼實(shí)現(xiàn)功能,能夠跟隨授課教師步驟實(shí)現(xiàn)功能的達(dá)80%以上,其中每次都有大概25%的學(xué)生能夠完成授課教師布置的拓展功能,課程設(shè)計(jì)的答辯場(chǎng)面也非?;钴S,學(xué)生沉浸在自己的實(shí)現(xiàn)成果當(dāng)中。由此可見,遞進(jìn)式單案例教學(xué)法,能夠激活學(xué)生的興趣以及自主性,從而達(dá)到熟練掌握J(rèn)ava相關(guān)知識(shí)點(diǎn)、具備較高編程能力、有較強(qiáng)的系統(tǒng)分析能力和理解能力的要求。最終Java課程的教學(xué)效果得到了顯著提高。
[1]施霞萍,張歡歡,王瑾德,等.Java程序設(shè)計(jì)教程[M].北京:機(jī)械工業(yè)出版社,2006:2-3.
[2]張業(yè)男.利用貫穿案例進(jìn)行JAVA教學(xué)的探索[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2013(2):118-119.
[3]任平紅,陳矗等.貫穿案例教學(xué)法在JavaWeb程序設(shè)計(jì)教學(xué)中的應(yīng)用[J].計(jì)算機(jī)教育,2014(14):67-69.
[4]張哲,陳桂生.在Java語言教學(xué)中實(shí)施“項(xiàng)目驅(qū)動(dòng)”教學(xué)法的實(shí)踐探索[J].教育與職業(yè),2007(18):23-25.
[5]陳琦,劉儒德.當(dāng)代教育心理學(xué)[M].北京:北京師范大學(xué)出版社,2007:210-230.
龐光垚(1986.03-),男,漢族,廣西浦北縣,碩士,助理工程師,主要研究方向:軟件工程。
G
A
2095-9214(2015)03-0083-02
梧州學(xué)院信息與電子工程學(xué)院)