丁 勇,朱长水,吴许俊
(南京理工大学泰州科技学院计算机科学与工程学院,江苏 泰州225300)
JavaEE作为一种开发技术和平台,具有较强的跨平台性、可移植性,已经成为大多数Web应用系统的开发标准[1-2]。JavaEE课程作为一门综合性较强的专业课程,主要讲解Java EE平台搭建,JSP、Servlet、JavaBean、JDBC、JSTL等技术以及MVC模式、O/R Mapping框架的使用[3]。课程要求学生掌握Eclipse、ⅠDEA等集成开发环境的使用,掌握Web应用系统开发的基本流程和方法[4],掌握Spring、Mybatis、Hibernate等主流开发框架的使用,掌握Tomcat等应用服务器软件的配置和使用,掌握JavaEE连接Oracle/SQLServer/MySQL数据库的方法。学生学习这门课程既运用到前面学习的HTML、CSS、JQuery等Web前端技术,又运用到Java程序设计以及数据库的相关知识,因此这门课程对提升学生面向对象编程和综合应用开发的能力有着十分重要的意义。
目前大多数院校的教学内容延续了传统JavaEE课程的内容,偏重对JSP、Servlet、JavaBean、JDBC数据库编程等知识的讲解,忽略了对Web系统架构、MVC编程模式、Web框架等知识的讲解,使这门课程变成了Java语言的“升级版”课程[5-6],造成学生学完这门课程,只能编写一些简单的JSP或Servlet程序,存在编程逻辑不清晰,没有MVC编程思想,不会封装JavaBean组件,不会配置数据库连接池、处理数据库并发等问题。
在Web框架的教学过程中,部分教材仍然使用传统SSH(Struts、Spring、Hibernate)三大框架,Struts框架几乎已被淘汰,没有融入SpringCloud、SpringBoot等新的开源平台和框架技术,造成理论脱离实践[7]。同时,教师往往只注重教学生如何配置和使用框架,忽略对框架背后基本原理的讲解,比如对象关系映射(O/R Mapping)、容器(Container)、依赖注入(DⅠ)、控制反转(ⅠOC)、面向切片编程(AOP)等,导致学生只知其然,而不知其所以然,当系统环境或配置参数出现问题无法追根溯源,或程序一旦出现错误就不会调试[8]。
目前普遍采用的授课和PPT结合的“灌输式”教学方法,已不适应这门课程的教学,因为本课程是一门对综合性编程能力要求较高的课程,仅仅对某个知识点的讲解再辅以简单的demo程序,并不能将前后知识点“串”起来,缺少连贯性和系统性。如,在讲解JSP时学生不知道其在整个Web系统开发中主要用于表示层显示,却在JSP中写了大量的业务逻辑代码。讲解JDBC编程时学生不知道为什么要封装DAO、如何封装DAO以及数据层和业务逻辑层之间的关系等。
传统的JavaEE授课一般是教师边讲理论,边演示程序,课堂效率不高。没有合理分割教学内容,未充分利用网络教学平台实现线上线下混合式教学。JavaEE课程的很多实践性教学内容,可以将操作过程录制成视频,供学生课前或课后线下反复观看。课堂有限的时间应侧重于基本原理和程序难点的讲解,教师不需要逐行演示完整的程序,重点应讲解关键的编程思想和逻辑,学生课后可通过线上OJ(Online Judgment)平台自动评测自己写的程序。
强化立德树人,根据课程特点,深入挖掘课程中蕴含的思想政治教育元素,全面开展课程思政,将国家安全意识、工匠精神等融入到知识点中,如:讲授开源框架时让学生理解和遵循GPL协议,懂得保护知识产权,遵守各类法律法规;讲授数据库连接时强调如何避免SQL注入以及数据库安全的重要性,提高学生的信息安全意识,自觉维护网络安全和国家安全;编写代码时要求学生规范格式,培养严谨细致的学习和工作作风;以Java代码的严谨性培养学生精益求精的大国工匠精神,以从面向过程到面向对象的思维模式培养学生与时俱进的发展观;通过课程思政引导学生树立正确的理想信念与价值取向。
关注行业产业发展趋势,及时将学术、科技发展前沿融入课程教学内容,满足创新性人才的培养需求。通过广泛调研,获取Java/JavaEE软件开发工程师岗位对本课程的新要求,重新制定课程目标,充分体现知识、能力、素质的有机融合。优化课程教学大纲,重新梳理章节和教学内容,提炼重难点,删除陈旧知识点,增加一些反映JavaEE技术发展趋势和广泛应用的新技术,拓宽学生的知识面。如,在新的教学大纲中,增加了MVC模式、Spring MVC、Mybatis框架,删除了Struts、Hibernate框架;增加了JDBC数据库开发的授课学时,重点突出JDBC封装数据库操作的方法;扩展了存储过程、触发器、连接池、并发控制等内容的讲解;拓展了SpringBoot、nosql数据库等前沿知识。教学内容体现因材施教,因为每个学生的基础和编程能力不同,不能让基础薄弱的学生对课程有畏难心理,注重培养他们的学习信心和兴趣;对编程能力较强的学生要加大内容的广度和深度,加强实践和创新能力的培养,体现“挑战度”。每个知识点都要定义基础和提高2个不同层次的要求,遵循由浅入深、由易到难的原则进行讲解。如,JSP编程部分的基础要求为在JSP页面中通过指令标记、动作标记、内置对象编写Java脚本,提高要求为封装JavaBean,在JSP页面中通过动作元素访问JavaBean。JDBC编程部分的基础要求为掌握JDBC连接数据库并能进行增删改查等基本操作,提高要求为理解事物的原理,应用PL/SQL编程语言封装存储过程,并通过JDBC进行调用。
采用项目驱动式教学,通过项目分析、设计、实施、测试等全流程的锻炼,培养学生的系统思维、编程思维、计算思维等。遴选几个贴近学生实际生活的项目案例(如网上购物系统、图书管理系统、外卖点餐系统),首先让学生完成系统需求分析,运用数据库课程的相关知识设计数据库;然后,按照表现层、控制层、逻辑层、DAO层搭建好JavaEE系统开发框架;最后,按照章、节、知识点3个层次,将项目分解为一个个小的功能模块。学生每学完一个章节,就能完成一个功能模块,并能进行功能测试。比如,学完JSP时,可以在JSP页面中编写Java脚本,完成简单的注册和登录界面;学完JavaBean时,可以从JSP中提取Java脚本封装为JavaBean;学完JDBC编程时,可以增加数据库操作的功能;学完MVC模式时,再将程序拆分为Model-View-Controller;学完持久层框架时,可以配置O/R Mapping文件,简化封装JDBC操作的代码。将项目贯穿整个教学过程,不仅可以加强学生对知识点的全面掌握,而且能培养学生的项目实训和管理能力。
强化实践教学,设计以提高实践能力为引领的“基础实践→综合实践→创新实践”三层次递进式实践教学课程内容,减少验证性实验项目,增加设计性、综合性实验项目,培养学生融会贯通的能力。引入垂直整合项目化(VerticallyⅠntegrated Project)的教学方式,建立项目池,搜集来自行业、企业、教师科研的典型项目案例,通过实践教学让学生循序渐进参与到项目中来。如,市科技支撑计划社会发展项目、学院的网站、教务的管理系统、招办的招生系统、学工的毕业生管理系统、后勤的宿舍管理系统,都可以通过省/校级大学生创新创业训练计划项目的形式立项,让学生以团队的形式参与开发。同时,为了保证项目的延续性,让后续学生也能参与到项目中,需要不断规范和积累项目开发文档,自编成《JavaEE技术基础》《JavaEE项目开发实训》等校本实践教材,并应用于教学和项目实训,取得了较好的效果。
加强现代信息技术与课程教学的深入融合,利用中国大学MOOC、超星泛雅等平台自建线上课程,提供优质的课程资源。安排20%~30%的教学时间实施线上自主学习,针对每个教学单元,把传统课堂讲授的内容通过观看视频、查阅资料、完成自测题等线上方式前移,让每个学生都带着较好的知识基础走进教室,保障课堂教学质量。线下教学针对课程中的重难点,通过翻转课堂、分组讨论、头脑风暴等方式,激发学生学习主动性,打造线上线下混合式课堂。利用网络教学平台记录、监测学生学习情况,利用大数据技术深度了解学生的学习习惯和规律,预测学生的行为,并用于引导学生优化学习过程。利用题库系统记录学生答题情况,针对做错的题目,智能推荐同类型的题目,做到有的放矢。
创新课程考核方式,建立以学生能力考核为导向、线上线下相结合的过程化成绩评价体系。注重过程考核,采用笔试、机试、项目演示、答辩等多样化的灵活考核方式,凸显对学生工程实践能力考核。本课程设计线上评价包括自主学习(包括视频观看、资料学习、在线自测、课前准备工作等,占20%)、课堂测试(占10%)、作业(占10%)、实验(占10%)等环节的完成情况,线下评价包括OJ平台刷题(占10%)、上机考试(占20%)、项目答辩(占20%)3部分,实现对学生课程学习投入度、知识点掌握度、能力达成度、课程目标实现度等多维度的评价与考核。
课程改革初显成效,主要体现在:①学生成绩逐步提高,课程成绩与改革前对比发现,近2届学生的平均分分别提升了3.6分和4.2分,及格率提升2.3%和2.6%;与同期平行班级成绩对比发现,本班平均分和及格率分别高出3.5分和1.2%,且成绩分布趋于合理,绝大部分同学达到课程期望目标。②学生编程能力大幅提升,能够灵活应用JavaEE技术进行项目开发,并顺利完成毕业设计。近2年,有12名同学开发的项目获批江苏省大学生创新创业训练计划项目,获软件著作权10项,36名同学在全国Java程序设计大赛、蓝桥杯全国软件和信息技术专业人才大赛中获奖。实习单位、用人单位也一致认为,本专业学生“编程基本功好、代码规范,解决问题能力强,融入团队快”。
经过几年的探索和实践,JavaEE课程教学大纲经过了2轮修订,收集了5个完整的项目案例库,完成1项JavaEE课程教学改革项目,自编了2本校本教材。学生对课程的学习兴趣较高,学习成绩和编程能力取得了显著提高。当然,在课程教学过程中仍然存在一些不足,比如对Java编程模式、JavaEE应用框架的讲解不够深入,学生的编程思维和能力还有待进一步提升等,在今后的教学改革中需要进一步改进和完善。