1. 引言
Java语言是目前功能最强、应用最广泛的一种完全面向对象程序设计语言,具有面向对象、与平台无关、多线程以及强大的网络编程功能等特点,已成为21世纪首选的应用程序开发语言 [1] 。近些年计算机专业的毕业生面临着越来越大的就业压力,这就要求高校教师在教学中要直面就业市场的变化,更加注重学生动手能力的培养。程序设计具有抽象性、系统性和逻辑性,编程思维是学习程序设计的重要基础,要想培养合格的Java软件人才,Java语言的编程思维能力的培养尤为重要。
线上线下混合教学是一种全新的教育方式,可弥补传统教育方式的缺陷,最大限度地体现出学生的主体地位 [2] 。通过线上线下混合教学模式,学生可以充分利用网络平台的教学资源,不限时间、不限地点地进行课程的预习、复习、反复学习等活动目标。线上线下混合教学已经出现在越来越多的课程教学中。随着MOOC平台、学习通、雨课堂、希冀平台等应用的出现,基于网络教学平台的混合式教学模式成为了当前高校教学改革的主要趋势 [3] 。
本文将面向应用型Java软件人才培养的需求,结合线上线下混合教学模式,从教学方法、教学内容设置、转变学习方式等几个方面着手,探讨如何在混合式教学中进行学生的编程思维能力的培养。
2. 混合式教学中面向Java编程思维能力培养的教学方式改革
2.1. 线下教学中重视学习兴趣培养
兴趣是最好的老师。在混合式教学模式中的线下教学时,教师一定要牢牢抓住学生的学习兴趣,这样在Java的学习中能够达到事半功倍的效果。学生刚开始接触Java语言课程时,容易产生课程不好学、难以理解、没有信心等念头。教师在线下教学中,通过创设一定的学习环境展现课程的趣味性和课程知识的实际用途,以唤起学生的学习欲望。做到看重Java语言的第一堂课,让学生感知Java语言的魅力所在。
Java第一堂课将一些Java成功开发的例子介绍给学生,如Java在哈勃太空望远镜监控、火星登陆模拟、Java Office开发、Java在疫情扩散模型、Java仿真应用实例等,同时结合教师的科研项目软件开发实践,演示Java项目,通过图文并茂的方式,强调课程的实用性和现实意义。在后续的教学中,结合教学内容,给学生展示Java语言编程的小游戏(俄罗斯方块、扫雷、坦克大战、扑克游戏等)、编程的图形小动画(如升国旗、球碰撞等),还有一些班级推优程序、音乐播放器等应用案例,通过这些趣味性实验,使他们在心理上增强对此门课程的学习兴趣,从而激发学生的学习欲望。
2.2. 线下教学中以“读 + 演 + 改 + 练”为基础进行编程思维能力训练
Java是属于实践性很强的一门课程,通过实例演示来配合课程知识点的讲解有助于学生理解知识点和编程思想。在线下Java教学中,通过采用课堂现场编程调试分析代码,学生可以直观地感受到代码如何从零开始演化、一步步地发展,推进形成最终的解决方案。通过现场编程,使学生的注意力始终保持集中,学习曲线保持平缓上升,授课效果将极大改善。
学生通过这种方式可以感受到一些编码风格的熏陶,对代码的调试过程也可以了解得很清楚,有助于提高学生实际解决问题的能力。当然,这种授课方式要求教师必须具备扎实的编程功底,碰到问题能够现场及时解决,而且现场编写代码比较耗费时间。
Java的线下编程思维能力训练,除了“演”,还需要结合“读”、“改”、“练”三个步骤。课前锻炼学生读代码,课程进行中锻炼学生改代码,课后复习中锻炼学生练代码。通过“读 + 演 + 改 + 练”的密切配合,进行编程思维能力的综合训练,将迅速提升学生的编程思维能力,是改善学生动手编写代码、提升编程能力的有效方式。
2.3. 线上教学中推行启发式教学
启发式教学是一种以学生为中心,注重激发学生学习兴趣和学习主动性的一种教学方式 [4] ,线上教学,师生交流相对减少,课堂氛围变弱。线上教学如何激活课堂,激发学生兴趣是教师面临的重要问题 [5] 。与线下教学不同,教师在线上教学中应该更看重学生的自主学习。为了促进学生线上学习的自主性,也为了更好地培养学生的编程思维能力,将激发学生学习兴趣和学习主动性的启发式教学方式与线上教学结合,将有效弥补线上教学的不足,更好地进行学生编程思维能力的培养 [6] 。
2.4. 案例教学与线上教学结合,讲解案例的编程思想
案例教学是一种将理论知识与实践结合在一起的教学模式。通过将学生引入真实的项目实际应用,帮助学生掌握理论及实践知识,提升教学效果。案例教学,通过案例讲解编程思维,有助于学生编程思维能力的培养。Java教学中可选的案例较多,可以围绕知识点选择典型案例。例如讲解面向对象部分知识点时可以选取银行存取款例子,讲解多线程知识点选取航空公司发售机票的例子等。将案例教学与线上教学相结合,学生可以随时随地学习案例知识点,并进行复现、实践,有利于理解其中的编程思想,提高动手能力。
2.5. 混合式教学中坚持以实际问题驱动思维训练
以解决实际问题为导向是高校进行人才培养的重要目标 [7] 。对于Java软件开发的人才培养,除了培养学生扎实的专业理论基础知识之外,更为重要的是培养学生具备较强的应用设计创新能力、实践能力和解决问题的能力。
在Java课程线上教学中,教师要加强引导,突出实用性。例如,以学生进行年度推优、班级选举等活动为契机,鼓励学生利用Java语言编写班级推优系统程序;以学校每年的网页设计大赛为契机,鼓励学生采用所学习掌握的多媒体开发技术内容,组成小组参加比赛;利用每年的中国软件杯大赛、挑战杯大赛,还有学生科技创新项目申请等机会,引导学生组成小组参与项目比赛,以此驱动教学,驱动编程思维能力训练,助力学生Java编程开发能力迅速提升。
3. 面向思维能力培养的Java教学内容设置
针对Java编程思维能力培养的目标,在Java教学内容设置中突出Java开发技术与计算机图形学、图像处理技术、多媒体动画技术、网络技术、数据库技术的结合,有针对性地进行多方面编程思维能力的培养,充实Java课程的应用环节,促进编程技能的领会和Java编程思维能力的提高。具体结合线上线下混合式教学模式,在教学内容设置上,采取以下几种手段。
3.1. 结合在线平台,线上实验内容突出算法训练
Java课程的线上实验结合了希冀网络教学平台(图1)。传统的实践环节通常在学校固定的机房完成,由于学生众多,老师无法对每个学生编写的程序进行正确性验证。实践结果多以纸质或者电子报告形式呈现。教师难以掌握学生动手实践能力的真实情况。借助于希冀网络教学平台,可以实现学生在线核验代码,检查学生代码执行的正确性。结合编程思维训练的目标,在线上实验部分可以设计较多的算法题。通过线上算法训练,提升编程思维能力。

