工程教育认证下的计算机课程贯穿式案例教学实践与探索
2021-11-07张燕平
周 鹏,赵 姝,陈 洁,张燕平,钟 诚
(1.安徽大学 计算机科学与技术学院,合肥 230601;2.海南热带海洋学院 理学院,海南 三亚 572022 )
0 引言
新工科建设是应对新经济的挑战,从服务国家战略、满足产业需求和面向未来发展的高度,在“卓越工程师教育培养计划”的基础上,提出的一项持续深化工程教育改革的重大行动计划[1]。新工科教育如何落地,特别是在学生的能力培养上,新工科要求学生具有解决复杂工程问题的能力[2]。各高校应结合自身情况,从专业设置、培养方案、教学内容和教学方法等多方面进行改革和实践[3]。此外,传统的课程设置和教学内容大多停留在对单个知识点的讲解和简单应用上,无法有效培养学生的计算思维,提升学生对复杂问题的分析解决能力。因此,迫切需要高校教师在课程教学实践中引入新思路和新方法。
工程教育认证是国际通行的工程教育质量保证制度,也是实现工程教育国际互认和工程师资格国际互认的重要基础[4]。我国工程教育认证主要倡导3个核心理念:以学生为中心(Student Centered)、面向产出的教育(Outcome Based Education)和持续改进(Continuous Quality Improvement)。其中,以学生为中心要求教学目标应围绕学生的培养,教学内容设计聚焦学生能力的培养,从而达到预期的学习效果。面向产出的教育则强调在教育过程中“教育的产出”——学生到底学到了什么,而非“教育的输入”——教师教了什么。持续改进则要求建立常态性的评价机制并不断改进。为此,在工程教育认证背景下,应围绕上述3个核心理念,结合高校相关课程的实际开设情况,对现有的不能适应认证要求的课程进行改革和探索[5]。
Java EE(Java platform Enterprise Edition),是帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序的一系列技术规范[6-7]。目前,很多本科和专科院校都开设有Java EE相关课程。然而,由于Java EE规范包含了大量不同类别的技术,使得各高校在该课程的教学安排和设计上存在诸多困难。例如,在教学内容设置上,如何在有限课时限制下对教学内容进行取舍。一般而言,Java EE课程至少应该包含Java基础语法、静态页面开发、 Servlet、JSP和Java EE框架这5个部分。然而,由于这5个部分的开发技术和学习特点不同,使得在教学案例设计上容易产生知识点分散且难以贯通的情况,限制了学生对技术框架的总体理解,影响了课程目标的实现。此外,很多教材中提供的教学案例严重脱离学生的日常学习和生活,使得学生难以产生代入感和共鸣,无法激活学生的学习积极性[8-9]。
企业级软件开发(Java)是本科院校计算机软件工程类专业选修课程,是一门实践性很强的课程,主要教授Java EE平台相关开发技术,内容涉及Java基础语法、静态页面开发、Servlet和JSP开发、Java EE框架等。根据培养计划,该课程共3个学分,总计60学时,其中理论36学时,实验24学时。学生通过理论学习和动手实践,掌握并具备实际工程项目从设计到开发的相关技术和能力。由于该课程涉及的知识点繁多,使得在具体教学安排和课程案例设计上存在很大的困难,理论和实验教学效果均难以达到预期[10-11]。为此,本研究以《企业级应用开发(Java)》课程教学实践为研究对象,围绕新工科建设背景和工程教育认证核心理念,采用贯穿式案例设计方法,以课程总体目标为导向,将课程各章节的知识点融入同一个贯穿式综合教学案例中,注重学生的中心地位,强化学生的知识利用,有效提升了学生对复杂工程问题的分析解决能力。
1 贯穿式教学案例设计原则
贯穿式案例设计的核心思想是设计贯穿Java EE各项技术且贴近学生日常生活的综合教学案例,以课程总体目标为导向,同时兼顾教学案例的可扩展性和持续改进空间。传统的课堂教学示例大多围绕单个知识点设计,知识点之间没有关联性,且总体目标不明确。贯穿式案例以课程总体目标为导向,设计一个能够融合课程核心知识点的系统教学案例,从而达到提升学生求解复杂问题能力的最终目标[12-13]。Java EE贯穿式案例教学课程内容和案例设计原则如图1所示。
图1 Java EE贯穿式案例教学内容和设计原则
1.1 以学生为中心
高校学生的日常学习和生活都是在校园内,因此,教学案例在设计时须充分考虑学生的的实际,不能脱离实际而设计一些完全靠想象的教学案例。例如,在讲解Java语法中对象、继承和多态概念时,可以举人(People)、学生(Student)、教师(Teacher)这种学生日常生活中能够接触到的对象实例。此时,学生能够快速明白不同对象之间的继承关系,思考不同对象应该拥有哪些属性和方法,不同对象包括的属性之间的重用关系,以及方法的重载和多态性质等。在教学过程中,启发式提问能够更好地引导学生主动思考,提升自主学习和参与的积极性。注重以学生为中心,设计贴近学生生活,便于学生理解和领悟的教学案例,帮助学生在学习知识点的同时,能够举一反三,融会贯通。
1.2 以课程目标为导向
Java EE课程的总体目标是让学生在课程学习完成后,具备设计和开发一个小型的Java Web系统的能力。因此,知识点讲解和案例设计时,应考虑如何将不同章节的案例进行贯通,将零散的知识点整合在一起,形成一个贯穿式案例。如设计并完成一个Java Web管理系统。首先这个管理系统应该具备登录和注册功能。登录时,应该有不同的角色,如学生(Student)和教师(Teacher)。这时,用户角色的设计便同Java基础语法部分中对象的概念关联起来了。然后,用户在登录前需要进行注册,而注册页面设计中的form表单元素便同对象的属性之间进行了关联。此外,可以在静态页面的基础上加入Servlet和JSP的处理代码,获取页面填写的登录用户信息,并同数据库信息进行查询比对,从而进行登录验证。最后,考虑如何将此登录功能用Java EE框架进行实现,并体会不同实现方案之间的异同。
1.3 以持续改进为抓手
Java EE包含的技术繁杂,且技术版本更新快。因此,在案件设计时需要以持续改进为抓手,综合考量案例的可扩展性和教学质量提升空间。例如,在讲解Servlet会话跟踪时,常见的传统技术有:Cookie、Session、URL重写和隐藏表单域。由于不同的技术有不同的应用场景和局限性,因此需要对同一个案例设计多种不同的方式来实现会话跟踪效果,从而让学生能够深入体会这几种方法的异同点。此外,随着Memcached和Redis等NOSQL数据库和缓存技术的兴起,会话跟踪技术也在不断与时俱进。为此,在讲解某些技术点和设计案例时,应该考虑其可扩展性,以适应未来新技术发展的需求。同时,案例设计应根据学生的反馈和相关技术的更新进行持续改进,将当前最新的和最热门的互联网新兴技术融入课程案例中。对于某些已经淘汰的Java EE技术,则可以适当删减。
1.4 以对复杂问题的求解能力培养为根本
Java EE课程的实验课考核是让学生设计和开发一个小型Java Web系统,从而提升学生对复杂问题的分析求解能力。因此,在教学案例设计过程中,应始终围绕对复杂问题的求解能力培养为根本原则。虽然课堂教学中使用的演示案例包含的模块和功能点不会非常多,但仍可体现对复杂问题的求解思路和求解过程。为此,需要统筹设计整个教学案例,并采用贯穿式手段将求解复杂问题的过程进行拆分,融入各部分子问题和子案例当中。例如,在整个课程的开始,抛出一个实际的系统工程问题,使学生了解复杂问题的全貌,随后,带领学生对整个大问题进行抽丝剥茧,层层分解,使学生清晰地认识到当前的分析和求解只是整个问题求解中的一部分。
2 Java EE贯穿式案例教学示例
本研究以软件工程专业选修课程《企业级应用开发(Java)》的课程教学实践为例,整个课程教学内容分为5个主要部分:Java基础语法、静态页面开发、Servlet开发、JSP开发和Spring框架开发。在课程教学中,以案例的分析实现为驱动,将整个过程分为需求分析、数据库设计、原型设计、系统架构设计和编码实现这5个步骤。案例分析实现过程同课程内容之间的关联关系如图2所示。下面仅以Java Web系统中最常见的用户登录功能为例,说明整个贯穿式案例设计的过程。
图2 Java EE贯穿式案例分析实现过程同教学内容之间的对应关系
2.1 Java基础语法
对于一个较完整的Java Web系统,一般应提供多角色、多用户登录的功能。以用户登录功能为例,将类、对象、以及继承和多态等Java基础语法知识点融入其中,让学生在思考和解决系统登录问题的过程中,理解和掌握这些知识。具体来说,首先应将该功能中涉及的角色进行抽象和区分,并分析明确不同对象之间的关系。假设当前系统需要同时支持学生(Student)和教师(Teacher)两种角色。那么,可以先设计和定义这两种角色的父类——用户(User),该类包含的主要属性有:用户名(userName)和密码(password),主要方法有:登录(loginIn)和退出(loginOut)。而Student类和Teacher类可以继承User类,同时定义这两个类独有的属性,如学号、年级、专业、班级等信息。此外,由于学生角色用户和教师角色用户在登录后所展示的系统页面和功能菜单应该是不一样的,这也意味着虽然这两个类都有登录(loginIn)方法,但具体实现是不同的,从而体现Java中多态的核心设计理念。
2.2 静态页面开发
静态页面设计同前面提及的对象属性设计密切相关。例如,假设用户(Student)类包含的属性有用户名、密码、学号、年级、专业、班级、个人简介等信息。那么,在进行用户注册页面设计时,便需要同时考虑到这些不同类型的个人信息的属性。如用户名、密码和学号字段应使用text文本框,年级、专业和班级字段应使用select单选框,个人简介则应使用textarea多行文本输入框。由此,便可以将静态页面开发中HTML标签部分的教学内容同Java对象中属性类型定义串联起来,形成整体化设计。此外,还可以引导学生在注册页面加入用户名、密码等信息填写是否有效合法的验证功能,并由此引出Javascript中函数的定义和form表单验证等相关知识点。
2.3 Servlet开发
首先需要讲解清楚Servlet的相关工作原理和编程基础知识。随后,提出如何在登录时验证用户名和密码同数据库中存储的信息是否一致这一问题,并由此引入Servlet后端数据库处理机制。其中,Servlet表单处理中页面填写信息获取和解析部分相关内容是同静态页面设计息息相关的。例如,假设在静态页面中,用户名和密码定义的属性名称分别为userName和password,那么在Servlet中获取请求中的页面填写信息的request.getParameter方法也必须使用相同的字符串作为参数值。在进行登录信息验证时,可以结合Student类设计,新增userCheck方法来验证所填写的用户名和密码是否同数据库中保存的信息一致。此外,还可以在登录时引入和讲解动态页面开发中的ajax异步刷新机制,从而将异步开发技术同Servlet开发技术进行紧密结合和衔接。
2.4 JSP开发
在讲解和实现基于原生Servlet的用户登录功能后,可以由Servlet开发时页面内容修改烦琐的问题引出JSP开发技术。在介绍完JSP的工作原理和基础语法后,可仍然通过系统登录这一实际案例,分析和比较Servlet和JSP这两种技术的异同。其中,需要着重强调的是JSP技术的根本就是Servlet技术,而且JSP代码在Web容器中实际运行时是需要提前转换成对应的Servlet代码实现的。然而,由于JSP技术将页面展示和代码逻辑处理都放在同一个jsp页面文件中,不利于展示层和逻辑处理层的开发分离。由此实际开发问题,进一步引出MVC(Model-View-Controller)设计模式和Java EE框架开发。
2.5 Java EE框架开发
Java EE框架开发部分主要讲解Spring框架的原理和使用。在JSP开发部分,课程用纯JSP技术分析并实现了用户登录功能。然而,当业务功能和页面展示的复杂度不断提高时,仅JSP技术已经无法满足大型项目的开发需求。由此,Spring框架是鉴于软件开发的复杂性而创建的,其最大目的就是使Java EE开发更加容易。本课程仍然以用户登录和注册功能为例,采用Spring MVC框架设计并实现此功能。通过与Servlet实现版本和JSP实现版本的对比分析,使学生充分理解和体会设计模式的重要性以及Java EE框架底层原理和实现机制。同时,深入理解借助开发框架,如何将复杂工程问题简单化。仍然以登录功能为例,不同于JSP开发,基于Spring MVC框架开发时,整个项目可划分成4个层次:View层、Controller层、Model层和DAO层。其中,前端页面展示View层和后端逻辑处理Controller层之间是分离的,并通过配置不同的URL请求模式进行关联。例如,可以将登录请求定义成“/main/login”,并在后端Controller中定义响应该URL的方法。此外,由于Spring框架已经将页面请求参数进行了封装,在Controller中可以通过多种方式、很方便地拿到页面填写的用户登录信息。Controller中拿到页面填写信息后,通过调用Model和DAO层方法进行数据库信息查询和验证。通过与Servlet登录开发版本和JSP登录开发版本的对比,使得学生理解并体会开发框架的分层思想及其对复杂问题求解过程中起到的辅助作用和便利性。
3 课程考核和教学效果
本课程考核方式包括课后作业、随堂测试、期末考查这3个主要组成部分。课程总成绩由这3个部分按不同比重组合而成,各部分所占比例及其与课程目标对应关系如下:
(1)课后作业占30%,将整个Java EE案例系统分解成5次课后作业,分别对应课程内容中的5个主要组成部分。此外,5次课后作业之间存在先后关联性,后一次作业总是在前一次作业的基础上进行扩充和完善,各子部分完成后即可完成了整个Java EE案例系统。
(2)随堂测试占20%,鼓励学生在案例教学过程中积极思考和参与,并通过布置随堂测试和问答,考查学生的知识点掌握程度和主动思考能力。
(3)期末考查占50%,考核整个学期的课程学习效果,考查形式为系统设计和实现。通过小组的形式设计并实现一个贴近日常生活的Java Web工程项目,检验整个课程的学习效果和复杂问题的分析解决能力。
Java EE课程考核中贯穿式教学效果体现在两个方面。一是课后作业。不同于传统的课后作业只对应某一章节知识点的方式,本课程的课后作业是将整个案例系统分解成5个部分,且不同部分之间是相互关联和层层递进的。每次作业都是整个系统实现的一部分,从而实现对整个课程内容和考核要求进行贯穿。二是期末考查。以自定义Java Web项目设计和实现的方式进行,并不着眼于某几个独立知识点的考查,而是综合考查学生对复杂问题的分析求解能力。通过检验学生对自定义项目的分析和实现过程,充分考查学生对整个课程内容的学习和掌握情况,体现贯穿式教学效果。
按照上述方式,本研究对某本科高校软件工程专业54名学生的学习过程和效果进行考核。最终成绩统计如下:优秀31人,占比57.4%;良好18人,占比33.3%;中等4人,占比7.4%;及格2人,占比3.7%,其中良好和优秀占比总计90.7%,达到了较好的预期效果。
4 结论与改进
本研究结合当前的新工科建设和工程教育认证背景,以提升学生对复杂工程问题的解决能力为目标,围绕以学生为中心、面向产生和持续改进核心理念,采用贯穿式案例设计方法,在Java EE课程教学实践中取得了非常不错的教学效果。在今后的教学过程中,仍需要不断优化案例设计细节,时刻关注并融入新的开发技术和教学理念,将计算机课程的教学改革推向新的阶段。
(责任编辑:王旭东)