姚明 彭志平 李啟銳 項(xiàng)順伯
摘要:針對目前應(yīng)用型高校計算機(jī)專業(yè)學(xué)生就業(yè)較難的現(xiàn)象,就教學(xué)內(nèi)容的實(shí)用性與學(xué)生編程技能培養(yǎng)、促進(jìn)學(xué)生就業(yè)的問題,強(qiáng)調(diào)重視課內(nèi)實(shí)踐教學(xué),同時改進(jìn)實(shí)驗(yàn)內(nèi)容和教學(xué)方法,并以Java語言課程為例,分析課內(nèi)實(shí)踐教學(xué)中所存在的問題,闡述課內(nèi)實(shí)踐教學(xué)的要點(diǎn)以及改革實(shí)踐的過程。
關(guān)鍵詞:Java;實(shí)踐教學(xué);教學(xué)改革
Java在培養(yǎng)學(xué)生面向?qū)ο缶幊毯蚃ava EE系統(tǒng)平臺構(gòu)架的學(xué)習(xí)過程中起到了非常重要的作用。目前眾多應(yīng)用型高校均將其作為計算機(jī)專業(yè)的必修課程,使學(xué)生具備一定的面向?qū)ο蟪绦蛟O(shè)計能力、掌握使用Java進(jìn)行軟件開發(fā)技術(shù)的能力,為畢業(yè)后順利就業(yè)奠定基礎(chǔ)。但是實(shí)際教學(xué)效果不甚理想,學(xué)生就業(yè)狀況也并不樂觀。究其原因,教學(xué)過程中存在學(xué)生實(shí)踐能力培養(yǎng)薄弱、教學(xué)與實(shí)際應(yīng)用相脫離等問題。計算機(jī)科學(xué)是一門對理論性和實(shí)踐性高要求的學(xué)科,必須理論與實(shí)際相結(jié)合,重視實(shí)踐對于理論學(xué)習(xí)與技能培養(yǎng)的作用。而實(shí)踐能力的培養(yǎng),則首先應(yīng)重視課內(nèi)實(shí)踐教學(xué)(也稱課內(nèi)實(shí)驗(yàn)教學(xué))。課內(nèi)實(shí)踐是指與理論教學(xué)并行實(shí)施的實(shí)踐教學(xué),即嵌入到專業(yè)基礎(chǔ)課或?qū)I(yè)課內(nèi)的實(shí)驗(yàn)實(shí)踐教學(xué),能夠加深學(xué)生對理論知識的理解以及培養(yǎng)學(xué)生的動手能力,特別是運(yùn)用所學(xué)知識解決實(shí)際問題的能力。同時,課內(nèi)實(shí)踐也是一項(xiàng)探索性和創(chuàng)造性很強(qiáng)的實(shí)踐活動,能培養(yǎng)學(xué)生的創(chuàng)新意識和探索精神。
1課內(nèi)實(shí)踐教學(xué)中存在的問題
長期以來,由于受到重理論、輕實(shí)踐思想的影響,課內(nèi)實(shí)踐教學(xué)沒有得到應(yīng)有的重視。與此同時存在著較大的問題:學(xué)生實(shí)際操作能力不足,離開了實(shí)驗(yàn)的教材和教師的幫助便很難獨(dú)立完成實(shí)驗(yàn),更談不上實(shí)踐技能得到提高。
1.1驗(yàn)證性實(shí)驗(yàn)多。綜合性、設(shè)計性實(shí)驗(yàn)較少
在大多數(shù)的實(shí)驗(yàn)教學(xué)中,教師通過根據(jù)大綱和教材內(nèi)容所編寫的實(shí)驗(yàn)指導(dǎo)書,讓學(xué)生上機(jī)編寫小程序從而對一些知識點(diǎn)加以驗(yàn)證、理解和吸收,但這些知識點(diǎn)之間往往沒有建立相關(guān)的綜合串聯(lián)。另外,在大多數(shù)教學(xué)中一定程度上忽視了Java具有需要極強(qiáng)實(shí)踐性的特征,不利于對學(xué)生實(shí)踐能力的培養(yǎng),也不易于激發(fā)出學(xué)生對于學(xué)習(xí)的積極性、自主性和創(chuàng)造性。
1.2與軟件企業(yè)的實(shí)際需求脫節(jié)
軟件企業(yè)要求Java程序員所具備的編程知識與技能有哪些?如何完成相關(guān)知識、技能的準(zhǔn)備和培養(yǎng)?這些問題是教師在教學(xué)中較少關(guān)注的,課堂上只是按照課本的內(nèi)容來進(jìn)行理論教學(xué),對于相關(guān)知識和技能沒有補(bǔ)充和拓展,課內(nèi)實(shí)驗(yàn)也主要是依托課本內(nèi)的實(shí)驗(yàn),缺乏創(chuàng)造性,沒有將理論知識的學(xué)習(xí)與解決實(shí)際問題能力的培養(yǎng)相結(jié)合。
1.3對教學(xué)方法的運(yùn)用把握不當(dāng)
近年來,程序設(shè)計課內(nèi)實(shí)踐教學(xué)中提倡較多的方法主要有任務(wù)驅(qū)動教學(xué)法、案例教學(xué)法或案例任務(wù)驅(qū)動法等,但是教師常不能準(zhǔn)確把握對于這些方法的運(yùn)用,課堂體現(xiàn)為學(xué)生照搬書中實(shí)驗(yàn)指導(dǎo)要求,按部就班地將一些程序代碼輸入計算機(jī)中進(jìn)行驗(yàn)證。教師很少以啟發(fā)或研討的方式指導(dǎo)實(shí)驗(yàn)進(jìn)行,而是在課堂中設(shè)置難度不當(dāng)?shù)娜蝿?wù),提供缺乏模擬真實(shí)問題的情境,又或者是對要解決的(案例)問題的設(shè)置較為隨意,缺少分析討論、解決問題的思路指引。
1.4教學(xué)流于形式
一部分學(xué)生由于基礎(chǔ)不扎實(shí)或缺乏學(xué)習(xí)興趣,對于實(shí)驗(yàn)作業(yè)采取應(yīng)付的做法,完成的質(zhì)量不高或者抄襲他人作業(yè);一部分學(xué)生偏重理論學(xué)習(xí),對上機(jī)實(shí)踐的重視程度不夠,認(rèn)為實(shí)驗(yàn)?zāi)康闹皇菫榱送ㄟ^作業(yè)檢查并得到不低的實(shí)驗(yàn)分?jǐn)?shù);一部分學(xué)生雖然學(xué)習(xí)態(tài)度端正,但編程能力不足,獨(dú)立完成作業(yè)難度較大;還有一部分學(xué)生雖然基礎(chǔ)扎實(shí),但認(rèn)真完成實(shí)驗(yàn)之余卻缺乏對于實(shí)驗(yàn)過程的思考和總結(jié)。
2把握課內(nèi)實(shí)踐教學(xué)的幾個要點(diǎn)
成功的課內(nèi)實(shí)踐教學(xué)是內(nèi)容、設(shè)備、手段及師生互動等諸因素共同作用的結(jié)果。對Java課內(nèi)實(shí)踐教學(xué)而言,以學(xué)生為本,使學(xué)生通過完成精心安排與設(shè)計的實(shí)驗(yàn),從而實(shí)現(xiàn)理論知識與實(shí)踐能力的提高,使學(xué)生編程技能與素質(zhì)培養(yǎng)獲得實(shí)效性進(jìn)步。
2.1實(shí)驗(yàn)內(nèi)容應(yīng)有明確的指向
編程實(shí)驗(yàn)教學(xué)的最終目標(biāo)是培養(yǎng)學(xué)生的編程技能與素質(zhì)。Java涉及教學(xué)內(nèi)容廣泛但課內(nèi)實(shí)踐學(xué)時畢竟有限,實(shí)驗(yàn)內(nèi)容的選擇須有針對性,即從實(shí)驗(yàn)內(nèi)容的實(shí)用性和學(xué)生編程技能與素質(zhì)培養(yǎng)的兩個角度考慮。
2.2實(shí)驗(yàn)內(nèi)容應(yīng)凝練且與教學(xué)實(shí)際相適應(yīng)
實(shí)驗(yàn)內(nèi)容要凝練,應(yīng)該與理論教學(xué)內(nèi)容、實(shí)際應(yīng)用以及學(xué)生素質(zhì)相適應(yīng)。實(shí)驗(yàn)內(nèi)容多而雜,會導(dǎo)致學(xué)生為了做實(shí)驗(yàn)而做實(shí)驗(yàn)、無瑕進(jìn)行思考總結(jié),對于提高編程能力與素質(zhì)的幫助并不大。將最能展現(xiàn)Java精髓、有助于學(xué)生進(jìn)行理論學(xué)習(xí)和提高實(shí)踐能力的部分,凝練成幾部分精品實(shí)驗(yàn)內(nèi)容,學(xué)生對面向?qū)ο蟮乃枷搿⒎椒ê图夹g(shù)才能夠認(rèn)真領(lǐng)會、熟練掌握,同時也可以鍛煉學(xué)生解決實(shí)際問題的能力。
2.3實(shí)驗(yàn)內(nèi)容應(yīng)模擬相關(guān)實(shí)際問題。并以問題的形式提出和解決
“實(shí)驗(yàn)內(nèi)容來源于工程實(shí)際,反映工程的實(shí)際問題,令實(shí)驗(yàn)更有趣味,更具現(xiàn)實(shí)意義”。近年來,教育界大力提倡和推行PBL(problem-based learning,基于問題的學(xué)習(xí))教學(xué)模式,把學(xué)習(xí)置于復(fù)雜、有意義的問題情景之中,通過學(xué)習(xí)者間的合作來解決真正的問題,從而學(xué)習(xí)隱含在問題背后的科學(xué)知識,形成解決問題的技能和自主學(xué)習(xí)的能力。我們可以就其教學(xué)思路和教學(xué)方式的內(nèi)涵,依托任務(wù)驅(qū)動教學(xué)法、案例教學(xué)法等教學(xué)法的運(yùn)用,有選擇地吸收采用。如將學(xué)生分成若干小組研討問題,實(shí)驗(yàn)內(nèi)容以問題的形式進(jìn)行設(shè)計,利用趣味性和應(yīng)用性激發(fā)學(xué)生的學(xué)習(xí)興趣,調(diào)動其學(xué)習(xí)的積極性、主動性。在問題的解決過程中,教師盡量處于觀察和引導(dǎo)的位置。
2.4教師應(yīng)對實(shí)驗(yàn)完成情況予以成績公布,并對實(shí)驗(yàn)作業(yè)進(jìn)行點(diǎn)評
教師對每次實(shí)驗(yàn)完成情況予以成績公布,可以督促學(xué)生認(rèn)真進(jìn)行實(shí)驗(yàn)。通過對部分實(shí)驗(yàn)作業(yè)進(jìn)行點(diǎn)評,有助于對不同程度學(xué)生編程能力的提高。激勵和鞭策是一種行之有效的促進(jìn)學(xué)生學(xué)習(xí)的手段。
3課內(nèi)實(shí)踐內(nèi)容改革
Java教學(xué)涉及的內(nèi)容多而較雜,而且“面向?qū)ο蟆钡慕虒W(xué)本身就有一定的難度。在實(shí)驗(yàn)內(nèi)容的選排上,一方面,我們應(yīng)注意抓住重點(diǎn)、突破難點(diǎn),使學(xué)生對課程學(xué)習(xí)有一個整體的把握;另一方面,也應(yīng)注意滿足軟件企業(yè)對Java程序設(shè)計的實(shí)際需求,從而體現(xiàn)Java的應(yīng)用性。Java教學(xué)的重點(diǎn)是面向?qū)ο蟮幕靖拍?、基本原理、關(guān)鍵技術(shù)和主要方法,難點(diǎn)是多線程設(shè)計、I/0操作和網(wǎng)絡(luò)通信程序設(shè)計;軟件企業(yè)要求Java程序員具備的編程知識與能力有類與對象的概念(如何抽象)、面向?qū)ο蟮娜齻€特征、抽象類與接口(設(shè)計)、多線程、I/0操作、Java集合框架、一些簡單常用的設(shè)計模式。找出這兩方面內(nèi)容的交集,Java課內(nèi)的實(shí)踐教學(xué)一共選排了8個實(shí)驗(yàn)(見表1)。
4教學(xué)實(shí)踐
教學(xué)改革需要通過實(shí)踐檢驗(yàn)實(shí)施效果、目標(biāo)。以“實(shí)驗(yàn)2:抽象類與接口的設(shè)計和使用”為例,簡要介紹其教學(xué)實(shí)踐內(nèi)容。
4.1選取與設(shè)計實(shí)驗(yàn)內(nèi)容
抽象類作為多個子類的共同父類,體現(xiàn)的是模板式設(shè)計;接口適合為不相關(guān)的類別提供通用功能,體現(xiàn)出的是一種規(guī)范。典型的面向?qū)ο笤O(shè)計原則“開放一封閉原則”與“依賴倒置原則”是許多設(shè)計模式的基礎(chǔ),兩者的核心思想都是針對抽象類和接口而不是針對具體類和實(shí)現(xiàn)編程(這也是軟件工程的基本原則之一)。抽象類和接口是Java語言教學(xué)的重點(diǎn)內(nèi)容之一,同時,掌握抽象類和接口技術(shù)也是未來從事軟件開發(fā)工作的學(xué)生所必備的專業(yè)基本功。因此,應(yīng)當(dāng)選取抽象類與接口相關(guān)內(nèi)容作為實(shí)驗(yàn)內(nèi)容。
問題設(shè)計之一:某闖關(guān)游戲中有一闖關(guān)角色,游戲剛開始時只具備人的基本本領(lǐng)如“行走”和“跳躍”等。一次闖關(guān)成功,則根據(jù)闖關(guān)成績可增大本領(lǐng)如“天上飛”、“水下游”或“力如牛”等而逐漸成為強(qiáng)大的“超人”。請分析如何編程模擬游戲主角闖關(guān)成為“超人”并實(shí)現(xiàn)之。
問題的解決基于“開放一封閉原則”和“依賴倒置原則”,涉及了抽象類與子類、接口與實(shí)現(xiàn)類,以及裝飾模式使用的內(nèi)容,具有趣味性和技術(shù)實(shí)用性,能調(diào)動學(xué)生的積極性并提高編程技能
4.2進(jìn)行實(shí)驗(yàn)教學(xué)
教學(xué)采用課內(nèi)和課外相結(jié)合的方式,以2~3人為一組,提倡學(xué)生在實(shí)驗(yàn)課外自主探究和合作解決問題,在實(shí)驗(yàn)課內(nèi)著重問題交流、解決,作業(yè)檢查、督促。
實(shí)驗(yàn)內(nèi)容應(yīng)于實(shí)驗(yàn)的前一周發(fā)布,給予學(xué)生一定時間的思考和準(zhǔn)備。實(shí)驗(yàn)課內(nèi),教師隨機(jī)點(diǎn)取部分小組檢查實(shí)驗(yàn)完成情況,采用答辯的方式,先由小組匯報實(shí)驗(yàn)內(nèi)容,包括問題的解決(設(shè)計)方案、過程和結(jié)果。教師引導(dǎo)學(xué)生對此實(shí)驗(yàn)小組的工作提出問題或進(jìn)行分析討論,并且除在必要時使用啟發(fā)式教學(xué)之外應(yīng)處于旁觀者和促進(jìn)者的位置,促進(jìn)和指導(dǎo)問題的分析與討論,而非直接教學(xué)。相關(guān)知識與技術(shù)通過問題的解決從而被學(xué)生學(xué)習(xí)和掌握,設(shè)計原則在引導(dǎo)學(xué)生尋求問題的解決辦法時被自然采用,設(shè)計模式在教師進(jìn)行總結(jié)時結(jié)合問題的解決方案被介紹。
為配合課外教學(xué),我系還安排了兩個開放實(shí)驗(yàn)室,供學(xué)生課外學(xué)習(xí)以及教師檢查作業(yè)和答疑用。
通過以上教學(xué)改革,不僅激發(fā)了學(xué)生學(xué)習(xí)的積極性和主動性,并且促進(jìn)了學(xué)生對抽象類與接口語法以及使用的理解和掌握,使學(xué)生能從語法定義和編程兩個角度來區(qū)分和選擇接口與抽象類,獲取實(shí)踐知識,并進(jìn)一步加深對抽象類與接口及其應(yīng)用的認(rèn)識,鍛煉應(yīng)用抽象類與接口解決實(shí)際問題的能力、提高專業(yè)素養(yǎng),達(dá)成實(shí)踐能力培養(yǎng)目標(biāo)及部分達(dá)成實(shí)踐通識教育目標(biāo)。學(xué)生實(shí)驗(yàn)后的心得體會是“實(shí)驗(yàn)內(nèi)容比較有趣,收獲不小,原來有好多自己不知道的知識?!币约啊啊埳系脕斫K覺淺,絕知此事要躬行,現(xiàn)在對這句詩體會很深?!焙汀皩?shí)驗(yàn)有壓力,但感覺能力提高不少?!?/p>
5結(jié)語
Java課內(nèi)實(shí)踐教學(xué)改革,鍛煉和提升了學(xué)生的編程技能。以近兩年我系學(xué)生參加Java競賽和畢業(yè)就業(yè)情況為例,在2014年第五屆“藍(lán)橋杯”全國軟件和信息技術(shù)專業(yè)人才大賽(Java軟件開發(fā)本科B組)及2014年“凱通杯”廣東省Java程序員競賽中,我系學(xué)生共獲一等獎1項(xiàng),二等獎2項(xiàng),三等獎4項(xiàng)、優(yōu)勝獎2項(xiàng);在2015年甲骨文杯全國Java程序設(shè)計大賽中,我系學(xué)生共獲廣東省賽區(qū)及全國賽區(qū)一等獎1項(xiàng),二等獎2項(xiàng),三等獎2項(xiàng);百分之七十的畢業(yè)生在廣州、深圳等地的IT企業(yè)從事與Java相關(guān)的軟件開發(fā)工作。Java系列課程教學(xué)目前已成為我系的教學(xué)特色。