Figure 1. Xiji Platform Java course algorithm training
图1. 希冀平台Java课程算法训练
3.2. 线下实验内容设置突出趣味性和实用性
结合具体课程授课知识点,有针对性地设计实现一些有意义、有趣味的小程序。比如在学习完图形用户界面之后,设计实现一个简单的自动考试系统,可以随机生成一些四则运算题,让学生作答,之后可以自动评分。另外,针对班级推选优秀学生,设计以Java程序开发的方式解决推优评选统计的问题。通过这些实验内容,学生会对Java语言的社会实践意义有更具体的认识,吸引他们的注意力,激发学习兴趣。以第六章图形用户界面疫情扩散仿真程序实验为例,提出仿真5000人位置,仿真疫情扩展过程并图形化展示,学生实验兴趣浓厚,取得了较好的锻炼编程思维的效果。
3.3. 课程教学内容与多媒体动画开发、图形图像、网络开发技术、数据库开发等内容结合
Java编程思维能力偏重于实用性,因此教学内容需要结合Java多媒体动画开发、图形图像、网络开发技术、数据库开发等相关内容进行编程思维训练,提升学生应用Java的技能,促进编程技能的领会和应用技能的提高,以强化实践应用的方式来推动实用型Java软件人才的培养。
3.4. 教学内容结合案例教学,将案例知识点分解到章节
案例教学是促进学生编程思维能力培养的重要手段,在教学内容中,有针对性地选择企业实际应用案例用于教学将能够有效促进学生动手能力的提升。在Java教学的不同阶段可以结合不同的案例用于教学。初学阶段可以选取银行账户管理、员工工资管理、电话簿等应用;中级阶段可以选取计算器、航空公司发售机票、交通路口模拟;高级阶段可以选取疫情扩散仿真、坦克大战游戏、网络聊天室等。教学内容融入教学案例,可以更好地促进学生编程思维能力的培养,提升学生解决实际问题的能力。
4. 结合混合式教学,促进学习方式转变
依靠传统“填鸭”的方式来让学生掌握知识的手段取得的效果越来越差,学生的学与练脱节不利于学生对理论知识的消化吸收。因此,在编程思维训练中,要想取得好的效果,还需要促进学生学习方式的转变,不再把学习当任务,变被动学习为主动学习。
以往的课程教学通常只关注线下课堂教学,而混合式教学将课程教学分为课前、课中、课下三个阶段。课前教学以线上为主,线上发布导学信息、导学资源、导学任务;课中教学以线下为主,采用讲演改练的手段,同时进行课程答疑以及发布课下任务;课下教学以线上为主,完成拓展练习。通过线上线下与课前、课中、课下的结合,培养学生的自学能力,一方面引导学生学习使用Java API文档,另一方面,引导学生利用网络平台,自主学习和解决问题。学生根据需求来学习,由被动地接受知识转变为主动地寻求知识,培养了学生自主学习、分析问题和解决问题的能力,也锻炼了编程思维能力。
5. 总结
本文结合多年来讲授Java课程的教学经验和软件开发经验,从教学方式、教学内容、学习方式转变等方面探讨了如何在Java中进行学生编程思维能力的培养,提出了面向思维能力培养的Java教学方式改革的多种措施,另外配合实践教学内容设置以及促进学习方式转变,使学生的动手开发能力产生质的飞跃,满足软件企业应用性人才的需要。通过在Java程序设计课程讲授中使用上述的教学改革,从近一些年来学生在蓝桥杯程序大赛和中国软件杯等比赛中的表现,可以看出学生Java编程思维能力有了较大的提升,促进了应用型Java软件人才的培养。
基金项目
中国石油大学(北京)重点教改项目“Java语言程序设计MOOC课程建设”;中国石油大学(北京)重点教改项目“Java语言程序设计过程性考试改革探索”。
NOTES
*第一作者。