情境+项目驱动教学法在高校Java课程中的应用
2022-07-02郭琳琳冯双丽
郭琳琳 冯双丽
摘要:高校Java课程的目标是培养学生的面向对象程序设计能力。由于计算机类课程具有知识点多、内容抽象等特征,采用传统教学模式将不利于激发学生学习编程的兴趣,从而导致学生实践能力低、解决问题能力低等问题。该文从实际出发,通过分析教学过程中存在的问题,提出创设情境结合项目驱动教学法。通过实验教学,学生编程兴趣提高,能更好地理解面向对象编程思维。
关键词: 教学法; 编程思维; 情境; 项目驱动
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2022)15-0150-03
1 Java课程地位和教学目标
Java语言是一种面向对象的程序设计语言,因其具有跨平台性、面向对象、安全性高等特点,使得Java语言是目前世界主流的编程语言。根据TIOBE编程语言排行榜,Java近几年市场占有率始终位列前茅。
Java程序设计课程是高校计算机专业的核心课,尤其对于培养应用型人才的本科院校来说,激发学生的编程兴趣、培养学生的编程思维至关重要。该课程旨在培养学生面向对象的程序设计能力,用面向对象的思维去解决问题。因此,课程不再是一门纯粹的语言类课程,而要承担转变学生思维方式的任务;同时由于JDK涵盖丰富的类库,涉及图形界面、网络通信、数据库和多线程编程,学生学习起来难度较大[1]。由于面向对象是一种抽象思维,而学生初识编程,思维还停留在具象阶段,如何引导学生的思维模式由具象过渡到抽象,培养学生程序设计和编程能力,是Java教学中重点和难点。如何开展有效教学、采用何种教学方式成为Java课程教学中重要的研究环节。
2 高校Java课程教学现状分析
2.1 分析学生
高校Java程序设计课程一般开设在第二学期,先修课程是计算机基础和程序设计导论。学生经过第一学期的学习,具备了计算机基础和程序设计理论知识,对操作系统、应用程序的概念基本了解,为后面的编程学习奠定了基础。此时学生的学习状态开始有了分类,一部分学生对基础知识掌握比较牢固,对编程的学习兴趣浓厚,会主动扩展自己的知识面,认知能力较强;一部分学生的基础还很薄弱,并且对编程提不起兴趣,课堂难以集中注意力;还有很大一部分学生的基础尚可,但有薄弱环节,接受和应用新知识需要花费一段时间。
2.2 分析教学内容
计算机语言类课程的内容安排是由点到面、由易到难、由具象到抽象,Java课程也不例外,内容从变量运算符、流程控制语句到面向对象程序设计,再发展到数据库、网络编程,知识点衔接紧密,理论庞杂,非常考验学生的逻辑思维。课程还包含上机操作,要求学生在获得理论知识的同时掌握实际操作技能。在实际授课中,复杂的概念和众多术语使学生难以及时“消化”,也影响了上机实操的效果,导致学生的学习热情减退。
2.3 分析教学模式
计算机与其他学科相比,知识更新速度快,若计算机教学只注重知识的传授,不注重学生学习能力和创造能力的培养,会导致学生灵活运用知识的能力降低。传统教学模式只重视书本理论知识的传授,以教师为中心,却忽略了学生的独立动手能力、综合分析能力和解决问题能力的培养[2],这种教育模式下学生的思维、实践能力和创新能力必将受到限制,不符合21世纪社会发展对人才的要求。反思传统教学模式,教师应把重点应从教师的“教”转向学生的“学”,即以学生为认知主体,充分调动学生的主动性和能动性,主动建立知识和能力结构的教学模式上去[3]。
随着教育的发展,当代教学的新观念更加重视学生和教学过程,项目教学法应运而生,是一种突破传统填鸭式教学方法的新教育理念,其核心是建立“实践共同体”,并在此基础上的共同学习。美国教育家Kilpatrick把项目教学分成四个阶段:构思(purposing)、计划(planning)、实施(executing)、评判(judging)[4]。项目教学法虽是对传统教学方法的改善,但是由于Java课程的特殊性,如果只采用单一的教学模式,用小組把学生圈起来,而不对教学过程加以管理,表面看起来学生是在一起共同学习,实际上由于学习的目的性不明确,加上Java课程本身的抽象性,会导致学生越来越疲惫,学习的主动性逐渐降低。所以单一的教学模式还无法达到人才培养的要求,应该综合多种教学方法,形成合适的教学模式。基于以上原因,文章从教学实践出发,提出创设情境法与项目驱动法相结合的教学模式,通过创设情境,以项目为线索,使学生自己提出问题并解决,最终通过项目培养学生解决问题的能力。
3 课程实施
3.1 创设情境
情境是教师在教学中有目的地引入或创设具有一定情绪色彩、以形象为主题的生动具体的场景,以引起学生一定的态度体验,激发学生的情感,从而帮助学生理解教材[5]。相对于传统教学方法,情境的创设可以使抽象的知识具体化、形象化,更有助于学生感性知识的形成。
在Java课程教学初期,对学生实施分组,3-4人为一组,模拟企业场景中的项目组进行管理,每组设置一名组长,对应企业项目组中的项目负责人,这些组称为PST(Project Simulated Team),即模拟项目组。课程初期是教授学生Java基础知识,教师在该阶段重点监控每个PST的任务完成情况,根据PST负责人反馈组内成员的学习(工作)评估表,有的放矢开展教学活动。经过一段磨合期,组员间合作的默契程度有所提高。这些为下一步融合项目驱动式教学进行了铺垫。
3.2 项目提出
学生在模拟项目组积累一定的项目经验后,在学习类和对象这一知识点时,为了使抽象的概念具体化,帮助学生理解面向对象编程思想,掌握面向对象编程方法,教师在教授基本知识点的同时,结合企业实际开发案例,向每组提出项目要求。教师先创设一个情境:客户要求PST项目组实现电子商城用户的登录以及订单管理功能,知识点及功能梳理见表1:
项目需求如下:
(1)凡新老用户(任何等级)下单立享98折;
(2)在活动1基础上,等级为2级以上(含2级)用户购物满200减20,满500减50,满1000减100(只享有一次满减);
(3)导入登录验证模块和生成订单号模块(至少这两个模块),判断用户登录成功后,返回给用户订单号和实际支付价格。
3.3 项目分解
3.3.1知识点分解
项目知识点涵盖以下几个章节,每个章节都安排了单独的课时进行学习。
(1)数据类型与变量
引导学生分析在项目中需要创建多少变量,每个变量用哪种数据类型修饰。这是完成项目最基本的问题,考察学生对基础知识的掌握。
(2)流程控制语句
向学生讲解项目需求分析,不同级别的用户享受不同的活动,订单的实际支付价格有所影响,要实现这个功能,就要用到判断,这时候自然而然引出流程控制语句,并带领学生复习该知识点。
(3)类和对象
学生经过开始一段时间的反复练习掌握了前两个知识点,而类和对象属于抽象的新知识,所以教师要利用项目让学生用实践巩固理论,加深对新知识的理解,学生要根据教师要求创建类和对象、完成对象初始化操作。
3.3.2功能分解
实际教学中,学生面对一个项目时往往找不到切入点,因此教师要发挥主导作用,循循善诱。教师可以将项目按照以下功能分解,逐步启发学生思维。
(1)用户登录
用户输入用户名和密码,若和系统已有账户信息一致则提示用户“登录成功”,否则提示用户“输入不正确”。实现此功能首先需要从键盘获取用戶的输入信息,引导学生回忆Java语言如何实现键盘获取输入这一功能;接着教师提出问题:在得到用户名和密码后,怎么判断用户能否登录成功?让学生先用分支语句列出判断登录的框架,然后再往里填充具体的代码。
(2)创建订单号
用户成功登录后,接下来是根据规则创建订单号。这一环节由于学生缺少实际项目经验,对电子商城的一系列业务感到陌生,他们对订单号的概念都会感到迷茫,更别说去编程创建。这时教师可以寻找突破口:信息化的社会环境下,每人都有网上购物的经历。透过学生的实际购物过程抓住创建订单号的本质,给学生讲解如何用代码实现这一功能。这样做的好处是学生从实际生活中得到启发,应用到课堂中,并为以后实际项目开发积攒了经验。
(3)计算订单实际价格
该功能的逻辑稍微复杂一些,锻炼学生对运算符的应用以及逻辑思维的构建。前两项功能完成后,学生学习编程的信心和兴趣大大增加。这个时候教师趁热打铁,让PST内部讨论后给出计算过程和结果,教师根据反馈指明问题,认真做出总结,然后让学生编程实现计算过程。一通流程下来,学生不仅编写了代码,更重要的是其逻辑思维能力得到了提高。
3.4 项目实现
这里以实现用户信息的存储为例。为了让学生接受新知识有一个由浅入深的过程,教师在分析项目时可以引导学生由解决方案一向解决方案二过渡:
解决方案一:利用对象数组。将账户信息存储在对象数组,通过静态加载。
private static User[] loginUser = new User[4];
static {
loginUser[0] = new User("千千阙歌","qianqian123","101",4,5000.0);
loginUser[1] = new User("忘情水","wangwang666","102",3,251.0);
loginUser[2] = new User("千年等一回","snake.***","103",2,800.0);
loginUser[3] = new User("青花瓷","JayChou2021","104",1,0.0);
}
解决方案二:
账户信息存储在数据库,在项目中添加数据库连接配置。以mysql数据库为例,在配置文件中添加数据库。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/shop?useSSL=true&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
jdbc.initialSize=5
4 总结
这种创设情境与项目驱动结合的教学方式能较大程度激发学生的学习兴趣,通过组建项目团队提升学生的参与感,通过创设情境激发学生的探究欲望,同时锻炼其动手实践和解决问题的能力,较好地实现了教师为主导、学生为主体、理论与实践结合的课堂教学的优化,教学效果得到明显改善。另外,根据项目驱动法的教学原则,学生始终是学习的主体,是自己学习的主人,是自主学习[6]。所以在实际教学中,教师要将学生现有的知识水平和实际技能作为参考,根据学生特点合理安排项目内容,一方面确保程度一般的学生在打实基础的前提下提高解决问题的能力,另一方面引导程度好的学生不断扩展知识面,提高自身理论知识。
参考文献:
[1] 曹文平,宁彬.任务驱动+过程反馈的Java教学方法研究[J].教育教学论坛,2021(4):165-168.
[2] 秦昊.改革传统高校教育模式 培养具有现代创新意识的人才[J].科教文汇,2007(10S):44.
[3] 张晶.关于“计算机基础”教学改革的思考[A].王勋铭.改革·探索·创新·发展—三亚学院教学改革研究论文集[C].上海:复旦大学出版社,2012.185-187.
[4] 张超.高校计算机基础教育研究[M].青岛:中国海洋大学出版社,2019.
[5] 唐美艺.情境教学在初中生物课堂的运用[J].现代教育科学(中学教师),2013(3):126,148.
[6] 闫丽新.“项目教学法”在高职计算机课程中的应用[D].石家庄:河北师范大学,2013.
【通联编辑:王力】