APP下载

基于“新三中心”理论的JAVA实践教学改革研究

2020-09-17刘振华林传文林文海池凌鸿

吉林农业科技学院学报 2020年4期
关键词:学时编程案例

刘振华,林传文,林文海,池凌鸿

(1.合肥学院人工智能与大数据学院,合肥 230601;2.合肥学院能源材料与化工学院,合肥 230601)

Java语言是软件工程行业最常用的语言,据统计80%的软件企业以Java为主要开发语言。为了培养Java工程师,多数高校均开设了Java课程群,一般包括Java程序语言、Java Web、JSP编程、Android移动应用开发、Java EE,而Java语言是该课程群的核心基础。实践教学是Java课程的重要环节,直接影响学生的实践能力、工程化素养和就业水平。随着技术进步和软件工程化的发展,传统教学模式已经难以适应生产力的发展需求,学校和企业之间的鸿沟越来越明显,加上国家政策适时导向,极大推动了Java教学改革。虽然新的教学理念和理论已基本形成,但由于传统教学模式深入人心,加上师资等客观条件受限,不少旧的教学体制和政策仍在继续。因此新的教学模式和方法还处于探索阶段,尚未定型。

赵炬明[1]在《论新三中心:概念与历史—美国SC本科教学改革研究之一》一文中以创新的意识提出了SC(Student-centered)改革的三个核心观点:以学生发展为中心、以学生学习为中心、以学习效果为中心,称为“新三中心”[2],并在2018年进一步完善了这一理论。近年来,随着工程教育认证、一流课程、金课等对教学改革的推进,涌现了MOOC、翻转课堂、兴趣激发、项目牵引、过程评价、结果导向、持续改进等诸多新型教学模式、理念和措施,总体上正是由“老三中心”向“新三中心”的转变。

近年来,Java教学改革的研究虽然都在有意或无意围绕学生学习过程、学习效果和学生发展的“新三中心”理论开展,但大多没有真正从“新三中心”理念出发进行系统的思考和设计,其改革存在深度不足、可操作性差等问题。本文从“新三中心”思想出发,以培养学生工程化能力为导向,分析学生和工程师之间的角色差异,提出了理论和实践混合式教学模式,以客观教学实践为基础,给出了具体可行的教学方案。

1 相关工作

综观已有相关研究,基本上都是从技术手段、教学理念、教学模式、教学方法、项目实践、组织形式、评价机制等多个方面提出实践教学改革或改进的方法,但多数研究仅给出一些新的理念而无具体的实现方法,或者方法则需要投入巨大的人力物力,在当前条件下并不可行。较具启发价值的代表性成果有以下几个。

郭艳燕[3]提出基于TPACK 模型的程序设计实验课程混合式教学改革,分析了传统教学中Java实验课存在课时不足、定位不准、形式单一、反馈不足、评价简单等问题,提出了有关在线教学、实验题型设计、实验教学设计、评价方法等指导性意见。但其偏向理论和原则设计,没有提供具体操作方法。

林菲等[4]认为以ACM比赛为基础的实践训练有较大的局限性,难以培养学生解决工程问题的能力,并提出了以项目为基础的“六元融合”实验教学改革,即“项目引领—翻转教学—个性培养—任务驱动—结对编程—过程考核”融合教学,利用MOOC、项目驱动、组队实践等方法提升实践能力,取得良好的效果。

谌卫军[5]提出“以学生为中心”“以编程思想和实践训练为重点”的授课理念,结合教学实际,具体阐述“重思想、重实践”的教学理念,分析了Java教学中的重点、难点,设计了具有趣味性的实践项目,针对Java实践教学设计、实践和课后评价给出具体方法和示例,对当前教学改革较具启示性。

李东明等[6]提出通过建立项目案例库、建立开放实验课题、开放实验平台、改革考核制度等方法激发学生学习兴趣,提升学生实践能力,取得了较好的效果。

索望等[7]、姜大志等[8]基于CDIO模式开展探索了Java教学改革,分析了当前教学中存在的目标不清晰、项目案例设计不合理、教学方式单一、师生缺乏沟通等问题,提出机房授课,采用完整的工程项目案例实践、强化过程考核等改革方向,但具体的设计不清晰。

丁振凡等[9]提倡在教学和实践中启迪学生思考、反思,通过培养学生计算思维提升实践能力,通过网络化教学手段增强师生沟通,具有一定的效果。

张义[10]对比了安徽工程大学与美国UB(University of Bridgeport)大学的Java教学的差异,美国大学特点是教学师资投入大、严格小班教学、课堂以讨论和答辩为主,实践难度和强度兼备,考核偏重于过程,其教学理论更接近MOOC和翻转课堂,对我国程序设计语言教学有非常好的借鉴意义。

