张思 向华
摘 要: 游戏作为一种功能强大的教学工具,在军事训练以及企业培训方面都已经取得了显著成效。针对Java编程课程教学中遇到的一些实际问题,探讨了游戏驱动的教学模式,对于不同专业,不同基础的学生使用不同的游戏工具激发其自主学习的兴趣,最终实现了学生计算思维能力的培养和编程技巧的掌握。
关键词: Java编程; 游戏驱动模式; 自主学习; 计算思维
中图分类号:G642 文献标志码:A 文章编号:1006-8228(2015)01-72-03
Research on teaching reform of Java program design course based on game-driven mode
Zhang Si, Xiang Hua
(Department of Mathematics and Computer Science, Jianghan University, Wuhan, Hubei 430056, China)
Abstract: Games, as powerful teaching tools, have achieved remark able result sinmilitary training and corporate training. Aiming at some practical problems in Java programming course teaching, how to inspire students who has different majors and basic knowledgeby using the game-driven teaching mode are discussed to teach students to understand computational thinking and master the programming skills.
Key words: Java programming; game-driven mode; self learning; computational thinking
0 引言
世界上第一个计算机游戏是由英国剑桥大学A.S. Douglas博士于1952年开发的,他的研究方向是人机交互。计算机游戏随后发展涉及计算机科学研究的许多领域。例如:模拟仿真,人工智能,图形图像,嵌入式开发,人机交互,网络通信以及云计算等。杜克大学人体仿真和病人安全中心主任 Jeffrey Taekman指出:“游戏和虚拟环境是教育的未来。”经常可以看到关于学生废寝忘食地沉迷于游戏世界的报道。学生对于游戏是没有免疫力的,古语有云:“水能载舟,亦能覆舟。”如果教师在教学中能利用游戏的这种吸引力,现有的很多程序设计类课程课堂教学中存在的问题将迎刃而解。
1 现状及问题
1.1 学生水平参差不齐,学习兴趣不高
Java程序设计课程在大学里开设一般作为选修课。课程面向不同专业的学生,这些学生的计算机基础不同,数学底子,抽象思维以及逻辑分析能力也各不相同,关键的是学生的学习动机也各不相同。对于以后不从事程序设计相关工作的学生,其学习兴趣自然不会高。例如非计算机专业学生一般都是以通过等级考试,拿学分为目的。以通过考试为目标的学生,机械式地学习程序语法,当然会觉得课程教学内容枯燥。有相当一部分学生认为大学专业课是重点,程序设计课与专业不相关,学不学都可以。国家教育部对高等学校非计算机专业学生的培养目标是有程序阅读基础,有理解程序的能力,完成相关课程后学生应该能够将程序设计方法应用到自己相关的领域中去。
1.2 学生多,教师少,互动效果差
Java程序设计课程,在大学里一般采用大班授课形式,而从事非计算机专业公共课教学的教师人数很少。以笔者所在学校(江汉大学)为例,选修课人数一般在40人至80人之间,人数多的班达到110人以上,而负责公共课教学任务的计算中心教师只有15人。课程教学一般采取多媒体上机教学。教师通过教学平台软件控制学生机,演示教学内容;学生通过提问的方式与教师交流互动。实验教学一般是学生在机房独立完成实验计划上统一的项目方案,实验课没有实验员,只有一名教师。对于这么悬殊的师生比例,很难做到因材施教。
采用传统课程讲授与实验上机辅导相结合的方式,一个班的学生多时,授课教师无法保证每个学生都能及时消化课堂上的知识。有些比较内向的学生即使不懂也不好意思向教师提问,长期积累,这些学生会越掉越远,出现厌学情绪。上课时间学生心不在焉,看手机,微信聊天,玩扫雷,玩纸牌游戏等情况屡见不鲜。
1.3 教学内容多实验课时少,与实际应用脱节
Java程序设计课程基础内容是学习简单数学算法,数据类型,程序结构,函数方法调用,输入输出处理等;高级内容涵盖面向对象设计,GUI界面设计,网络功能开发,多线程等内容。以江汉大学为例:Java程序设计课程只有48个学时,其中实验为16个学时。教师在规定学时内要让学生掌握以上的全部知识点,每节课的信息量很大。教师上课时只能以讲授理论知识为主而无暇顾及具体实践。除计算机专业学生外,大多数学生都不知道学完以后能做什么,很迷茫,找不到方向。教师单纯讲这些课程内容难免会让学生觉得枯燥无味,同时学生也只能管中窥豹,无法感受程序设计开发的整体过程。学生所学理论知识无法贯穿于实践,更加无法在实际中应用。
如果说算法设计的是计算机科学的内家功夫,那么程序设计语言就是外家功夫。程序设计这门外家功夫讲究的是无招胜有招,而填鸭式的学习语法,无法在真实项目中做到见招拆招。只有学生具备了计算思维[1],那么无论使用何种编程语言,都将轻松入门。
2 游戏教学法
游戏教学法意味着打破传统按章节知识点授课的方式,从实际游戏项目出发,在游戏设计开发的过程中,让学生从亲身经历的案例中分析原理,从实际现象中看出本质,最后将自己抽象领悟出来的概念与通书本上的理论知识相对应。图1是游戏教学模式示意图。
[综合运用][基础功能][创意功能][理论][实践] [课程
知识点] [专业][生活]
图1 游戏教学模式
通过游戏驱动学习[2],有很多优点。首先,游戏很容易抓住学生的注意力,引起学生的兴趣,激发学生的学习动机。其次,游戏世界里GameOver并不代表要受到惩罚,学生可以StartOver,把失败当成一次学习的机会。最后,游戏让学习者自己发现探索规律,而不是有老师阐述告知结果。
对于非计算机专业的学生,通过学习程序设计课程,能够掌握按照计算机方式分析和解决问题的能力,这是基本要求,而学会理性的、合乎逻辑的处事方式才是最终理想效果。游戏教学法不仅让学生学到书本上有的知识,还可以从自己的专业出发,结合实际生活中的一些奇思妙想,在原有经典游戏的基础上开发出一些有创意的功能。
3 实施方法
3.1 课程组织
在传统的教室上课模式基础上改进为“大学计算机公共课全机房教学模式[3]”。教学中,把授课同上机相结合,统一机房教学,通过经典游戏案例教学方式,精讲多练,将学生吸引到教学活动中来,使学生成为课堂教学主体。在多媒体机房,一人一机,即讲即练。
3.2 教学安排
从传统的按知识结构体系的教学模式转变成以游戏项目为中心的教学模式是切实可行的教学方案[4]。在课程教学实践进程中,以游戏案例为导向,以教师的演示和讲解为辅助,学生为主体合作、讨论,教师对课程教学内容进行组织优化,构建培养以自主学习[5]为核心的课程知识体系,选择典型的游戏案例作为教学内容,形成切实可行的游戏开发的教学方案。例如:Java程序设计课程重点难点一般包括:常用系统类的使用,数组的运用,OOP设计及实现,Java多线程,Java图形用户界面设计等。以下用一个游戏为例,阐述如何将游戏从小做大,将知识点隐形地传达给学生。
整个游戏项目开发周期中有三个关键版本:首先是CLI文字显示游戏版本,其次是GUI界面显示游戏版本,最后是基于TCP/IP协议的网络游戏版本。教师可以根据学生掌握情况调节项目开发难度。图2是整个游戏的UML设计图。
图2 游戏设计UML图
在第一个版本中,主要是对学生面向对象编程技能的锻炼。知识点涵盖Java泛型数据类型,函数方法的使用,类的定义,对数据的抽象以及封装,对象的使用,一维和二维数组的使用,文件数据读取生成对象,对象序列化输出以保存游戏状态,游戏事件处理机制,使用继承和多态机制实现地形,以及卡牌的多样性。
图3 游戏GUI界面截图
第二个版本是让学生练习如何使用Java自带的Swing,以及AWT库设计和实现GUI界面。主要工作是设计并实现组成用户界面的各个组件,通过布局管理器合理排布管理它们在容器中的位置。针对各个组件产生的事件编程,处理并响应不同的事件。通过使用双缓冲原理,实现游戏动画的流程效果。图3为演示游戏的GUI界面截图。
第三个版本是在前面单机游戏基础上考察学生对于网络基础知识的理解和掌握情况。其中涉及网络应用的C/S结构,IP地址和端口的概念理解,TCP协议的使用和Java编程实现方式。
3.3 实验教学
游戏有不同的类型题材,学生也有不同的专业背景。对于非计算机专业的学生而言,程序设计是一个全新的领域,计算思维是一种新的思维方式。当人初次接触一个新事物时,抵触和恐惧往往大于好奇和兴奋。
对非计算机专业学生,需要采用投其所好的教学策略。首先从他们熟悉的方向着手,再慢慢地使其解除抵触心理,最后引导其学习并掌握新知识。表1中列举了一些案例。
表1 学生专业与游戏类型对应表
[学生专业\&游戏类型\&例子\&文史专业\&文字类游戏\&“王”字加一笔,变成哪些字\&艺术专业\&图形或音乐类游戏\&“你画我猜”,“听曲识歌”\&外语专业\&单词类游戏\&“Crossword” 线索填单词\&理工专业\&复写经典类型\&“俄罗斯方块”,“扫雷”\&]
学生能力有差异,为了避免一刀切的现象,在实施教学方案时,教师可以根据学生情况调整难度系数。根据学生能力的不同,将游戏划分成不同模块分步完成。
对于基础好的学生,可以直接提出需求,具体实现上留空间让其创造发挥。下面以俄罗斯方块游戏为例:复刻经典游戏-俄罗斯方块,要求使用面向对象程序设计思想,至少用三个以上的类实现功能,为游戏添加一个有趣的新功能。
对于基础一般的学生,可以在给出需求的同时,提供一定的接口,将功能细化,把大任务分解成多个小任务。例如:在素材中有Tetris.java,Shape.java,Board.java三个文件,独立实现源代码中留空的方法函数。
对于基础薄弱的学生,可以提供一个主体功能缺失,辅助功能完备的程序模板,让其实现主要功能函数方法。例如:编译运行素材中的俄罗斯方块游戏,游戏中消除满行方块功能未实现,请在代码指定函数方法处实现该的功能。
3.4 考核评级
平时成绩和期末考试成绩占比分别为40%和60%。平时成绩中又分为两块内容:课堂活跃度和实验完成度,如图4所示。期末考试实行教考分离,计算机上机考试,机器阅卷的形式。
图4 学生成绩考核评级占比
4 结束语
游戏教学模式改变了知识传授方式,通过解决实际问题,把相对独立的知识点融会贯通,潜移默化地培养学生计算思维。游戏教学模式对提升程序设计类课程实用性,培养学生实际应用能力也起到了一定效果。尽管如此,这种教学模式相对于传统教学模式来说有其复杂性,如大大增加了教师的工作量;需要教师投入更大的精力和时间,更加全面,合理地制定教学策略。仅靠一两门课就要求学会不同思维模式之间的转换是不切实际的,下一步游戏教学研究重心会放在如何通过移动平台游戏整合零碎学习时间,大幅提升学生在课堂之外的自主学习时间。
参考文献:
[1] 臧劲松.培养学生计算思维的程序设计课程教学[J].计算机教育,
2012.2:78-80
[2] 张渝江.游戏驱动学习[J].中国信息技术教育,2013.6:102-105
[3] 廖恩阳,刘征.大学计算机公共课全机房教学模式探索[J]. 计算机教
育,2014.18:43-45
[4] 宋瑾钰,愈成海,孙树森.基于项目引导-任务驱动的Java手机游戏开
发教学模式研究[J].中国校外教育,2012.3:162
[5] 刘砚秋,何灵敏,周杭霞,陆慧娟.基于自主学习的大学计算机基础教
学方法[J].计算机教育,2012.3:80-83