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