马瑞敏[11]提出以项目驱动,采用“分阶段渐近式”的实验教学法,分层次设计实验项目,逐步提升项目复杂度,同时建立系级大学生创新创业实验基地,为学生提供实践环境。

梁春燕等[12]基于学习共同体理念开展了引导式教学设计,希望通过共同体优势互补、互相促进激发学生学习兴趣,但在具体设计中共同体的理念未能深入。

戴长秀[13]为解决Java课时不足问题,提出重塑课程链,将C语言、C++课程替换为Java中高级课程,总课时扩展至2~3个学期,以增强Java的深度,但此法挤压了C、C++的课时,势必导致学生对程序语言的原理理解不深,欲速不达且后劲不足。

卢冶等[14]面向应用型大学建设研究了Java课程群的设置、教学设计等,引入了校企双导师指导,强调过程考核,压缩了实验学时,理论学时提升到64学时。

总结针对Java实践教学的改革主要有以下几种类型:(1)引入新的教学理念。如CDIO、OBE、以学生为中心、工程认证模式、学习共同体、能力导向等。(2)新型项目案例教学。已有教学改革中大都重视项目案例,具体实施时的教学设计多种多样,简要统计有以下几种。一是单个项目案例贯穿学期:为解决学生实践项目体量不足的问题,将一个中型项目划分为多个模块,每个阶段实现一个模块功能,最终拼装起来,在课程结束时完成整个项目的开发;二是项目兴趣激励:通过生活中能接触到的、学生感兴趣的项目实例开发激发学生的兴趣;三是项目涵盖法:在实验教学中除验证性、设计性实验外,用若干个小项目覆盖所有知识点,将Java知识学习和实践相结合;四是项目案例法:建立项目案例库,为工程化培养提供支撑。(3)引入信息化技术。通过引入教学管理系统、“互联网+”等课程辅助系统增强师生交流,提升教学管理效率,引入Java教学平台、Java机试系统为学生提供实践平台。(4)新型教学模式。引入MOOC、SPOC、翻转课堂等新型教学模式,是教育教学由“老三中心”向“新三中心”迁移的具体实现[1-2]。(5)革新评价体系。将以往期末主导转变为过程主导,增加过程考核的次数、形式和比重,重视实践考核,通过引入机试系统或实验答辩增大实践比重,降低理论考试和期末考试比例。(6)重塑教学各个环节。除了革命性的手段外,还可以深挖教学各环节潜力,在教学上破解Java教学难点,精心设计实践环节。(7)建设创新平台。设立开放性课题,建设开放的实验平台,鼓励和激发学生兴趣。

2 存在问题

“新三中心”理论的提出,为当前Java教学改革指明了方向。但就客观情况而言,针对Java教学的理论模式有较多研究,受限于教育系统体制改革的渐进性要求及传统教学思路的影响,要实现以学生为中心设计教学方案仍面临以下问题。

2.1 学时不足

纵观各高校Java理论课时安排一般在30~50学时,面对庞大的Java知识体系,教师仅能做到对各部分“点到即止”,学生停留在“学会”层次,既不能深入Java体系,也无法达到融汇创新,不利于学生的深入学习和长远发展。

从各高校开课数据来看,Java课程常安排在1~4学期,该阶段同时安排了大量的基础课、通识课和公共课,留给Java课程的时间非常有限,学生有效学习时间较少。在已有大量针对MOOC、翻转课堂的改革研究中,均未能考虑学生的时间分配问题[15]。

2.2 师资不足

基于过程评价、学习反馈的教学改进需要大量的师资投入,而国内大学的师生比普遍不能满足小班教学,助教投入较少,基于过程评价的教学无法实施。以30人的教学班级为例,每周开展一次评价活动,每个学生的评价耗时1小时/周计算,每周仅过程评价需要花费30小时,加上教学设计和教学改进等,每周在课堂教学以外消耗时间大约在60小时,远远超过每周40小时的工作标准。

2.3 实验规模不足

学生的实践能力来自于项目的规模和代码量,部分Java教学停留在传统程序设计类语言教学模式上,一方面设计型实验量不足,造成学生的程序设计能力弱;另一方面缺乏一定体量的项目,造成学生实践能力弱。

2.4 项目案例不合理

已有研究中,有项目驱动式[8]、项目案例式[4]等较大规模的项目培养学生实践能力。具体做法是选取中等以上体量规模的项目案例贯穿整个教学过程,将项目划分为多个模块,学生在不同的教学阶段完成相应模块。这一方法存在三个问题:(1)项目训练不具备系统性和综合性,学生缺乏成就感和整体认知;(2)实验过程先难后易,轻重倒置,不符合知识传授与能力培养的一般规律,如在实际教学中,通常是让学生在前期设计后台逻辑,在后期设计图形界面,而对于软件设计工作来说,设计难点和重点在后端设计,图形界面一般并没有太多难点;(3)缺乏设计性工作训练,不利于学生提升核心能力。

