摘要:為了更好地實(shí)現(xiàn)Java程序設(shè)計方面創(chuàng)新人才和拔尖人才的培養(yǎng)的目標(biāo),以Java教學(xué)中影響學(xué)生實(shí)踐和創(chuàng)新能力培養(yǎng)的各個因素為切入點(diǎn),提出了一系列有助于培養(yǎng)學(xué)生Java實(shí)踐和創(chuàng)新能力的教學(xué)方法,并具體討論了各種方法的實(shí)施辦法。教學(xué)實(shí)踐表明這些方法是可行和有效的。
關(guān)鍵詞:Java 實(shí)踐教學(xué) 實(shí)踐能力 創(chuàng)新能力 教學(xué)方法
文章編號:1672-5913(2011)18-0012-04 中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B
基金項(xiàng)目:甘肅政法學(xué)院青年科研基金項(xiàng)目(GZF2010XQNLW53)。
Java課程是應(yīng)用實(shí)踐性的課程。長期教學(xué)經(jīng)驗(yàn)說明,單純的“理論+程序演示”的理論教學(xué)方法以及 “學(xué)生自主實(shí)驗(yàn)+教師隨堂指導(dǎo)”的實(shí)驗(yàn)教學(xué)方法存在著一些缺陷,表現(xiàn)為學(xué)生創(chuàng)新能力的欠缺和自主實(shí)踐能力較差。
教學(xué)過程是一個系統(tǒng)過程,涉及到該門課程的所有教學(xué)和實(shí)踐環(huán)節(jié),其中任意一個環(huán)節(jié)的薄弱都會導(dǎo)致學(xué)生實(shí)踐和創(chuàng)新能力培養(yǎng)效果不佳。因此,Java理論教學(xué)環(huán)節(jié)、實(shí)驗(yàn)教學(xué)環(huán)節(jié)、學(xué)期課程設(shè)計、學(xué)年論文(設(shè)計)、畢業(yè)論文(設(shè)計)環(huán)節(jié)、學(xué)科競賽環(huán)節(jié)、校外實(shí)踐環(huán)節(jié)等方面都是培養(yǎng)學(xué)生實(shí)踐和創(chuàng)新能力的關(guān)鍵環(huán)節(jié)。
以貫穿Java教學(xué)整個過程的各個重要環(huán)節(jié)為切入點(diǎn),從細(xì)節(jié)入手,扎扎實(shí)實(shí)落實(shí)好每一個關(guān)鍵環(huán)節(jié),是保證培養(yǎng)學(xué)生的Java實(shí)踐和創(chuàng)新能力的根本。
1 在理論教學(xué)環(huán)節(jié)中培養(yǎng)學(xué)生的實(shí)踐和創(chuàng)新能力
1.1 以問題和實(shí)際項(xiàng)目為核心,采用以線帶點(diǎn)的教學(xué)模式
需求是創(chuàng)新和應(yīng)用成果產(chǎn)生的動力和源泉。傳統(tǒng)的Java教材和教學(xué)內(nèi)容是按知識點(diǎn)為模塊組織的,即一個知識點(diǎn),一個針對該知識點(diǎn)的例題,這樣雖然有利于學(xué)生循序漸進(jìn)地學(xué)習(xí)和掌握各個基本知識點(diǎn)
及其用法,但這種教學(xué)方法,有時會導(dǎo)致學(xué)生一聽就會,一用就忘。其原因在于,學(xué)生從根本上并沒有掌握該知識點(diǎn)到底有什么用,只是聽懂了那道例題而已,沒有深層的理解和舉一反三的能力,學(xué)過時間不久,就會全然忘記。當(dāng)學(xué)生遇到一個實(shí)際問題時,就會束手無策,不能將當(dāng)時上課時感覺已經(jīng)“掌握得很好”的各個知識點(diǎn)進(jìn)行融會貫通和綜合運(yùn)用。因此,教師在教學(xué)中要運(yùn)用幾個能貫穿大部分教學(xué)知識點(diǎn)的綜合實(shí)例和實(shí)際應(yīng)用項(xiàng)目,有說服力地說明貫穿在其中的各知識點(diǎn)的重要性和用法。經(jīng)過較長時間的檢驗(yàn),這種教學(xué)方法的優(yōu)點(diǎn)是:其一,可以提高課堂教學(xué)的趣味性;其二,可以減少學(xué)生在學(xué)習(xí)各個知識點(diǎn)時的茫然和困惑;其三,可以提高學(xué)生綜合各個知識點(diǎn),形成知識網(wǎng)絡(luò),進(jìn)而進(jìn)行實(shí)際問題解決的能力。
所謂“以線帶點(diǎn)”是以問題和實(shí)際項(xiàng)目為主線,貫穿各個分散的Java知識點(diǎn),完成Java知識點(diǎn)的脈絡(luò)化。
1.2 以學(xué)生為主體,教師為主導(dǎo)
在以往教學(xué)過程中,限于課時,“滿堂灌”現(xiàn)象仍時有發(fā)生,結(jié)果是教學(xué)任務(wù)完成了,但學(xué)生的主體地位沒有體現(xiàn)出來,沒有充分參與到教學(xué)過程中,積極性不高,教學(xué)效果受到很大影響。為了克服這一點(diǎn),“互問互答”的啟發(fā)式和討論式教學(xué)是一種好方式,這樣可以最大程度地調(diào)動學(xué)生學(xué)習(xí)積極性和主動性,也有利于讓學(xué)生在教學(xué)過程中保持精力集中的良好狀態(tài),長期以來可以培養(yǎng)學(xué)生創(chuàng)造性思維能力。教師在教學(xué)過程中,從一個較高的高度引導(dǎo)學(xué)生如何學(xué)習(xí)知識,提高學(xué)生學(xué)習(xí)效率和獲取新知的能力,真正實(shí)現(xiàn)教學(xué)相長。
1.3 開拓視野,編寫高效的程序
在講授類創(chuàng)建方法的時候,教師除了講授用傳統(tǒng)的“new類構(gòu)造方法”的方式外,可以介紹運(yùn)用java.lang包中Class類的forName方法創(chuàng)建類對象[1],同時介紹運(yùn)用Java設(shè)計模式中的“工廠模式”進(jìn)行類對象的創(chuàng)建,并比較幾種創(chuàng)建類對象方法的異同,從而培養(yǎng)學(xué)生運(yùn)用多種方法解決同一問題的能力。
引導(dǎo)學(xué)生在算法設(shè)計上下功夫,一個實(shí)用軟件的開發(fā),往往需要編寫高效率的算法,因此,算法的設(shè)計在Java程序教學(xué)中仍然是非常重要的。但由于課時有限,不可能占用較多課時來彌補(bǔ)學(xué)生在算法方面的不足,可以做到的是,引導(dǎo)學(xué)生總結(jié)和復(fù)習(xí)先修的算法設(shè)計課程以及其他程序設(shè)計課程中所學(xué)的算法設(shè)計知識,借助Java程序進(jìn)行實(shí)現(xiàn),并比較效率;介紹一些智能算法如“遺傳算法”的設(shè)計和實(shí)現(xiàn)的相關(guān)知識,幫助學(xué)有余力的學(xué)生運(yùn)用這些智能算法進(jìn)行實(shí)際問題的解決,將非常有助于提高學(xué)生創(chuàng)新能力的培養(yǎng)。
2 注重實(shí)驗(yàn)教學(xué)課堂的效率
Java實(shí)驗(yàn)教學(xué)是Java教學(xué)的重要組成部分,更是提高學(xué)生動手能力和創(chuàng)新能力的重要途徑。
2.1 落實(shí)實(shí)驗(yàn)預(yù)習(xí)
一般情況下,實(shí)驗(yàn)課時是2學(xué)時,這對于一個較大的實(shí)驗(yàn)項(xiàng)目來說,根本沒有可能在2個實(shí)驗(yàn)學(xué)時中完成,因此,提前布置實(shí)驗(yàn)任務(wù)并督促學(xué)生按期完成非常重要。如一個JSP項(xiàng)目“學(xué)生成績管理系統(tǒng)”的綜合實(shí)驗(yàn)項(xiàng)目,應(yīng)讓學(xué)生在做該實(shí)驗(yàn)項(xiàng)目之前,就基本完成系統(tǒng)的設(shè)計及大部分的編碼工作。在實(shí)驗(yàn)課堂中,主要是配置好開發(fā)環(huán)境和調(diào)試系統(tǒng),在指導(dǎo)教師的指導(dǎo)下解決遇到的問題并按指導(dǎo)教師的要求做進(jìn)一步的改進(jìn)和完善。
2.2 檢驗(yàn)實(shí)驗(yàn)效果
指導(dǎo)教師對于學(xué)生的實(shí)驗(yàn)成果應(yīng)及時檢查和提問,及時發(fā)現(xiàn)每個學(xué)生在做實(shí)驗(yàn)項(xiàng)目時遇到的問題以及該生對該實(shí)驗(yàn)理解、設(shè)計和實(shí)現(xiàn)的程度。
3 重視課程設(shè)計、學(xué)年論文設(shè)計與實(shí)踐
Java課程設(shè)計是在學(xué)生學(xué)習(xí)完Java程序設(shè)計課程后對其進(jìn)行的一次全面的綜合練習(xí)和考查。課設(shè)成績將作為本課程的期末考核成績的重要組成部分。通過課程設(shè)計,使學(xué)生能夠得到較系統(tǒng)的技能訓(xùn)練,從而鞏固和加深對Java編程的基礎(chǔ)理論知識的理解,培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識解決實(shí)際問題的能力,使學(xué)生成為具有扎實(shí)的理論基礎(chǔ)和較強(qiáng)的獨(dú)立動手能力的應(yīng)用型人才。
3.1 注重題目設(shè)計的目標(biāo)性和歸類
針對不同的Java應(yīng)用,將課程設(shè)計題目合理歸類,如“基于Java SE的桌面應(yīng)用系統(tǒng)”類、“基于Java EE的Web應(yīng)用開發(fā)系統(tǒng)”類、“基于Java ME的移動設(shè)備系統(tǒng)”類等。從而做到有針對性。
在指導(dǎo)學(xué)生選題時,告訴學(xué)生在完成該題目時,可以在哪些方面有創(chuàng)新點(diǎn)和亮點(diǎn),并將這些創(chuàng)新點(diǎn)的完成情況作為評價課程設(shè)計成績的重要依據(jù)。
3.2 強(qiáng)調(diào)學(xué)生所做項(xiàng)目的實(shí)用性和原創(chuàng)性
以往學(xué)生所做的課程設(shè)計、學(xué)年論文設(shè)計與實(shí)踐項(xiàng)目大都源于教師指定的題目,而這些題目往往都是一些虛擬項(xiàng)目如“XX項(xiàng)目的設(shè)計與實(shí)現(xiàn)”,題目本身比較含糊,導(dǎo)致學(xué)生無法進(jìn)行具體的需求分析,只能造出一個“需求分析和開發(fā)背景”。這樣的項(xiàng)目完成后,即使做得比較“完美”,也是離實(shí)際應(yīng)用較遠(yuǎn),不能投入實(shí)際應(yīng)用。
培養(yǎng)學(xué)生求真務(wù)實(shí)、追求原創(chuàng)的素養(yǎng),克服浮躁情緒,避免僅為完成任務(wù)抄襲他人項(xiàng)目成果。在教學(xué)過程中,經(jīng)常發(fā)現(xiàn)部分學(xué)生將資料查閱變成了“復(fù)制—粘貼”:不去汲取他人項(xiàng)目成果中的精華,也不去做任何改進(jìn),直接原封不動地套用。結(jié)果自己在“實(shí)
踐”過程中不但沒有學(xué)到任何知識,積累任何開發(fā)經(jīng)驗(yàn),反而養(yǎng)成了不勞而獲,抄襲剽竊的壞習(xí)氣。因此,在引導(dǎo)學(xué)生進(jìn)行項(xiàng)目實(shí)踐的過程中,在對其進(jìn)行各階段指導(dǎo)和檢查時必須嚴(yán)格把關(guān),引導(dǎo)和幫助學(xué)生樹立良好的專業(yè)道德素質(zhì)和研發(fā)精神。
4 畢業(yè)論文環(huán)節(jié)的創(chuàng)新能力培養(yǎng)
4.1 設(shè)計、指導(dǎo)與完成創(chuàng)新性、研究性題目
在前些年的畢業(yè)論文選題中,較多見的是:“基于Java SE的XX系統(tǒng)的設(shè)計與實(shí)現(xiàn)”,“基于JSP的XX系統(tǒng)的設(shè)計與實(shí)現(xiàn)”等。目前這類題目作為計算機(jī)本科生畢業(yè)論文題目,有以下一些弊端:
1) Java的開放資源非常多,以這類命題的網(wǎng)絡(luò)及參考書資源、甚至整個軟件設(shè)計開發(fā)背景、設(shè)計過程、實(shí)現(xiàn)過程、實(shí)現(xiàn)的全部源碼都有現(xiàn)成的。
2) 虛擬項(xiàng)目較多,大都是自圓其說,如對系統(tǒng)的設(shè)計和開發(fā)背景是自定的,而不是源于實(shí)際用戶的實(shí)際開發(fā)要求。學(xué)生在完成過程中,沒有與用戶溝通和交流的機(jī)會,沒有反復(fù)滿足用戶具體、特殊要求的過程,從而導(dǎo)致學(xué)生沒有通過想辦法、找妙招來解決問題的磨礪過程。
3) 若有兩個以上的學(xué)生選擇了題目不同,但實(shí)際設(shè)計和實(shí)現(xiàn)過程大同小異的題目,就不能保證一人一題的原則。
畢業(yè)論文與設(shè)計是對本科生本科學(xué)習(xí)知識的大檢閱,也是對本科生學(xué)術(shù)研究能力、分析和解決實(shí)際問題能力的重要培養(yǎng)環(huán)節(jié),也是為本科生將來深造和從事研發(fā)相關(guān)工作所作的一個鋪墊。為了突出畢業(yè)論文(或設(shè)計)環(huán)節(jié)中對學(xué)生創(chuàng)新能力的培養(yǎng),在畢業(yè)論文的選題上,指導(dǎo)教師應(yīng)進(jìn)一步把關(guān),設(shè)計出具有實(shí)際開發(fā)背景、創(chuàng)新性和一定研究性的題目。
4.2 注重對現(xiàn)有軟件包的二次開發(fā)
基于Java的用于各種研究和實(shí)踐的軟件包有很多,以基于Java的多Agent開發(fā)工具包JADE(Java Agent Development Framework)[2]和遺傳算法工具包JGAP(Java Genetic Algorithms Package)[3]為例,說明
利用基于Java的工具包進(jìn)行二次開發(fā)來培養(yǎng)學(xué)生創(chuàng)新能力的實(shí)例。
對于基礎(chǔ)較好、有較強(qiáng)科研興趣的學(xué)生,可以引導(dǎo)其運(yùn)用諸如JADE這樣的多Agent系統(tǒng)開發(fā)工具包開發(fā)簡單實(shí)用的多Agent系統(tǒng),從而帶動學(xué)生學(xué)習(xí)和研究多Agent系統(tǒng)的理論和實(shí)踐方法。遺傳算法是當(dāng)前應(yīng)用廣泛地智能算法之一,而基于Java語言的遺傳算法工具包JGAP中已實(shí)現(xiàn)了簡單遺傳算法和部分高級遺傳算法的基本框架,可以引導(dǎo)學(xué)生快速在其基礎(chǔ)上完成一些改進(jìn)和在開發(fā),最終達(dá)到學(xué)生理解遺傳算法基本理論和實(shí)際應(yīng)用的目的。
5 以競賽高度為標(biāo)桿,促進(jìn)學(xué)生進(jìn)行高層次編程訓(xùn)練
Java競賽題目具有很強(qiáng)的新穎性和挑戰(zhàn)性,其目的在于考察參賽學(xué)生的創(chuàng)造性解決實(shí)際問題的能力和編程思維。引導(dǎo)學(xué)生參與各級各類的Java編程競賽或以歷屆競賽題目作為訓(xùn)練,都能達(dá)到提高學(xué)生的創(chuàng)新意識和能力以及培養(yǎng)拔尖學(xué)生的目的。
6 產(chǎn)學(xué)研結(jié)合
6.1 創(chuàng)新實(shí)驗(yàn)室和基地建設(shè)
為了使學(xué)生具有快速適應(yīng)市場Java人才的需求、能夠獨(dú)立創(chuàng)業(yè)的目的,根據(jù)學(xué)校客觀條件的不同,建立一定規(guī)模的創(chuàng)新實(shí)驗(yàn)室或聯(lián)系實(shí)驗(yàn)基地尤為重要。這是因?yàn)椋?br/> 1) 較大型工程實(shí)踐項(xiàng)目的開發(fā)都需要一個較長的周期,一般為3~5個月或更長。對參與完成項(xiàng)目的學(xué)生的訓(xùn)練和培養(yǎng)也需要一個較長的周期。而普通和短期的實(shí)驗(yàn)項(xiàng)目訓(xùn)練無法達(dá)到培養(yǎng)學(xué)生獨(dú)立承擔(dān)實(shí)際工程項(xiàng)目的能力。
2) 在對學(xué)生進(jìn)行訓(xùn)練和實(shí)際項(xiàng)目的開發(fā)過程中,不可能占用正常的上課時間,而是充分利用課外、周末以及節(jié)假日的課余時間,有教師指導(dǎo)團(tuán)隊對學(xué)生進(jìn)行輔導(dǎo)、訓(xùn)練和協(xié)同項(xiàng)目開發(fā)。
3) 一個固定而且全天候的實(shí)驗(yàn)場所和一定數(shù)量、檔次的儀器設(shè)備是能否完成創(chuàng)新性實(shí)驗(yàn)和實(shí)際項(xiàng)目開發(fā)的重要保障。
6.2 承接軟件開發(fā)項(xiàng)目,為學(xué)生走向市場奠定基礎(chǔ)
由指導(dǎo)教師牽頭,分析和研究市場對Java編程人員的需求,有針對性地承攬學(xué)校及校外的應(yīng)用開發(fā)項(xiàng)目,組建以學(xué)生為主體的項(xiàng)目開發(fā)小組,進(jìn)行項(xiàng)目開發(fā)。
6.3 進(jìn)入課題組,鍛煉科研能力
指導(dǎo)教師帶領(lǐng)學(xué)生進(jìn)入創(chuàng)新實(shí)驗(yàn)室,共同開展和完成Java相關(guān)的科研、教學(xué)改革和實(shí)踐項(xiàng)目,讓參與項(xiàng)目的學(xué)生體驗(yàn)科研過程,學(xué)習(xí)科研方法,培養(yǎng)科研精神。
7 教學(xué)中應(yīng)用系統(tǒng)科學(xué)方法
系統(tǒng)科學(xué)方法理論是計算機(jī)科學(xué)與技術(shù)的重要的方法論之一[4]。面向?qū)ο缶幊趟枷牒蛙浖こ淌窍到y(tǒng)科學(xué)方法在軟件開發(fā)中的集中體現(xiàn)。在學(xué)生的
實(shí)踐教學(xué)各個環(huán)節(jié)中,往往會做一些類似于“XX信息系統(tǒng)的設(shè)計與實(shí)現(xiàn)”之類的項(xiàng)目。但學(xué)生在實(shí)踐過程中,急于求成,只關(guān)注系統(tǒng)的實(shí)現(xiàn),一開始就寫源碼,不注重按軟件工程理論和方法進(jìn)行系統(tǒng)分析和設(shè)計,也不注重系統(tǒng)中類的設(shè)計和類間關(guān)系的設(shè)計,是導(dǎo)致項(xiàng)目開發(fā)失敗或脫離實(shí)際應(yīng)用的重要原因。更嚴(yán)重的是,這樣的開發(fā)習(xí)慣一旦養(yǎng)成,將會被學(xué)生帶到今后的實(shí)際項(xiàng)目開發(fā)中,情況會更加糟糕。
8 結(jié)語
通過長期的Java教學(xué)實(shí)踐,筆者總結(jié)出“學(xué)生實(shí)踐和創(chuàng)新能力培養(yǎng)效果的好壞取決于每個教學(xué)環(huán)節(jié)完成好壞”的結(jié)論。從細(xì)節(jié)入手,扎扎實(shí)實(shí)完成好每一個教學(xué)環(huán)節(jié),不僅可以培養(yǎng)學(xué)生實(shí)踐和創(chuàng)新能力,而且可以幫助學(xué)生養(yǎng)成良好的學(xué)習(xí)、研究習(xí)慣并為學(xué)生就業(yè)奠定堅實(shí)基礎(chǔ)。
參考文獻(xiàn):
[1]