王 慧,李雷孝,邢紅梅
(內蒙古工業大學 數據科學與應用學院,內蒙古 呼和浩特 010080)
Java 作為一種面向對象程序設計語言,以其簡單性、可移植性、安全性、健壯性等特性,廣泛地應用于個人PC、互聯網、游戲控制平臺、云計算、金融系統等領域。據TIOBE 編程語言排行的數據顯示,近二十年來,Java 一直處于前三名。由于Java 具有廣泛的應用及強勁的發展勢頭,目前國內高校的計算機科學與技術、軟件工程、信息與技術、物聯網等專業都開設了Java程序設計相關課程,以適應社會對相關專業人才的需求,為畢業生的就業增加有力砝碼。然而實際教學中存在一些問題,如過于偏重語法語義,對實踐動手和分析解決問題能力培養較少,畢業生在就業時無法完全滿足社會對人才的需求。基于以上實際情況,筆者結合自身實際教學經驗,在Java 程序設計課程教學中引入了OBE 教學理念,結合多種教學模式,對該課程實施了教學改革,以提高學生在程序設計過程中分析問題和解決問題的能力,使學生的理論知識和實踐技能得到共同發展,從而達到應用型人才的培養目標,滿足社會市場對人才不斷變化的需求。
(1)各章節內容講解大多以單一的知識點、語法要點的理解和記憶為出發點,沒有考慮對知識的有機結合,從而忽視了對綜合問題分析能力的培養。
(2)課程授課模式多采用多媒體教室進行課堂教學,每堂課大多數時間是教師進行單純的理論知識講解,忽略了學生的實操,當學生面對實際項目時就會出現無從下手的情況。
(3)課時數不多的實驗教學以驗證性實驗為主,授課教師會在實驗課前事先設置實驗目的、實驗內容、實驗步驟,在實驗課中詳細介紹實驗內容,學生只需機械地按照教師所講內容驗證實驗結果是否正確。實踐環節的設置缺少綜合性、設計性的內容,不利于學生將更多的知識如軟件工程、數據庫系統等課程內容綜合起來解決問題。同時,忽略了學生的主體地位,無從發揮積極性和創造性。
(4)課程考核對于學生來說是一個方向標,Java 程序設計課程考核方式設置為單一的紙質閉卷形式,考核的知識點是單一的,一定程度上學生只以“死記硬背”的方式學習這門課程。這樣做不符合程序設計靈活應用知識解決實際問題的本質,也會導致學生缺乏分析設計能力,不能綜合運用所學知識和技能解決實際問題。
Outcome-Based Education(OBE)也稱為成果導向的教育或基于學習產出的教育,它是一種以預期學習產出為中心來組織、實施和評價教育的模式。自1981 年由美國學者斯派帝(Spady K.D)等人提出后很快引起學界的重視和認可,美國、英國、加拿大等國家將之作為工程教育改革主要方向,逐步打造出各具特色的卓越工程教育體系[1]。OBE 理念在目前高校教學改革中有助于應用型人才綜合素質和能力的培養。基于OBE 理念的Java 程序設計課程改革,圍繞課程教學目標,重視學生學習成果,從成果入手,反向設計教學過程。
基于OBE 理念的Java 程序設計課程改革,首先明確IT 產業對Java 人才的需求,根據需求決定教學內容,制訂培養目標,培養可以更好地適應社會需要的人才。Java 程序設計課程內容安排以Java 語言中的面向對象機制為主線,以Java 的基本語法、數組、面向對象的概念和高級應用、JavaGUI 可視化編程、Java 異常處理、集合框架泛型、JDBC 技術、多線程和網絡編程等內容為知識目標,以培養學生面向對象編程的思維能力,學生發現問題、分析問題及解決問題的能力為能力目標,確保學生的理論知識和實踐技能共同發展的同時,培養學生團隊協作能力和溝通能力。課程的教學設計圍繞上述課程目標進行,有效完成對畢業要求的支撐。
項目驅動教學模式是以項目為導向,以學生為主體,以實現項目為目標的一種教學設計方法。項目驅動教學在實施前必須根據教學內容設計難易度適中的項目。項目的設計以能夠覆蓋課程知識點且貫穿整個教學活動為指導思想,學生通過每一章節的學習將項目代碼層層迭代,不斷完善,直至形成一個完整的項目。通過項目的完成,學生隨之完成了課程相關知識點的學習,這樣學生具有強烈的成就感,有利于激發學生的學習興趣,調動學生的主動性。在Java 程序設計課程改革實施中將“學生信息管理系統”項目作為驅動案例,圖1 列出了學生信息管理系統中的Java 知識點分解情況。