3 教学目标设定

与C语言等程序语言课程不同,Java课程的目标是培养学生实用性、应用型和工程化能力。Java课程在计算机专业课程体系中有其特殊性,课程学习一般安排在C语言、C++、数据结构课程之后,也有高校安排在C语言课程之后,是由基础程序设计向应用型程序设计转变的关键,是应用型课程体系的基础。基于这个目标,Java语言教学的培养目标包含:(1)培养程序设计基础:程序语言的基本语法、执行流程,培养学生基础编程能力、算法设计能力。(2)培养面向对象思想:介绍面向对象体系,包括类、对象、接口等概念和封装、继承、多态等特点,培养学生面向对象思想,转变以往面向过程的思考和设计方式。(3)培养可视化编程能力:培养学生可视化编程能力,包括多线程、事件、GUI界面、Java类库、时钟等,使学生形成可视化编程思维理念。(4)培养工程化能力:通过较大规模的项目锻炼学生的工程化能力,具备初步的工程化研发理念、熟悉项目研发流程、熟悉团队配合。

4 Java教学改革措施

针对以上问题,为在有限时间内提升学生学习效果,可以从课堂和项目实践两方面进行改革。一是在课堂教学上取消实验课,将实验课时合并到课堂教学中,改变以往理论和实验脱离的教学模式,以实践为核心建立理论与实践混合式的互动课堂,通过“边听边练”、理论结合实践加速学生理解和掌握,提升学生的学习效率;二是在项目实践上建立设计性题库和递进式项目案例,设计逐层递进、逐步升级的项目案例,保证学生在有限时间内完成具有较大体量的项目,真正培养学生的工程实践能力。

4.1 理论实践混合式课堂

受“理论课+实验课”教学体制约束,当前的Java教学分为理论课时和实验课时,理论课以讲授为主,实验室开展实验验证和设计。理论课“只听不练”,实验课“只练不听”,理论与实践相互独立。

针对以上问题,可以创新性地取消实验课,将验证性实验放到课堂上现场进行。采用教师“边教边指导”,学生“边听边练”的即时训练模式。以合肥学院为例,2017级、2018级、2019级软件工程专业的学生,笔记本电脑持有率达到100%,完全具备在课堂上开展实验的条件。课堂教学以代码编写演示和学生实验为主,兼顾少量的理论讲解。课堂时间安排如表1所示,在每个演示讲解之后,让学生立即动手练习,通过动手加深理解,最后对现场演练中出现的问题加以讲解。

表1 混合式课堂时间安排

混合式课堂方案实践了“新三中心”的理论,以学生状态、学生学习为核心,改革方案具有以下优势。(1)补足理论课时不足:实验课时通常占总课时的一半,如清华大学Java总学时80,其中理论48学时,实验32学时;中国科技大学Java总学时70,其中理论40学时,实验30学时。取消实验课后,理论课时增加近1倍。(2)提升学生课堂参与度:课堂上有近半时间由学生主动参与实践,现场开展师生互动交流,将学习的主动权交给学生。(3)提升学习效率:课堂的理论和结论由学生通过实践推导和验证,记忆更牢固,领悟更深刻。经过实践操作后,课下时间几乎不需要再次复习。(4)激发学生学习兴趣:混合式课堂以实践引导理论学习,避免了单纯理论讲授的枯燥性。通过动手实践能够激发学生的成就感,从而激发了学生对Java学习的兴趣。以上方法从2019年起应用于合肥学院软件工程专业,取得了显著效果,学生的课堂参与度大大提升,2018级软工程专业Java课程的程序设计实践参与率接近97%,2019级参与率接近100%,2020年课堂将进一步优化。

4.2 建立递进式项目案例

综合性项目是Java实践能力质变的关键,但在实际教学中,现实课堂综合性项目要么难以开展,要么体量不足,主要原因是综合性项目涉及的知识较多,在新课初始阶段难以开展,在新课即将结束时又没有足够的时间完成,呈现了学生有限时间与项目规模之间的矛盾。

而如果采用递进式的项目案例,针对同一个项目,在课程学习的过程中不断完善,最终形成一个规模较大的实用性软件,并且在每个阶段都保证了项目的完整性和继承性。必须注意的是,项目案例设计需要遵循以下“六性”准则:(1) 覆盖性:项目案例所用知识能够与知识点相匹配;(2) 完整性:每一项目都是具备独立功能的完全软件,学生完成后具备整体感和成就感;(3) 递进性:每一项目都是在上一项目基础上的优化,在降低学生工作量的同时不影响实践效果;(4) 实用性:系统在完成后具备一定能力,可引发学生的成就感;(5) 开放性:系统具备创意、创新可发挥的开放式空间,提高学生的积极性;(6) 复杂性:项目必须保证具有一定程度的复杂性和代码量,否则不足以培养学生实践能力。

