張會
摘要:針對“Java語言程序設(shè)計”課程教學(xué)中存在的問題,提出了案例式教學(xué)方法、上機實驗項目多樣化、小組協(xié)作完成項目的教學(xué)改革方案,并進(jìn)行了實施,有效地提高了學(xué)生的學(xué)習(xí)興趣及綜合編程能力。
關(guān)鍵詞:程序設(shè)計;教學(xué)改革; Java; 案例式
中圖分類號:G64 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)12-0162-02
Abstract: According to " Java programming" course teaching problems, and puts forward the scheme of the teaching reform, including case based teaching method, diversification of experimental items, team work to complete the project, and gives the implementation method, and effectively improve the students' learning interest and comprehensive ability of programming.
Key words: programming; teaching reform; Java; case method
《Java語言程序設(shè)計》課程是計算機相關(guān)專業(yè)的一門專業(yè)基礎(chǔ)課,其主要目的是使學(xué)生能建立面向?qū)ο缶幊痰挠嬎銠C思維,初步實現(xiàn)以Java為核心的應(yīng)用程序開發(fā)。但許多學(xué)生在學(xué)習(xí)完本門課程后,并不能按預(yù)期實現(xiàn)Java應(yīng)用程序的開發(fā),因此本文就《Java語言程序設(shè)計》教學(xué)中存在的問題進(jìn)行分析并進(jìn)行改革探討。
1.存在的問題
1.1不注重上機實踐操作
現(xiàn)在的Java語言程序設(shè)計課程教學(xué)多采用理論教學(xué)在多媒體教室進(jìn)行,在開始幾周純理論課教學(xué)后,再在機房進(jìn)行一周一次的實驗教學(xué)。而實驗課多是對理論教學(xué)中的單個知識點進(jìn)行復(fù)習(xí)、驗證,其實踐教學(xué)存在一定的隨意性,未能形成教學(xué)規(guī)范體系[1]。傳統(tǒng)教學(xué)方式注重對單個知識點的把握,忽略各知識點的連貫性及系統(tǒng)性,因而學(xué)生缺乏對解決實際問題的鍛煉,缺乏對實際問題的分析,設(shè)計,編碼等工程能力的培養(yǎng)。
1.2培養(yǎng)的學(xué)生工程能力不足
現(xiàn)在有些高校在進(jìn)行Java語言程序設(shè)計課程的教學(xué)時,提出了以項目為驅(qū)動的教學(xué)模式,培養(yǎng)學(xué)生工程能力,但一些高校在實施時,只是在課程結(jié)束的最后兩周,給到學(xué)生一兩個項目,讓學(xué)生自主去完成,并沒有精心設(shè)計教學(xué)項目,將項目開發(fā)流程、編碼規(guī)范、軟件測試等過程融入Java程序設(shè)計課程的平常教學(xué)中,也就無法使學(xué)生用所學(xué)理論知識運用于實際,并解決實際問題。
1.3教學(xué)手段單一
Java教學(xué)現(xiàn)在多采用傳統(tǒng)課堂教學(xué)方法,在整個教學(xué)實施過程中,不能融入“項目教學(xué)法”,“小組教學(xué)法”,“學(xué)生示范教學(xué)法”,“項目答辯教學(xué)法”等教學(xué)方法,沒有一套科學(xué)的教學(xué)實踐體系,也就無法提高學(xué)生的IT職業(yè)素質(zhì),更無法實現(xiàn)應(yīng)用型人才的培養(yǎng)。
2.教學(xué)改革措施和方法
2.1 課堂教學(xué)采用“案例式”教學(xué)方法
我們在教學(xué)過程中采用單元案例式教學(xué)法,講授完一個單元知識的相關(guān)概念及語法后,設(shè)計一個案例供學(xué)生即時鞏固所學(xué)內(nèi)容。如講完Java類,對象的概念及定義方法后,設(shè)計一個ATM機類對所學(xué)的類和對象知識點進(jìn)行實際應(yīng)用;對類的繼承、抽象、接口及多態(tài)知識等點,設(shè)計一個學(xué)校師生共享打印機的案例;數(shù)組、字符串常用類知識點,設(shè)計一個在登錄時常用的驗證碼的生成案例;對于Java輸入輸出流知識點設(shè)計一個新建文件,復(fù)制文件的案例。對于每一個單元的知識點設(shè)計一個貼近學(xué)生的生活的真實案例,遵循“理論夠用,實踐為主,以實踐促理論的原則”[2],交替開展“做中學(xué)”與“學(xué)中做”的案例式教學(xué)法。
現(xiàn)舉例說明將所授知識點應(yīng)用于案例式教學(xué)的方法。如學(xué)生清楚Java類、對象的概念和定義后,用所學(xué)類的知識模擬持卡在ATM機取錢,查詢余額程序的編寫。通過模擬真實場景來實現(xiàn)類與對象的抽象,從而提高學(xué)生的學(xué)習(xí)興趣,激發(fā)學(xué)生自主學(xué)習(xí)。在持卡在ATM機上取錢的案例中,首先抽象出Card類,Card類包含賬號、余額、密碼及持卡人姓名等基本屬性,這些屬性抽象成Card類的私有成員,再在Card類中通過get和set方法對這些屬性進(jìn)行封裝,形成最基本的原子類。
現(xiàn)實中,通過ATM機取錢時,首先需要插入一張銀行卡。因此在抽象ATM類時,其成員變量只需要一個Card對象,再針對Card對象抽象出查詢余額,取錢等操作,這些操作都是基于密碼驗證正確的基礎(chǔ)上,所以在ATM類中抽象出一個驗證密碼的verifyPwd()方法。由于存錢,轉(zhuǎn)賬等其他操作方法的實現(xiàn)類似于取錢方法的實現(xiàn),下面代碼中,略去了其他操作的方法實現(xiàn)。ATM類的定義如下:
import javax.swing.JOptionPane;
public class ATM {
private Card card;
public ATM(Card card){
this.card=card;
}
public boolean verifyPwd(){//驗證密碼
String pwdStr=JOptionPane.showInputDialog("請輸入密碼");
if(pwdStr.equals(card.getPassword())){
return true;
}
JOptionPane.showMessageDialog(null, "密碼錯誤\n");
return false;
}
public void drawMoney(){//取錢操作
if(verifyPwd()){//密碼驗證正確,進(jìn)入下面代碼實現(xiàn)取錢操作
String moneyStr=JOptionPane.showInputDialog("請輸入取款金額:");
int money=Integer.parseInt(moneyStr);
double balance=card.getBalance();
if(money>balance) {JOptionPane.showMessageDialog(null, "余額不足");return;}
card.setBalance(balance-money);
JOptionPane.showMessageDialog(null, "請拿好你的錢!"+money);
}
}
public void queryMoney(){//查詢余額
if(verifyPwd()){//密碼驗證正確,顯示查詢余額
JOptionPane.showMessageDialog(null, "余額有:"+card.getBalance());
}
}
}
本案例綜合類的抽象,封裝性,類的組合即在ATM類中包含Card對象等知識點,與傳統(tǒng)教學(xué)方式相比,由于所要解決的問題貼近真實生活場景,讓學(xué)生能更真實的理解類與對象的概念及實現(xiàn)意義,因此案例教學(xué)方法更能充分發(fā)掘?qū)W生的創(chuàng)造潛能,培養(yǎng)學(xué)生學(xué)習(xí) Java 語言的興趣,提高學(xué)生解決實際問題的綜合能力[3]。
2.2上機實驗項目多樣化
我們設(shè)計的實驗項目要求結(jié)合所學(xué)知識點解決日常實際問題,對實際問題進(jìn)行簡化和提煉,形成以解決實際問題來開展實踐教學(xué)的模式[4]。把學(xué)生的學(xué)習(xí)活動置于有實際意義的問題情景中,形成解決實際問題的技能和自主學(xué)習(xí)的能力。
我們將Java語言程序設(shè)計課程的實驗項目分為驗證型,設(shè)計型,綜合型三類實驗,驗證型實驗主要用來驗證所學(xué)知識點,對所學(xué)的基礎(chǔ)語法及概念加以鞏固。但為了提高學(xué)生的編程能力及學(xué)生的編程興趣,驗證型與設(shè)計型實驗交替穿插,并在Java課程結(jié)束后再設(shè)計一個綜合型實驗對整個課程內(nèi)容進(jìn)行涵蓋,形成上機實踐教學(xué)體系結(jié)構(gòu)。其中設(shè)計型和綜合型實驗的內(nèi)容來源于工程實際,反映工程的實際問題,令實驗更有趣味,更具現(xiàn)實意義[5],實驗項目多樣化能有效調(diào)動學(xué)生自主學(xué)習(xí)的積極性,并提高學(xué)生分析和解決問題的能力。我們上機實驗項目設(shè)計如表1所示。
2.3 小組協(xié)作完成項目
在軟件公司上,軟件開發(fā)都是以項目小組為單位進(jìn)行,在整個開發(fā)的過程中包括需求分析,軟件設(shè)計,編碼、測試都要求小組成員具備較強的團(tuán)隊協(xié)作精神及良好的溝通能力。為培養(yǎng)學(xué)生的團(tuán)隊精神,在實驗過程中,除了驗證型實驗項目以個人為單位進(jìn)行外,設(shè)計型和綜合型實驗均以3-4人為一個小組進(jìn)行協(xié)作完成,每個小組由一名組長進(jìn)行管理,組長負(fù)責(zé)對項目進(jìn)行分工,當(dāng)然在分工時,小組長要使每個組員所分到的功能模塊包含本次實驗課要求練習(xí)的實驗內(nèi)容,從而達(dá)到每名學(xué)生實踐的目的。小組成員通過對實驗需求進(jìn)行交流、討論并最終確定項目功能,再討論并確定采用的設(shè)計模式,最后分工進(jìn)行編碼及測試。為檢驗項目完成效果,在項目完成后小組各成員需要演示、答辯所實現(xiàn)的項目功能,并由老師評分。整個實驗過程中各小組采用軟件開發(fā)的步驟進(jìn)行,此過程既提高了學(xué)生的工程能力,又培養(yǎng)了學(xué)生的溝通能力,團(tuán)隊協(xié)作能力,為學(xué)生進(jìn)行入軟件開發(fā)行業(yè)打下基礎(chǔ)。
2.4全面改革課程考核,強化素質(zhì)和能力
我們對學(xué)生成績評定采用多樣化的方式,包括客觀評定和主觀評定??陀^評定通過期末上機考試成績來客觀評定,其中期末考試包括理論選擇題和操作題。主觀評定包括教師評定、項目小組成員互評,學(xué)生自評。教師對每個學(xué)生通過課堂表現(xiàn)、學(xué)習(xí)態(tài)度、案例完成情況、出勤記錄、項目答辯等方面進(jìn)行評定。項目小組成員互評采用小組中各成員對被評學(xué)生進(jìn)行評價,包括該名學(xué)生對項目實現(xiàn)的貢獻(xiàn)情況、任務(wù)模塊完成情況、團(tuán)隊合作情況等方面進(jìn)行不記名評分,再計算出被評學(xué)生的平均成績。學(xué)生自評通過學(xué)生對Java學(xué)習(xí)的自我情況,完成Java項目功能情況及自我能力進(jìn)行自我評價打分。學(xué)生成績計算比例為:期末上機考試客觀成績占總評成績50%,教師評分占總成績的30%,小組成員互評成績占總評成績的10%,個人評分占總評成績的10%。
3 課程改革成效分析
(1)采用案例教學(xué)方法、上機實驗項目多樣化、小組協(xié)作完成項目的教學(xué)實踐模式既豐富了教學(xué)內(nèi)容,提高了學(xué)生學(xué)習(xí)的主動性和創(chuàng)新性,又培養(yǎng)了學(xué)生工程能力及團(tuán)隊協(xié)作精神。
(2)所授課班級學(xué)生的期末考試成績提高了10%,參加Java競賽提高了20%。2016年所授課班級學(xué)生參加“藍(lán)橋杯”大賽的Java組有3名學(xué)生獲得四川省一等獎及國家級二等獎,10名學(xué)生分別獲得省級二等獎三等獎及優(yōu)秀獎。
(3)所授課畢業(yè)學(xué)生近兩年從事Java相關(guān)工作由25%提高到70%,用人單位對我院計算機相關(guān)專業(yè)畢業(yè)生相當(dāng)滿意并與學(xué)院達(dá)成Java方向?qū)W生長期需求意向。
4 結(jié)束語
實踐證明,對《Java語言程序設(shè)計》課程教學(xué)進(jìn)行的一系列改革后,提高了學(xué)生學(xué)習(xí)興趣,由被動學(xué)習(xí)變?yōu)橹鲃訉W(xué)習(xí),培養(yǎng)了學(xué)生分析問題及解決問題的工程實踐能力,在畢業(yè)后能快速適應(yīng)企業(yè)項目開發(fā)。
參考文獻(xiàn):
[1]蔣輝,孫林娟,王國振.“Java程序設(shè)計”實踐教學(xué)體系研究[J].教育技術(shù),2017, 16(7):44-46.
[2]劉艷梅.基于“實踐和創(chuàng)新”能力培養(yǎng)的Java系列課程群教學(xué)研究與改革[J] .計算機教育,2015(14):35-40.
[3]李勁華.通識教育中Java程序設(shè)計課程的教學(xué)研究與實踐[J].計算機教育,2008( 20).
[4]姚明,彭志平,李啟銳等.Java課內(nèi)實踐教學(xué)改革[J].計算機教育2016(6):151-154.
[5]鄒本國.提高學(xué)生工程實踐能力[J].河北師范大學(xué)學(xué)報:教育科學(xué)版,2008(12):116-118.