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

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