下面以“实验报告管理系统”为例来说明项目案例的设计(如图1)。综合性项目按由易及难、由简至繁,层层递进式设计,共分为5个层次:查重关键技术、师生管理系统、报告查重系统、报告管理系统、GUI报告管理系统,每一系统都是以上一系统为基础,通过应用新增知识点对系统进行能力提升。综合性设计项目共4个可选项,选择其中一个项目开展需求分析和软件设计工作,形成完整的设计文档和使用说明文档。

图1 递进式综合项目案例设计

4.2.1 Console报告查重关键技术 运用字符串模式匹配算法,编程实现查重关键技术系统。给定两个字符串或两段文件,通过分解和比较,找出两个字符串相重复的字段或语句,输出重复字段和在两个文件中所处的位置,现阶段文件允许使用屏幕输入的方式。

4.2.2 Console师生信息管理系统 面向高校人员管理,建立管理系统。高校人员分教师、学生、工人等多个类别,除了姓名、年龄、工号/学号等共有信息外,教师和学生还具有不同的职责和属性。一个教师可以教多门课程,一门课程可以有多位教师教学,一个学生需要学习多门课程,一门课程也会有多个学生学习,使用类、继承和接口实现。

4.2.3 Console报告查重系统 结合Java常用类,再将师生管理系统与查重系统相融合,建议针对单门课程的报告查重和管理系统。

4.2.4 GUI实验报告管理系统 将上一版本的报告管理系统升级为图形界面。

4.2.5 GUI实验报告管理系统V1 在上一版软件的基础,利用Java多线程编程,将软件功能升级为多个班级、多门课程模式,支持前后台同时工作,即后台查重和前台正常可同时进行。

4.2.6 GUI实验报告管理系统V2 在上版软件的基础上,将报告管理、师生信息、课程信息等硬盘信息存储升级为数据库存储。

从图1中可以看出,除了“实验报告管理系统”这条主线外,还提供“师生管理系统”支线,在设计案例时可以考虑多条主线,以提供多种选择。

4.3 建立验证性和设计性题库

程序设计类课程需要大量的编程练习,针对学生练习不足问题,面向验证性和设计性实验建立系统性、体系化的编程题库,题库建设需满足以下要求:(1)确保每个知识点的覆盖性:须覆盖教学重点、难点,并保证覆盖完整;(2)确保知识结构的全面性:题库包括Java知识点、算法设计、编程思想训练、编程规范训练等,保证学生培养的全面性。

利用超星平台的作业及考核系统,每日自动下发若干道编程题,并利用自动统计、作业批改、成绩统计和作业分析等功能,可以实时监控学生的学习效果,根据效果及时调整教学进度。

4.4 建立阶梯式助教机制

师资是教学活动的保证,在效果评价、交流互动中需要大量的师资投入。助教可以帮助完成实验答辩、作业批改、交流互动,并在此过程中完成学习效果的评价,因此,可以建立由高低年级混合的助教队伍,高年级承担助教任务,低年级跟随助教的工作内容,形成具有梯队的助教队伍,以保障各项教学活动的进行。同时,为了保证助教的工作质量并能持续培养,应注意建设具有持续性的助教机制。建立由高低年级混合的助教队伍,推动良好助学助教传统的形成。

5 结 语

以上教学改革方案在合肥学院2018级软件工程专业3个班级进行了初步实施,原来课程设置为70学时,包括36学时理论、34学时实验,改革减少了14学时实验,将这14学时加到36学时理论中,开展了50学时的理论和实践混合课堂,建成包含400道编程及综合项目案例的题库,配备了3个助教。实践证明,在后续的Java综合设计课程中,2018级成绩明显好于2017级,在考核方式、考核教师、课程周期完全一致的情况下,2018级学生成绩合格率达到95%,而2017级为83%,充分验证了混合式课堂和递进式项目案例能够有效提高学生的实践水平。

猜你喜欢

学时编程案例
第二课堂成绩单制度下的学时发放标准的探索
——以中国民用航空飞行学院为例
《诗词写作》课程教学大纲(节选)
编程,是一种态度
案例4 奔跑吧,少年!
TWO VILLAS IN ONE CEDIA 2020案例大赛获奖案例
Bespoke Art Deco Media Room CEDIA 2020案例大赛获奖案例
教学大纲国画(工笔花鸟)
元征X-431实测:奔驰发动机编程
编程小能手
探索学时积分制 构建阶梯式成长激励体系