張永軍 李翔 淮陰工學院計算機與軟件工程學院
Java EE作為目前主流的系統開發技術,是較為流行的企業級開發框架。因此,為了提高學生的動手實踐和實際開發能力,并為其畢業后適應企業的軟件開發工作打下基礎,很多高校開設了Java EE課程。但該課程知識點多,要求學生具有良好的編程實踐能力,因此在實際的課程實踐中,授課教師和學生都面臨較大的挑戰。
對于教師來說,在當前前后端分離開發模式為主流的背景下,既需要在課程中傳授后端開發相關知識,同時還需要補充大量的前端開發相關知識,并教會學生將前后端進行整合,用有限的理論課時傳授完這些知識實屬不易。對于學生來說,這門課程通常需要較好地掌握Java編程和Java web開發相關的知識點,并且要具有較好的編程實踐能力。而在實際課程實踐過程中,部分學生對先修課程的知識掌握不夠牢固,以至于對本課程學習的效果較差,且部分學生反饋課程內容多、授課節奏快,還有部分學生反饋課程內容、課后實驗難度大,難以獨立自主完成。
針對Java EE課程教學中存在的若干問題,筆者從多個角度采取了教學改革措施,提出了一種多維度教改創新實踐方法。
針對Java EE課程教學中存在的問題,已有專家學者提出了一系列的教改措施。例如,馬海峰等提出了以工程項目為驅動的教學方法[1],錢宇虹提出了“教學內容、工作任務、軟件項目三位一體”教學實踐方法。[2]楊月華針對課程組、實訓環境、實訓內容、課程實施過程、課程考核與評價等課程建設方面的問題,提出了基于校企雙導師制的課程改革措施,通過搭建貼近企業的實訓仿真環境,由校企導師合作指導和管理實訓過程,來改善實訓效果。[3]朱杰等人根據工程認證的思想,提出了一種基于OBE(Outcomes-based Education)模式的Java EE課程教學。[4]
但以上方法未考慮課程學時受限的情況,并且未考慮結合課程的特點對學生進行有效的過程管理。結合這些教改方法,筆者針對Java EE課程的特點,對課程內容進行了大量補充,結合課堂授課和學生課后自主學習,采用一種新的深入淺出的授課方式,并要求學生以團隊的形式來完成一個功能完備的項目,以達到鍛煉學生團隊協作能力的目的。這些多維度的教改實踐措施提高了Java EE課程教學的質量,能較好地克服課程教學中的困難。
Java EE課程的內容多以Spr i n g框架為基礎,主要包含Spring MVC、數據庫訪問技術(通常包含JDBC、MyBatis、JPA等內容)、Spring IOC容器等知識點,這些授課內容主要包含了后端開發技術。但目前主流的開發模式是前后端分離,要求學生既要掌握后端開發技能,也要能熟練運用前端知識。而多數學生對前端的知識和框架不熟悉,導致他們在學完Java EE課程相關后端開發知識后不知道如何實踐。為了解決這一問題,筆者在教學實踐中引入了前端知識,并且錄制了相關視頻,要求學生課后自學。另外,很多學生對maven、postman等開發過程中常用的工具也不熟悉,因此筆者將常用開發工具的使用方法也作為教學內容引入課程。更新后的課程內容如右表所示。
Java EE課程內容繁多,教師授課容易陷入簡單傳授學生進行API調用的陷阱。在實踐授課過程中,筆者采用了一系列方法來保證授課的深入淺出,具體可以歸納為如下步驟:問題是什么→解決該問題的關鍵點→用自定義代碼解決該問題→學習使用已有的框架解決該問題→深入解讀關鍵源碼。
以Spring IOC為例,在講授該知識點時,先通過一個簡單的示例引入軟件開發中經常存在的組件耦合問題,然后說明解決組件耦合問題中的關鍵技術——組件的自動掃描、自動裝配和生命周期管理,接著通過代碼實現一個最簡單的IOC容器來說明IOC容器的核心工作原理。通過上述教學,學生會對IOC容器的作用和原理有比較深刻的理解。在此基礎上再傳授Spring IOC容器知識,學生會很容易接受。為了讓學生有更深一步的理解,筆者還增加了源碼解讀環節,讓學生進一步加深對框架的理解,并借鑒學習良好的編程規范。這些措施可以讓學生從軟件架構層次掌握相關知識,培養他們更高層次的軟件開發技能。

更新后的Java EE課程內容
從表中可見,單純靠課堂授課是無法完成整個Java EE課程內容的教學的。因此,在實踐過程中,教師應要求學生自主學習表中前端開發內容和開發工具使用內容,作為課堂授課教學的必要補充,自主學習內容在課程網站上通過錄播視頻提供。為了保證自主學習的效果,教師可采取如下措施監督學生:①要求學生必須通過電子筆記的方式來歸納總結自主學習的每個小節內容,授課教師對電子筆記進行評分,作為考核環節;②自主學習內容的相關實驗要求學生撰寫實驗報告,在報告中需要記錄關鍵步驟和實驗結果的截屏;③每次實驗隨機抽取若干名學生進行答辯。通過這些措施的執行,能有效保證學生課后自主學習的質量。
要求學生以2~3人為一組,獨立完成一個相對完整的系統。團隊實行組會制度,每周每組至少開一次組會討論系統的實踐情況,并需要提交每周的組會會議記錄和錄制視頻,以防止部分學生在團隊中偷懶,組會材料將作為平時成績的重要組成部分。為了對團隊工作進行有效管理,要求學生以Gitee高校版為平臺,通過Git工具實現項目計劃、項目管理、項目文檔管理和代碼協同。
Java EE課程內容繁多,教師要注重培養學生的動手實踐能力,但采用傳統的卷面考核方式無法合理評估學生對課程的掌握情況。為了能有效評估學生對課程的掌握情況,并進一步鍛煉學生的動手編程能力和軟件架構設計能力,在實踐過程中筆者對考核方式進行了改革。具體的考核方法如下:
①學生以團隊的形式完成一個項目,結合平時表現(占比30%)和項目的完成情況(占比70%)進行考核;
②學生團隊將項目按照功能點進行切分,團隊中的每個學生需獨立完成若干個功能點,要求每個成員的工作量大致相當;每個功能點按照重要程度以及難易程度設定一個分值,再根據學生對該功能的完成情況對該生在該功能點上的表現進行評分;
③為了避免學生在學期末集中完成項目,保證項目的過程管理和完成質量,培養學生項目管理和規劃能力,要求團隊中的每個學生對功能點都要設定起止日期。如果學生未能按期完成功能點,需要根據逾期時間情況來對功能點評分進行折扣處理。該措施可以有效地對學生進行過程管理,并可較好地實現平時考核。
筆者采用上述措施對所在學校計算機科學與技術專業的學生進行了三輪教學實踐,發現學生在編程實踐、項目調試、軟件框架設計、團隊合作等方面的能力得到了明顯的提高,學生學習的主動性和對軟件設計的興趣大增。部分學生在學習完課程內容后,不僅能獨立完成課程中要求的任務,還能在原任務的基礎上進行擴充和創新。