丁 勇,朱長(zhǎng)水,吳許俊
(南京理工大學(xué)泰州科技學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,江蘇 泰州225300)
JavaEE作為一種開(kāi)發(fā)技術(shù)和平臺(tái),具有較強(qiáng)的跨平臺(tái)性、可移植性,已經(jīng)成為大多數(shù)Web應(yīng)用系統(tǒng)的開(kāi)發(fā)標(biāo)準(zhǔn)[1-2]。JavaEE課程作為一門(mén)綜合性較強(qiáng)的專(zhuān)業(yè)課程,主要講解Java EE平臺(tái)搭建,JSP、Servlet、JavaBean、JDBC、JSTL等技術(shù)以及MVC模式、O/R Mapping框架的使用[3]。課程要求學(xué)生掌握Eclipse、ⅠDEA等集成開(kāi)發(fā)環(huán)境的使用,掌握Web應(yīng)用系統(tǒng)開(kāi)發(fā)的基本流程和方法[4],掌握Spring、Mybatis、Hibernate等主流開(kāi)發(fā)框架的使用,掌握Tomcat等應(yīng)用服務(wù)器軟件的配置和使用,掌握J(rèn)avaEE連接Oracle/SQLServer/MySQL數(shù)據(jù)庫(kù)的方法。學(xué)生學(xué)習(xí)這門(mén)課程既運(yùn)用到前面學(xué)習(xí)的HTML、CSS、JQuery等Web前端技術(shù),又運(yùn)用到Java程序設(shè)計(jì)以及數(shù)據(jù)庫(kù)的相關(guān)知識(shí),因此這門(mén)課程對(duì)提升學(xué)生面向?qū)ο缶幊毯途C合應(yīng)用開(kāi)發(fā)的能力有著十分重要的意義。
目前大多數(shù)院校的教學(xué)內(nèi)容延續(xù)了傳統(tǒng)JavaEE課程的內(nèi)容,偏重對(duì)JSP、Servlet、JavaBean、JDBC數(shù)據(jù)庫(kù)編程等知識(shí)的講解,忽略了對(duì)Web系統(tǒng)架構(gòu)、MVC編程模式、Web框架等知識(shí)的講解,使這門(mén)課程變成了Java語(yǔ)言的“升級(jí)版”課程[5-6],造成學(xué)生學(xué)完這門(mén)課程,只能編寫(xiě)一些簡(jiǎn)單的JSP或Servlet程序,存在編程邏輯不清晰,沒(méi)有MVC編程思想,不會(huì)封裝JavaBean組件,不會(huì)配置數(shù)據(jù)庫(kù)連接池、處理數(shù)據(jù)庫(kù)并發(fā)等問(wèn)題。
在Web框架的教學(xué)過(guò)程中,部分教材仍然使用傳統(tǒng)SSH(Struts、Spring、Hibernate)三大框架,Struts框架幾乎已被淘汰,沒(méi)有融入SpringCloud、SpringBoot等新的開(kāi)源平臺(tái)和框架技術(shù),造成理論脫離實(shí)踐[7]。同時(shí),教師往往只注重教學(xué)生如何配置和使用框架,忽略對(duì)框架背后基本原理的講解,比如對(duì)象關(guān)系映射(O/R Mapping)、容器(Container)、依賴注入(DⅠ)、控制反轉(zhuǎn)(ⅠOC)、面向切片編程(AOP)等,導(dǎo)致學(xué)生只知其然,而不知其所以然,當(dāng)系統(tǒng)環(huán)境或配置參數(shù)出現(xiàn)問(wèn)題無(wú)法追根溯源,或程序一旦出現(xiàn)錯(cuò)誤就不會(huì)調(diào)試[8]。
目前普遍采用的授課和PPT結(jié)合的“灌輸式”教學(xué)方法,已不適應(yīng)這門(mén)課程的教學(xué),因?yàn)楸菊n程是一門(mén)對(duì)綜合性編程能力要求較高的課程,僅僅對(duì)某個(gè)知識(shí)點(diǎn)的講解再輔以簡(jiǎn)單的demo程序,并不能將前后知識(shí)點(diǎn)“串”起來(lái),缺少連貫性和系統(tǒng)性。如,在講解JSP時(shí)學(xué)生不知道其在整個(gè)Web系統(tǒng)開(kāi)發(fā)中主要用于表示層顯示,卻在JSP中寫(xiě)了大量的業(yè)務(wù)邏輯代碼。講解JDBC編程時(shí)學(xué)生不知道為什么要封裝DAO、如何封裝DAO以及數(shù)據(jù)層和業(yè)務(wù)邏輯層之間的關(guān)系等。
傳統(tǒng)的JavaEE授課一般是教師邊講理論,邊演示程序,課堂效率不高。沒(méi)有合理分割教學(xué)內(nèi)容,未充分利用網(wǎng)絡(luò)教學(xué)平臺(tái)實(shí)現(xiàn)線上線下混合式教學(xué)。JavaEE課程的很多實(shí)踐性教學(xué)內(nèi)容,可以將操作過(guò)程錄制成視頻,供學(xué)生課前或課后線下反復(fù)觀看。課堂有限的時(shí)間應(yīng)側(cè)重于基本原理和程序難點(diǎn)的講解,教師不需要逐行演示完整的程序,重點(diǎn)應(yīng)講解關(guān)鍵的編程思想和邏輯,學(xué)生課后可通過(guò)線上OJ(Online Judgment)平臺(tái)自動(dòng)評(píng)測(cè)自己寫(xiě)的程序。
強(qiáng)化立德樹(shù)人,根據(jù)課程特點(diǎn),深入挖掘課程中蘊(yùn)含的思想政治教育元素,全面開(kāi)展課程思政,將國(guó)家安全意識(shí)、工匠精神等融入到知識(shí)點(diǎn)中,如:講授開(kāi)源框架時(shí)讓學(xué)生理解和遵循GPL協(xié)議,懂得保護(hù)知識(shí)產(chǎn)權(quán),遵守各類(lèi)法律法規(guī);講授數(shù)據(jù)庫(kù)連接時(shí)強(qiáng)調(diào)如何避免SQL注入以及數(shù)據(jù)庫(kù)安全的重要性,提高學(xué)生的信息安全意識(shí),自覺(jué)維護(hù)網(wǎng)絡(luò)安全和國(guó)家安全;編寫(xiě)代碼時(shí)要求學(xué)生規(guī)范格式,培養(yǎng)嚴(yán)謹(jǐn)細(xì)致的學(xué)習(xí)和工作作風(fēng);以Java代碼的嚴(yán)謹(jǐn)性培養(yǎng)學(xué)生精益求精的大國(guó)工匠精神,以從面向過(guò)程到面向?qū)ο蟮乃季S模式培養(yǎng)學(xué)生與時(shí)俱進(jìn)的發(fā)展觀;通過(guò)課程思政引導(dǎo)學(xué)生樹(shù)立正確的理想信念與價(jià)值取向。
關(guān)注行業(yè)產(chǎn)業(yè)發(fā)展趨勢(shì),及時(shí)將學(xué)術(shù)、科技發(fā)展前沿融入課程教學(xué)內(nèi)容,滿足創(chuàng)新性人才的培養(yǎng)需求。通過(guò)廣泛調(diào)研,獲取Java/JavaEE軟件開(kāi)發(fā)工程師崗位對(duì)本課程的新要求,重新制定課程目標(biāo),充分體現(xiàn)知識(shí)、能力、素質(zhì)的有機(jī)融合。優(yōu)化課程教學(xué)大綱,重新梳理章節(jié)和教學(xué)內(nèi)容,提煉重難點(diǎn),刪除陳舊知識(shí)點(diǎn),增加一些反映JavaEE技術(shù)發(fā)展趨勢(shì)和廣泛應(yīng)用的新技術(shù),拓寬學(xué)生的知識(shí)面。如,在新的教學(xué)大綱中,增加了MVC模式、Spring MVC、Mybatis框架,刪除了Struts、Hibernate框架;增加了JDBC數(shù)據(jù)庫(kù)開(kāi)發(fā)的授課學(xué)時(shí),重點(diǎn)突出JDBC封裝數(shù)據(jù)庫(kù)操作的方法;擴(kuò)展了存儲(chǔ)過(guò)程、觸發(fā)器、連接池、并發(fā)控制等內(nèi)容的講解;拓展了SpringBoot、nosql數(shù)據(jù)庫(kù)等前沿知識(shí)。教學(xué)內(nèi)容體現(xiàn)因材施教,因?yàn)槊總€(gè)學(xué)生的基礎(chǔ)和編程能力不同,不能讓基礎(chǔ)薄弱的學(xué)生對(duì)課程有畏難心理,注重培養(yǎng)他們的學(xué)習(xí)信心和興趣;對(duì)編程能力較強(qiáng)的學(xué)生要加大內(nèi)容的廣度和深度,加強(qiáng)實(shí)踐和創(chuàng)新能力的培養(yǎng),體現(xiàn)“挑戰(zhàn)度”。每個(gè)知識(shí)點(diǎn)都要定義基礎(chǔ)和提高2個(gè)不同層次的要求,遵循由淺入深、由易到難的原則進(jìn)行講解。如,JSP編程部分的基礎(chǔ)要求為在JSP頁(yè)面中通過(guò)指令標(biāo)記、動(dòng)作標(biāo)記、內(nèi)置對(duì)象編寫(xiě)Java腳本,提高要求為封裝JavaBean,在JSP頁(yè)面中通過(guò)動(dòng)作元素訪問(wèn)JavaBean。JDBC編程部分的基礎(chǔ)要求為掌握J(rèn)DBC連接數(shù)據(jù)庫(kù)并能進(jìn)行增刪改查等基本操作,提高要求為理解事物的原理,應(yīng)用PL/SQL編程語(yǔ)言封裝存儲(chǔ)過(guò)程,并通過(guò)JDBC進(jìn)行調(diào)用。
采用項(xiàng)目驅(qū)動(dòng)式教學(xué),通過(guò)項(xiàng)目分析、設(shè)計(jì)、實(shí)施、測(cè)試等全流程的鍛煉,培養(yǎng)學(xué)生的系統(tǒng)思維、編程思維、計(jì)算思維等。遴選幾個(gè)貼近學(xué)生實(shí)際生活的項(xiàng)目案例(如網(wǎng)上購(gòu)物系統(tǒng)、圖書(shū)管理系統(tǒng)、外賣(mài)點(diǎn)餐系統(tǒng)),首先讓學(xué)生完成系統(tǒng)需求分析,運(yùn)用數(shù)據(jù)庫(kù)課程的相關(guān)知識(shí)設(shè)計(jì)數(shù)據(jù)庫(kù);然后,按照表現(xiàn)層、控制層、邏輯層、DAO層搭建好JavaEE系統(tǒng)開(kāi)發(fā)框架;最后,按照章、節(jié)、知識(shí)點(diǎn)3個(gè)層次,將項(xiàng)目分解為一個(gè)個(gè)小的功能模塊。學(xué)生每學(xué)完一個(gè)章節(jié),就能完成一個(gè)功能模塊,并能進(jìn)行功能測(cè)試。比如,學(xué)完JSP時(shí),可以在JSP頁(yè)面中編寫(xiě)Java腳本,完成簡(jiǎn)單的注冊(cè)和登錄界面;學(xué)完JavaBean時(shí),可以從JSP中提取Java腳本封裝為JavaBean;學(xué)完JDBC編程時(shí),可以增加數(shù)據(jù)庫(kù)操作的功能;學(xué)完MVC模式時(shí),再將程序拆分為Model-View-Controller;學(xué)完持久層框架時(shí),可以配置O/R Mapping文件,簡(jiǎn)化封裝JDBC操作的代碼。將項(xiàng)目貫穿整個(gè)教學(xué)過(guò)程,不僅可以加強(qiáng)學(xué)生對(duì)知識(shí)點(diǎn)的全面掌握,而且能培養(yǎng)學(xué)生的項(xiàng)目實(shí)訓(xùn)和管理能力。
強(qiáng)化實(shí)踐教學(xué),設(shè)計(jì)以提高實(shí)踐能力為引領(lǐng)的“基礎(chǔ)實(shí)踐→綜合實(shí)踐→創(chuàng)新實(shí)踐”三層次遞進(jìn)式實(shí)踐教學(xué)課程內(nèi)容,減少驗(yàn)證性實(shí)驗(yàn)項(xiàng)目,增加設(shè)計(jì)性、綜合性實(shí)驗(yàn)項(xiàng)目,培養(yǎng)學(xué)生融會(huì)貫通的能力。引入垂直整合項(xiàng)目化(VerticallyⅠntegrated Project)的教學(xué)方式,建立項(xiàng)目池,搜集來(lái)自行業(yè)、企業(yè)、教師科研的典型項(xiàng)目案例,通過(guò)實(shí)踐教學(xué)讓學(xué)生循序漸進(jìn)參與到項(xiàng)目中來(lái)。如,市科技支撐計(jì)劃社會(huì)發(fā)展項(xiàng)目、學(xué)院的網(wǎng)站、教務(wù)的管理系統(tǒng)、招辦的招生系統(tǒng)、學(xué)工的畢業(yè)生管理系統(tǒng)、后勤的宿舍管理系統(tǒng),都可以通過(guò)省/校級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目的形式立項(xiàng),讓學(xué)生以團(tuán)隊(duì)的形式參與開(kāi)發(fā)。同時(shí),為了保證項(xiàng)目的延續(xù)性,讓后續(xù)學(xué)生也能參與到項(xiàng)目中,需要不斷規(guī)范和積累項(xiàng)目開(kāi)發(fā)文檔,自編成《JavaEE技術(shù)基礎(chǔ)》《JavaEE項(xiàng)目開(kāi)發(fā)實(shí)訓(xùn)》等校本實(shí)踐教材,并應(yīng)用于教學(xué)和項(xiàng)目實(shí)訓(xùn),取得了較好的效果。
加強(qiáng)現(xiàn)代信息技術(shù)與課程教學(xué)的深入融合,利用中國(guó)大學(xué)MOOC、超星泛雅等平臺(tái)自建線上課程,提供優(yōu)質(zhì)的課程資源。安排20%~30%的教學(xué)時(shí)間實(shí)施線上自主學(xué)習(xí),針對(duì)每個(gè)教學(xué)單元,把傳統(tǒng)課堂講授的內(nèi)容通過(guò)觀看視頻、查閱資料、完成自測(cè)題等線上方式前移,讓每個(gè)學(xué)生都帶著較好的知識(shí)基礎(chǔ)走進(jìn)教室,保障課堂教學(xué)質(zhì)量。線下教學(xué)針對(duì)課程中的重難點(diǎn),通過(guò)翻轉(zhuǎn)課堂、分組討論、頭腦風(fēng)暴等方式,激發(fā)學(xué)生學(xué)習(xí)主動(dòng)性,打造線上線下混合式課堂。利用網(wǎng)絡(luò)教學(xué)平臺(tái)記錄、監(jiān)測(cè)學(xué)生學(xué)習(xí)情況,利用大數(shù)據(jù)技術(shù)深度了解學(xué)生的學(xué)習(xí)習(xí)慣和規(guī)律,預(yù)測(cè)學(xué)生的行為,并用于引導(dǎo)學(xué)生優(yōu)化學(xué)習(xí)過(guò)程。利用題庫(kù)系統(tǒng)記錄學(xué)生答題情況,針對(duì)做錯(cuò)的題目,智能推薦同類(lèi)型的題目,做到有的放矢。
創(chuàng)新課程考核方式,建立以學(xué)生能力考核為導(dǎo)向、線上線下相結(jié)合的過(guò)程化成績(jī)?cè)u(píng)價(jià)體系。注重過(guò)程考核,采用筆試、機(jī)試、項(xiàng)目演示、答辯等多樣化的靈活考核方式,凸顯對(duì)學(xué)生工程實(shí)踐能力考核。本課程設(shè)計(jì)線上評(píng)價(jià)包括自主學(xué)習(xí)(包括視頻觀看、資料學(xué)習(xí)、在線自測(cè)、課前準(zhǔn)備工作等,占20%)、課堂測(cè)試(占10%)、作業(yè)(占10%)、實(shí)驗(yàn)(占10%)等環(huán)節(jié)的完成情況,線下評(píng)價(jià)包括OJ平臺(tái)刷題(占10%)、上機(jī)考試(占20%)、項(xiàng)目答辯(占20%)3部分,實(shí)現(xiàn)對(duì)學(xué)生課程學(xué)習(xí)投入度、知識(shí)點(diǎn)掌握度、能力達(dá)成度、課程目標(biāo)實(shí)現(xiàn)度等多維度的評(píng)價(jià)與考核。
課程改革初顯成效,主要體現(xiàn)在:①學(xué)生成績(jī)逐步提高,課程成績(jī)與改革前對(duì)比發(fā)現(xiàn),近2屆學(xué)生的平均分分別提升了3.6分和4.2分,及格率提升2.3%和2.6%;與同期平行班級(jí)成績(jī)對(duì)比發(fā)現(xiàn),本班平均分和及格率分別高出3.5分和1.2%,且成績(jī)分布趨于合理,絕大部分同學(xué)達(dá)到課程期望目標(biāo)。②學(xué)生編程能力大幅提升,能夠靈活應(yīng)用JavaEE技術(shù)進(jìn)行項(xiàng)目開(kāi)發(fā),并順利完成畢業(yè)設(shè)計(jì)。近2年,有12名同學(xué)開(kāi)發(fā)的項(xiàng)目獲批江蘇省大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目,獲軟件著作權(quán)10項(xiàng),36名同學(xué)在全國(guó)Java程序設(shè)計(jì)大賽、藍(lán)橋杯全國(guó)軟件和信息技術(shù)專(zhuān)業(yè)人才大賽中獲獎(jiǎng)。實(shí)習(xí)單位、用人單位也一致認(rèn)為,本專(zhuān)業(yè)學(xué)生“編程基本功好、代碼規(guī)范,解決問(wèn)題能力強(qiáng),融入團(tuán)隊(duì)快”。
經(jīng)過(guò)幾年的探索和實(shí)踐,JavaEE課程教學(xué)大綱經(jīng)過(guò)了2輪修訂,收集了5個(gè)完整的項(xiàng)目案例庫(kù),完成1項(xiàng)JavaEE課程教學(xué)改革項(xiàng)目,自編了2本校本教材。學(xué)生對(duì)課程的學(xué)習(xí)興趣較高,學(xué)習(xí)成績(jī)和編程能力取得了顯著提高。當(dāng)然,在課程教學(xué)過(guò)程中仍然存在一些不足,比如對(duì)Java編程模式、JavaEE應(yīng)用框架的講解不夠深入,學(xué)生的編程思維和能力還有待進(jìn)一步提升等,在今后的教學(xué)改革中需要進(jìn)一步改進(jìn)和完善。