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