摘要:JAVA程序設(shè)計(jì)是高校計(jì)算機(jī)專業(yè)的一門重要課程,其目標(biāo)在于培養(yǎng)學(xué)生面向?qū)ο蟮木幊趟枷牒途幊棠芰?。針?duì)本科生普遍存在的參與真實(shí)項(xiàng)目開發(fā)機(jī)會(huì)少、動(dòng)手能力差等問題,通過總結(jié)當(dāng)前JAVA程序設(shè)計(jì)課程教學(xué)中存在的問題,模擬當(dāng)下軟件項(xiàng)目開發(fā)的實(shí)際流程,提出一種基于問題引導(dǎo)、項(xiàng)目驅(qū)動(dòng)和小組協(xié)作的仿真式教學(xué)模式,就理論教學(xué)、協(xié)作實(shí)驗(yàn)和綜合考核3個(gè)環(huán)節(jié)分別提出了改革措施。教學(xué)實(shí)踐證明,該方法有助于調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,提高學(xué)生的程序設(shè)計(jì)能力。
關(guān)鍵詞:JAVA程序設(shè)計(jì);問題引導(dǎo);項(xiàng)目驅(qū)動(dòng);小組協(xié)作
程序?qū)τ?jì)算機(jī)的重要性決定了程序設(shè)計(jì)在計(jì)算機(jī)學(xué)科體系中的核心地位,使得計(jì)算機(jī)專業(yè)本科生必須學(xué)習(xí)程序設(shè)計(jì)語言、掌握程序設(shè)計(jì)方法、培養(yǎng)程序設(shè)計(jì)能力。程序設(shè)計(jì)是有形表達(dá)抽象思維的方法,其中貫穿閱讀、分析、思考、判斷、表達(dá)、工具使用、綜合創(chuàng)新等多項(xiàng)技能,對(duì)計(jì)算機(jī)專業(yè)人才的培養(yǎng)至關(guān)重要。JAVA是當(dāng)下軟件開發(fā)的第一平臺(tái),各個(gè)高校都為計(jì)算機(jī)專業(yè)本科生開設(shè)了一系列JAVA課程,如JAVA程序設(shè)計(jì)、J2EE框架與技術(shù)、J2ME移動(dòng)軟件設(shè)計(jì)等。因此,在JAVA相關(guān)課程的教學(xué)中,如何提高學(xué)生的程序設(shè)計(jì)能力、培養(yǎng)出符合軟件企業(yè)需要的程序開發(fā)專業(yè)人才是一個(gè)亟待解決又十分重要的問題。
1、現(xiàn)有問題
JAVA程序設(shè)計(jì)課程一般在大三開設(shè),是繼c、c++語言之后的又一門編程語言,其主要目標(biāo)為幫助學(xué)生實(shí)現(xiàn)從面向過程向面向?qū)ο蟮木幊趟枷朕D(zhuǎn)變,為高層次的J2EE軟件開發(fā)打基礎(chǔ)。實(shí)際教學(xué)實(shí)踐表明,當(dāng)前本科生在學(xué)習(xí)這門課程的時(shí)候一般會(huì)出現(xiàn)以下3個(gè)方面的問題。
1)教學(xué)方面。傳統(tǒng)程序設(shè)計(jì)課程以語法教學(xué)為主、上機(jī)驗(yàn)證為輔,這種模式雖然有利于教師調(diào)控教學(xué)過程和學(xué)生對(duì)分散知識(shí)點(diǎn)的入門學(xué)習(xí),但不能充分調(diào)動(dòng)學(xué)生的積極性,通常會(huì)令學(xué)生在實(shí)際使用過程中不知如何靈活地應(yīng)用相關(guān)知識(shí)來進(jìn)行程序設(shè)計(jì),解決具體問題。這主要是因?yàn)閷W(xué)生沒能把握住串起程序設(shè)計(jì)思想各個(gè)知識(shí)點(diǎn)的主線,忽視了面向?qū)ο缶幊趟季S的建立和實(shí)際程序設(shè)計(jì)能力的培養(yǎng)。
2)實(shí)踐方面。一般來說,現(xiàn)有的教學(xué)實(shí)踐是老師布置題目、學(xué)生編寫程序,這種形式難以引起學(xué)生的興趣。而且在實(shí)驗(yàn)和課程設(shè)計(jì)中,有些缺乏主動(dòng)性的學(xué)生往往對(duì)課本之外的JAVA主流開發(fā)工具或平臺(tái)知之甚少。
3)考核方式。通常的課程成績是由平時(shí)成績和考試成績組成的,這種考核形式難以全面反映學(xué)生解決問題的能力和實(shí)際的操作技能,有可能造成一些在筆試中能夠考出不錯(cuò)成績的學(xué)生實(shí)際上并沒有掌握J(rèn)AVA編程技能和技巧,到實(shí)際編程的時(shí)候就不知如何著手。
這些問題說明一個(gè)共性現(xiàn)象,即教師在講授JAVA程序設(shè)計(jì)時(shí),對(duì)實(shí)際編程能力的培養(yǎng)不夠,多數(shù)學(xué)生對(duì)JAVA的學(xué)習(xí)僅是“紙上談兵”、實(shí)踐能力差。究其原因,筆者認(rèn)為主要是因?yàn)椋孩俦究粕趯W(xué)習(xí)的時(shí)候,基本沒有程序設(shè)計(jì)與開發(fā)的真實(shí)場(chǎng)景,難以形成真正的程序開發(fā)時(shí)應(yīng)有的緊張氛圍;②真實(shí)的軟件項(xiàng)目不可能交由一群毫無經(jīng)驗(yàn)的本科生進(jìn)行全權(quán)的開發(fā),真實(shí)的軟件項(xiàng)目也不可能考察到程序設(shè)計(jì)的所有方面,客觀上造成缺乏全面鍛煉學(xué)生編程能力的實(shí)際項(xiàng)目,使得本科生難以參與一個(gè)完整的軟件項(xiàng)目研發(fā)流程。
2、仿真式教學(xué)法
針對(duì)上述問題,文章模擬當(dāng)下軟件項(xiàng)目開發(fā)的實(shí)際流程,提出一種針對(duì)JAVA程序設(shè)計(jì)的仿真式教學(xué)模式,以實(shí)踐促進(jìn)理論學(xué)習(xí),加強(qiáng)對(duì)本科生JAVA程序設(shè)計(jì)能力的培養(yǎng)。JAVA程序設(shè)計(jì)的仿真式教學(xué)法基本結(jié)構(gòu)如圖1所示。
2.1 基本思想
文章提出的仿真式教學(xué)法將JAVA程序設(shè)計(jì)這門課程設(shè)計(jì)為以真實(shí)而典型的JAVA軟件項(xiàng)目為載體,把教學(xué)內(nèi)容設(shè)置到復(fù)雜且有意義的仿真研發(fā)環(huán)境中,教學(xué)內(nèi)容由若干從簡單到復(fù)雜的主題單元組成。在每個(gè)學(xué)習(xí)單元,學(xué)生在教師的引導(dǎo)下,通過解決實(shí)際問題,不斷積累一些類似于實(shí)際項(xiàng)目的開發(fā)經(jīng)驗(yàn),進(jìn)而領(lǐng)悟知識(shí)與技能之間的微妙關(guān)系;而不同單元之間存在知識(shí)和技能的重疊與遞進(jìn),確保學(xué)生在課程推進(jìn)的過程中溫故知新,靈活遷移,熟練掌握隱含于問題背后的非顯性知識(shí),提高學(xué)生發(fā)現(xiàn)和解決問題的綜合能力。
2.2 關(guān)鍵模塊
1)問題引導(dǎo)的理論教學(xué)。
作為一門應(yīng)用性很強(qiáng)的專業(yè)課程,JAVA程序設(shè)計(jì)課程在課堂教學(xué)過程中應(yīng)用經(jīng)典問題來引導(dǎo)理論教學(xué)。這樣做可以改變“滿堂灌”的做法,在思考中培養(yǎng)學(xué)生對(duì)程序設(shè)計(jì)語言的學(xué)習(xí)興趣。在實(shí)際教學(xué)實(shí)踐中,我們將理論教學(xué)內(nèi)容分為若干個(gè)主題,JAVA程序設(shè)計(jì)是貫穿各個(gè)主題的主線,并創(chuàng)設(shè)“體驗(yàn)性學(xué)習(xí)”的條件,充分地發(fā)揮學(xué)生的主體作用。通過分析經(jīng)典問題引導(dǎo)的典型案例,重點(diǎn)講解面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想和關(guān)鍵方法,輔以介紹JAVA程序設(shè)計(jì)語言的理論知識(shí),循序漸進(jìn)地幫助學(xué)生掌握面向?qū)ο缶幊痰幕舅枷牒完P(guān)鍵方法。
①將每個(gè)學(xué)習(xí)單元細(xì)分為若干個(gè)典型問題。JAVA相較于c語言增加了許多新概念,因此應(yīng)該在課堂教學(xué)中,我們通過回答一個(gè)個(gè)具體的問題,在透徹闡明面向?qū)ο缶幊趟枷氲耐瑫r(shí),授人以“漁”地指引學(xué)生自己發(fā)現(xiàn)并主動(dòng)解決一個(gè)個(gè)在實(shí)際編程中可能出現(xiàn)的問題,而不是直接簡單地給出現(xiàn)成的結(jié)論。
②在知識(shí)闡述與技能解析上以夠用為度,相對(duì)淡化JAVA語言規(guī)則的教學(xué),將一些必需的和常用的概念分散穿插在應(yīng)用舉例中,在確保知識(shí)與技能涵蓋性的前提下降低學(xué)習(xí)的強(qiáng)度和復(fù)雜性,使學(xué)生循序漸進(jìn)又輕松有趣地領(lǐng)悟JAVA語言及其應(yīng)用的內(nèi)涵。
③學(xué)生要完成課堂的主題作業(yè)和課后的綜合作業(yè)。教師針對(duì)學(xué)生在練習(xí)中暴露出的種種問題進(jìn)行有針對(duì)性的答疑解惑,一對(duì)一地給每個(gè)學(xué)生分析其編寫的程序代碼,幫助學(xué)生逐步熟悉語法、應(yīng)用語句,實(shí)現(xiàn)具有難度伸縮性的差異性教學(xué)。
在仿真式教學(xué)法中,理論教學(xué)從問題人手,采取完全開放的合作學(xué)習(xí)形式,鼓勵(lì)學(xué)生發(fā)表自己的見解和發(fā)現(xiàn)。教師要把控課堂內(nèi)容進(jìn)行的方向,適時(shí)提出問題,并糾正其中的錯(cuò)誤,引導(dǎo)學(xué)生掌握學(xué)習(xí)JAVA程序設(shè)計(jì)的方法,培養(yǎng)學(xué)生發(fā)現(xiàn)、分析和解決問題的綜合能力。
2)項(xiàng)目驅(qū)動(dòng)的協(xié)作實(shí)驗(yàn)。
考慮到學(xué)生的學(xué)習(xí)水平和動(dòng)手能力存在較大差別,實(shí)驗(yàn)內(nèi)容應(yīng)該提供幾種在難度上具備足夠區(qū)分度的選擇方案。因?yàn)槿绻徊捎秒y度過高的實(shí)驗(yàn),多數(shù)學(xué)生會(huì)失去學(xué)習(xí)的動(dòng)力與信心;但是實(shí)驗(yàn)難度過低,會(huì)使得部分學(xué)生得不到應(yīng)有的訓(xùn)練而失去學(xué)習(xí)興趣。
為此,筆者采用項(xiàng)目驅(qū)動(dòng)的協(xié)作實(shí)驗(yàn)教學(xué),其基本步驟如下。
①將全班學(xué)生依據(jù)學(xué)業(yè)水平、能力傾向、個(gè)陛特征、性別等方面的差異組成若干個(gè)異質(zhì)學(xué)習(xí)小組;
②提供來源于真實(shí)項(xiàng)目,且側(cè)重點(diǎn)和難點(diǎn)不同的若干個(gè)軟件項(xiàng)目(或項(xiàng)目的子模塊)供學(xué)生選擇;
③基礎(chǔ)好的學(xué)生在協(xié)同合作開發(fā)過程中起主導(dǎo)作用,基礎(chǔ)差的學(xué)生也能從中得到激勵(lì)和幫助,形成“以強(qiáng)帶弱、以弱促強(qiáng)”的局面。
實(shí)踐證明,項(xiàng)目驅(qū)動(dòng)的協(xié)作開發(fā)使得每個(gè)學(xué)生都能夠在原有的基礎(chǔ)上取得進(jìn)步,有助于培養(yǎng)學(xué)生自己主動(dòng)學(xué)習(xí)JAVA程序設(shè)計(jì)的興趣和能力,還可以促進(jìn)學(xué)生之間良好的團(tuán)隊(duì)合作。
3)側(cè)重實(shí)踐的綜合考核。
傳統(tǒng)的JAVA程序設(shè)計(jì)考核一般以標(biāo)準(zhǔn)化的筆試題目為主,側(cè)重基本語法,導(dǎo)致學(xué)生忽視編程實(shí)踐能力的培養(yǎng)。我們認(rèn)為應(yīng)該加重實(shí)踐環(huán)節(jié)的考核,將其以較大的比例加入課程考核的最終成績中,但是應(yīng)該充分考慮主觀評(píng)價(jià)容易造成結(jié)果有失公允的問題。為此,筆者采用“個(gè)人評(píng)價(jià)+小組評(píng)價(jià)+教師評(píng)價(jià)”的形式,最大程度地保證實(shí)驗(yàn)成績的公平和公正。
①個(gè)人評(píng)價(jià)是學(xué)生根據(jù)自己在小組中分擔(dān)任務(wù)的執(zhí)行及完成程度、在小組協(xié)作開發(fā)中的表現(xiàn)、與同伴互助協(xié)作情況以及對(duì)項(xiàng)目任務(wù)完成的貢獻(xiàn)等情況,為自己進(jìn)行打分。
②小組評(píng)價(jià)的第1步是選擇3~5個(gè)學(xué)生(學(xué)生選出初始名單、教師確定最終名單)構(gòu)成評(píng)委組。每個(gè)小組選出自己的小組代表對(duì)本組的最終結(jié)果進(jìn)行演示和講解。評(píng)委按照細(xì)分的評(píng)價(jià)指標(biāo)(如功能完善、界面美觀)進(jìn)行評(píng)分,當(dāng)場(chǎng)計(jì)算各組的綜合分?jǐn)?shù)。
小組評(píng)價(jià)的第2步是每個(gè)組長和指導(dǎo)教師構(gòu)成評(píng)審團(tuán),對(duì)各個(gè)小組的實(shí)踐過程進(jìn)行評(píng)分,要強(qiáng)調(diào)團(tuán)隊(duì)協(xié)作意識(shí),如需求分析的收集和整理,開發(fā)文檔的完整性,實(shí)踐過程中解決問題、分析問題的能力,團(tuán)隊(duì)協(xié)作進(jìn)展情況,小組學(xué)習(xí)實(shí)施計(jì)劃,組員參與情況等。
③教師評(píng)價(jià)是指導(dǎo)教師對(duì)各個(gè)小組進(jìn)行總結(jié)性點(diǎn)評(píng),幫助學(xué)生總結(jié)完成任務(wù)的過程和方法,促使學(xué)生反思自己的思路和行為,進(jìn)一步消化學(xué)到的JAVA知識(shí)和技能。
3、實(shí)例分析
根據(jù)仿真教學(xué)法的基本思想和關(guān)鍵步驟,筆者在自己擔(dān)任的JAVA程序設(shè)計(jì)課程教學(xué)過程中進(jìn)行實(shí)例驗(yàn)證,這個(gè)過程分為以下幾個(gè)階段。
1)任務(wù)設(shè)計(jì)與準(zhǔn)備。
①合理分組:依據(jù)學(xué)生的個(gè)性傾向、個(gè)性差異,指導(dǎo)教師將全班學(xué)生按照“組內(nèi)異質(zhì)、組間同質(zhì)”的原則進(jìn)行分組,每組成員控制在4~6人(模擬當(dāng)前軟件公司的項(xiàng)目小組形式),確保每個(gè)小組都有高、中、低3個(gè)層次的學(xué)生,并讓每組學(xué)生自己推薦一名小組長。這樣不但有利于各組之間的公平競(jìng)爭,也有利于學(xué)生主體能動(dòng)性的發(fā)展。
②設(shè)計(jì)任務(wù):教師結(jié)合實(shí)際開發(fā)環(huán)境創(chuàng)造一種真實(shí)的虛擬項(xiàng)目,再根據(jù)課程進(jìn)度將其分解為對(duì)應(yīng)于一個(gè)個(gè)實(shí)驗(yàn)的一個(gè)個(gè)子任務(wù),讓每個(gè)小組討論后提出相應(yīng)的項(xiàng)目名稱和預(yù)期目標(biāo)。指導(dǎo)教師再與各個(gè)組長協(xié)商確定項(xiàng)目實(shí)施的各子任務(wù)和進(jìn)度安排,提交項(xiàng)目進(jìn)度表和考核指標(biāo)。
2)任務(wù)實(shí)施。
①監(jiān)督子任務(wù)進(jìn)度:根據(jù)任務(wù)進(jìn)度表,指導(dǎo)教師在每次實(shí)驗(yàn)的時(shí)候檢查每個(gè)小組的子任務(wù)完成情況。在和小組成員進(jìn)行充分溝通的基礎(chǔ)上,對(duì)于子任務(wù)進(jìn)度安排不合理的部分進(jìn)行微調(diào)。在這個(gè)環(huán)節(jié)尤其需要強(qiáng)調(diào)團(tuán)隊(duì)協(xié)作,如部分成員態(tài)度問題、內(nèi)部團(tuán)結(jié)合作等。
②指導(dǎo)技術(shù)難題:小組成員需要發(fā)揮團(tuán)隊(duì)精神,培養(yǎng)學(xué)生互相溝通、尊重他人、聆聽他人意見、說服他人的能力。在超出學(xué)生知識(shí)結(jié)構(gòu)的地方,教師要及時(shí)加以實(shí)際指導(dǎo)或給予解決思路和參考書目,有效地輔助學(xué)生解決遇到的各種技術(shù)性難題。
③加入競(jìng)爭激勵(lì)機(jī)制:指導(dǎo)教師適當(dāng)加入一些競(jìng)爭激勵(lì)機(jī)制,如評(píng)比“最有效率小組”“最高質(zhì)量小組”“和諧團(tuán)隊(duì)”和“精英團(tuán)隊(duì)”等,使組內(nèi)出現(xiàn)互動(dòng)、互勉、互相促進(jìn)的局面,充分調(diào)動(dòng)學(xué)生的參與激情。
4、結(jié)語
變革與創(chuàng)新是科學(xué)發(fā)展的永恒主題。身為教育工作者的我們理應(yīng)在教學(xué)過程中積極探索與實(shí)際需求相適應(yīng)的教學(xué)思想、教學(xué)模式和教學(xué)方法。JAVA程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)的一門非常重要的實(shí)踐性課程。如何利用學(xué)生已有的知識(shí)和經(jīng)驗(yàn),使其快速掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,進(jìn)而能夠創(chuàng)造性地解決實(shí)際應(yīng)用中的種種問題,是我們需要關(guān)注的重點(diǎn)。文章提出了一種仿真式教學(xué)方法,對(duì)JAVA程序設(shè)計(jì)的理論教學(xué)、實(shí)踐環(huán)節(jié)和考核方式3個(gè)方面進(jìn)行了一定程度的改進(jìn)。筆者在擔(dān)任的JAVA程序設(shè)計(jì)課程教學(xué)過程中進(jìn)行了相關(guān)的初步實(shí)驗(yàn),教學(xué)實(shí)踐表明:該方法可以促進(jìn)學(xué)生之間的交流,發(fā)揮學(xué)生的學(xué)習(xí)能動(dòng)性,提高團(tuán)隊(duì)協(xié)作精神,有利于全面提升學(xué)生JAVA程序設(shè)計(jì)的理論水平和實(shí)際技能。