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