《Java语言程序设计》教学改革探索
2018-07-12张会
张会
摘要:针对“Java语言程序设计”课程教学中存在的问题,提出了案例式教学方法、上机实验项目多样化、小组协作完成项目的教学改革方案,并进行了实施,有效地提高了学生的学习兴趣及综合编程能力。
关键词:程序设计;教学改革; Java; 案例式
中图分类号:G64 文献标识码:A 文章编号:1009-3044(2018)12-0162-02
Abstract: According to " Java programming" course teaching problems, and puts forward the scheme of the teaching reform, including case based teaching method, diversification of experimental items, team work to complete the project, and gives the implementation method, and effectively improve the students' learning interest and comprehensive ability of programming.
Key words: programming; teaching reform; Java; case method
《Java语言程序设计》课程是计算机相关专业的一门专业基础课,其主要目的是使学生能建立面向对象编程的计算机思维,初步实现以Java为核心的应用程序开发。但许多学生在学习完本门课程后,并不能按预期实现Java应用程序的开发,因此本文就《Java语言程序设计》教学中存在的问题进行分析并进行改革探讨。
1.存在的问题
1.1不注重上机实践操作
现在的Java语言程序设计课程教学多采用理论教学在多媒体教室进行,在开始几周纯理论课教学后,再在机房进行一周一次的实验教学。而实验课多是对理论教学中的单个知识点进行复习、验证,其实践教学存在一定的随意性,未能形成教学规范体系[1]。传统教学方式注重对单个知识点的把握,忽略各知识点的连贯性及系统性,因而学生缺乏对解决实际问题的锻炼,缺乏对实际问题的分析,设计,编码等工程能力的培养。
1.2培养的学生工程能力不足
现在有些高校在进行Java语言程序设计课程的教学时,提出了以项目为驱动的教学模式,培养学生工程能力,但一些高校在实施时,只是在课程结束的最后两周,给到学生一两个项目,让学生自主去完成,并没有精心设计教学项目,将项目开发流程、编码规范、软件测试等过程融入Java程序设计课程的平常教学中,也就无法使学生用所学理论知识运用于实际,并解决实际问题。
1.3教学手段单一
Java教学现在多采用传统课堂教学方法,在整个教学实施过程中,不能融入“项目教学法”,“小组教学法”,“学生示范教学法”,“项目答辩教学法”等教学方法,没有一套科学的教学实践体系,也就无法提高学生的IT职业素质,更无法实现应用型人才的培养。
2.教学改革措施和方法
2.1 课堂教学采用“案例式”教学方法
我们在教学过程中采用单元案例式教学法,讲授完一个单元知识的相关概念及语法后,设计一个案例供学生即时巩固所学内容。如讲完Java类,对象的概念及定义方法后,设计一个ATM机类对所学的类和对象知识点进行实际应用;对类的继承、抽象、接口及多态知识等点,设计一个学校师生共享打印机的案例;数组、字符串常用类知识点,设计一个在登录时常用的验证码的生成案例;对于Java输入输出流知识点设计一个新建文件,复制文件的案例。对于每一个单元的知识点设计一个贴近学生的生活的真实案例,遵循“理论够用,实践为主,以实践促理论的原则”[2],交替开展“做中学”与“学中做”的案例式教学法。
现举例说明将所授知识点应用于案例式教学的方法。如学生清楚Java类、对象的概念和定义后,用所学类的知识模拟持卡在ATM机取钱,查询余额程序的编写。通过模拟真实场景来实现类与对象的抽象,从而提高学生的学习兴趣,激发学生自主学习。在持卡在ATM机上取钱的案例中,首先抽象出Card类,Card类包含账号、余额、密码及持卡人姓名等基本属性,这些属性抽象成Card类的私有成员,再在Card类中通过get和set方法对这些属性进行封装,形成最基本的原子类。
现实中,通过ATM机取钱时,首先需要插入一张银行卡。因此在抽象ATM类时,其成员变量只需要一个Card对象,再针对Card对象抽象出查询余额,取钱等操作,这些操作都是基于密码验证正确的基础上,所以在ATM类中抽象出一个验证密码的verifyPwd()方法。由于存钱,转账等其他操作方法的实现类似于取钱方法的实现,下面代码中,略去了其他操作的方法实现。ATM类的定义如下:
import javax.swing.JOptionPane;
public class ATM {
private Card card;
public ATM(Card card){
this.card=card;
}
public boolean verifyPwd(){//验证密码
String pwdStr=JOptionPane.showInputDialog("请输入密码");
if(pwdStr.equals(card.getPassword())){
return true;
}
JOptionPane.showMessageDialog(null, "密碼错误\n");
return false;
}
public void drawMoney(){//取钱操作
if(verifyPwd()){//密码验证正确,进入下面代码实现取钱操作
String moneyStr=JOptionPane.showInputDialog("请输入取款金额:");
int money=Integer.parseInt(moneyStr);
double balance=card.getBalance();
if(money>balance) {JOptionPane.showMessageDialog(null, "余额不足");return;}
card.setBalance(balance-money);
JOptionPane.showMessageDialog(null, "请拿好你的錢!"+money);
}
}
public void queryMoney(){//查询余额
if(verifyPwd()){//密码验证正确,显示查询余额
JOptionPane.showMessageDialog(null, "余额有:"+card.getBalance());
}
}
}
本案例综合类的抽象,封装性,类的组合即在ATM类中包含Card对象等知识点,与传统教学方式相比,由于所要解决的问题贴近真实生活场景,让学生能更真实的理解类与对象的概念及实现意义,因此案例教学方法更能充分发掘学生的创造潜能,培养学生学习 Java 语言的兴趣,提高学生解决实际问题的综合能力[3]。
2.2上机实验项目多样化
我们设计的实验项目要求结合所学知识点解决日常实际问题,对实际问题进行简化和提炼,形成以解决实际问题来开展实践教学的模式[4]。把学生的学习活动置于有实际意义的问题情景中,形成解决实际问题的技能和自主学习的能力。
我们将Java语言程序设计课程的实验项目分为验证型,设计型,综合型三类实验,验证型实验主要用来验证所学知识点,对所学的基础语法及概念加以巩固。但为了提高学生的编程能力及学生的编程兴趣,验证型与设计型实验交替穿插,并在Java课程结束后再设计一个综合型实验对整个课程内容进行涵盖,形成上机实践教学体系结构。其中设计型和综合型实验的内容来源于工程实际,反映工程的实际问题,令实验更有趣味,更具现实意义[5],实验项目多样化能有效调动学生自主学习的积极性,并提高学生分析和解决问题的能力。我们上机实验项目设计如表1所示。
2.3 小组协作完成项目
在软件公司上,软件开发都是以项目小组为单位进行,在整个开发的过程中包括需求分析,软件设计,编码、测试都要求小组成员具备较强的团队协作精神及良好的沟通能力。为培养学生的团队精神,在实验过程中,除了验证型实验项目以个人为单位进行外,设计型和综合型实验均以3-4人为一个小组进行协作完成,每个小组由一名组长进行管理,组长负责对项目进行分工,当然在分工时,小组长要使每个组员所分到的功能模块包含本次实验课要求练习的实验内容,从而达到每名学生实践的目的。小组成员通过对实验需求进行交流、讨论并最终确定项目功能,再讨论并确定采用的设计模式,最后分工进行编码及测试。为检验项目完成效果,在项目完成后小组各成员需要演示、答辩所实现的项目功能,并由老师评分。整个实验过程中各小组采用软件开发的步骤进行,此过程既提高了学生的工程能力,又培养了学生的沟通能力,团队协作能力,为学生进行入软件开发行业打下基础。
2.4全面改革课程考核,强化素质和能力
我们对学生成绩评定采用多样化的方式,包括客观评定和主观评定。客观评定通过期末上机考试成绩来客观评定,其中期末考试包括理论选择题和操作题。主观评定包括教师评定、项目小组成员互评,学生自评。教师对每个学生通过课堂表现、学习态度、案例完成情况、出勤记录、项目答辩等方面进行评定。项目小组成员互评采用小组中各成员对被评学生进行评价,包括该名学生对项目实现的贡献情况、任务模块完成情况、团队合作情况等方面进行不记名评分,再计算出被评学生的平均成绩。学生自评通过学生对Java学习的自我情况,完成Java项目功能情况及自我能力进行自我评价打分。学生成绩计算比例为:期末上机考试客观成绩占总评成绩50%,教师评分占总成绩的30%,小组成员互评成绩占总评成绩的10%,个人评分占总评成绩的10%。
3 课程改革成效分析
(1)采用案例教学方法、上机实验项目多样化、小组协作完成项目的教学实践模式既丰富了教学内容,提高了学生学习的主动性和创新性,又培养了学生工程能力及团队协作精神。
(2)所授课班级学生的期末考试成绩提高了10%,参加Java竞赛提高了20%。2016年所授课班级学生参加“蓝桥杯”大赛的Java组有3名学生获得四川省一等奖及国家级二等奖,10名学生分别获得省级二等奖三等奖及优秀奖。
(3)所授课毕业学生近两年从事Java相关工作由25%提高到70%,用人单位对我院计算机相关专业毕业生相当满意并与学院达成Java方向学生长期需求意向。
4 结束语
实践证明,对《Java语言程序设计》课程教学进行的一系列改革后,提高了学生学习兴趣,由被动学习变为主动学习,培养了学生分析问题及解决问题的工程实践能力,在毕业后能快速适应企业项目开发。
参考文献:
[1]蒋辉,孙林娟,王国振.“Java程序设计”实践教学体系研究[J].教育技术,2017, 16(7):44-46.
[2]刘艳梅.基于“实践和创新”能力培养的Java系列课程群教学研究与改革[J] .计算机教育,2015(14):35-40.
[3]李劲华.通识教育中Java程序设计课程的教学研究与实践[J].计算机教育,2008( 20).
[4]姚明,彭志平,李启锐等.Java课内实践教学改革[J].计算机教育2016(6):151-154.
[5]邹本国.提高学生工程实践能力[J].河北师范大学学报:教育科学版,2008(12):116-118.