圖1 學生信息管理系統中的Java 知識點分解情況
Java 程序設計課程對實踐要求較高,課堂教學采用機房授課的方式,可以讓學生做到即學即練,不是單純機械地聽教師分析項目和演練項目,而可以隨時進入實操。機房授課過程中實施“三階段”式教學法。
第一階段,引入項目模塊,教師引入每節課涉及的項目功能,簡單說明需要用到的主要知識點;然后向學生陳述設計思路,學習程序設計關鍵在于找到解決問題的思路,也就是算法,因此設計思路的介紹對于程序設計類課程而言是不可或缺的一部分;最后帶領學生一起完成項目功能,邊寫代碼邊講解當堂課程涉及的重點知識。
第二階段,學生實操,該階段由學生上機實際操作完成第一階段引入的項目功能,也就是由學生自己驗證第一階段提出的案例。由于在第一階段已經對案例程序進行分析演示,該階段要完成的工作對于學生來說難度較低,比較容易實現,這樣學生就會得到一定的成就感,會對課程的學習更有信心。在這一階段教師要進行實時輔導,對于學生們存在的普遍問題,要進行及時講解。
第三階段,課后項目實踐階段,在這個階段學生已完成課堂教學項目,教師可以給學生選擇一些擴展項目。但由于學生的學習能力有高有低,加之不同的學生對程序設計語言的興趣和要達到的目標需求不同,在設計課后的實踐項目時遵循OBE 理念,以學生為中心,根據學生的學習目標制訂相應的項目內容。課后實踐項目設置環節按照學生的學習需求不同將培養目標分為三類,針對每一類培養目標設置相應難度的課后實踐項目。具體參考表1 進行擴展項目的布置。
根據表1 中學生的學習目標,在課程教學過程中設計相應的擴展項目。學習能力強的學生要完成擴展項目,擴展項目與課堂完成的項目在功能設計上差異較大,學生需要依賴自己的力量將新的項目和已有知識點對應,將擴展項目需要做的功能分析、設計、實現等問題逐一解決。這一方法能有效提高學生學習的興趣,全面提高學生的學習素養,激發學生學習的激情,具有其他教學環節不可替代的作用。能力相對差一些的學生如果設置過高的要求,反而會使學生產生畏懼心理,喪失信心,無法達到預期的學習效果。因此,第三階段的教學設計對學生的學習成果不做統一要求,讓每個學生都能有所收獲,這正是OBE 理念中強調的以學生為中心。

表1 學習目標與擴展項目布置對應表
課程考核方式合理化可以有效促進學生的學習,對學生來說,合理的考核方式就是一種獎賞。基于OBE 理念的課程考核不再只關注卷面考試成績,而要關注不同培養目標的學生在課程結束后是否真正具備了相應的能力。考核內容圍繞課程目標設計,體現學生相關知識能力的達成情況。
課程的考核方式通過評價整個教學活動中的各個環節,學生可以步步緊跟每一個教學環節,更有效地激發學生學習的興趣。具體來說考核包括以下幾個方面,見表2。

表2 Java 程序設計課程考核方式
平時表現,占課程總成績的10%。主要考核學生的考勤和課堂表現,課堂表現主要考查學生的隨堂案例驗證及模仿完成情況,考查學生對所學知識點的應用掌握情況。
實驗情況,占課程總成績的20%。實驗安排為綜合實驗,是對一個階段學習的總結,通過實驗項目的考核,考查學生的實際動手能力和綜合知識應用能力。在實驗前為學生介紹實驗目的和實驗內容并要求學生按照實驗指導書要求進行實驗的預習;實驗驗收時要逐一檢驗學生完成情況,并提出問題,通過學生的回答了解學生設計思路、解決問題的方法和相關知識點的掌握程度。實驗成績根據學生對實驗的預習情況、設計方法和實驗完成情況幾個部分的綜合測評。
擴展項目完成情況,占課程總成績20%。通過項目答辯的方式考查對學生擴展項目的完成情況、擴展學習知識量的多少、完成工作量的多少,綜合個人項目文檔進行最后的成績判定。
期末考試,占課程總成績50%。雖然Java程序設計課程需要培養學生實踐動手能力,學生也確實在實踐的過程中通過完成項目獲得了很大的成就感。但是如果沒有理論考試,學生對面向對象相關知識以及編程相關規范關注度不夠,將來就業面試時則無法闡述關鍵的、重要的理論。因此,在課程的考核方式中仍然設有理論考試,考試采用筆試閉卷的形式,考查基礎知識和基本概念的掌握。
這樣的考核方式既考查了學生的理論知識的掌握情況,也在平時教學過程中培養了學生的實踐動手能力,運用知識解決問題的能力,很好地為學生今后走向工作崗位打下了堅實的基礎。
將OBE 教學理念應用到Java 程序設計課程改革中,從成果產出入手進行教學設計和教學方法的優化,考核評價環節針對不同培養目標的學生設計不同的方案,充分體現“學生為主,成果為驅”的教育思想,本課程組相關教師在軟件工程專業2016 級、2017 級學生中進行了兩輪課程改革實踐,在改革中學生積極參與整個學習過程,取得了較好的預期成果,部分2016 級學生現已步入實習單位,實踐動手能力也得到用人單位的認可。在今后的教學中還須不斷地豐富案例項目,繼續改進考核方式,增強學生分析和解決復雜工程問題的能力,這是日后研究的長期目標。