应用型本科“Java程序设计”课程的教学改革

2011-12-07 02:50林叶郁林亚明
黑龙江工业学院学报(综合版) 2011年11期
关键词:Java程序设计程序设计编程

林叶郁 林亚明

应用型本科“Java程序设计”课程的教学改革

林叶郁 林亚明

Java程序设计是Java系列课程的基础,其教学效果的好坏直接决定后续课程的教学质量。针对Java知识点众多、学生编程能力和学习主动性偏薄弱等问题,以培养符合企业需求的应用型人才为目标,从合理设置教学内容、改进教学方式、改革考核方式等方面进行了探讨,以期起到抛砖引玉的作用。

教学内容;教学方式;考核方式

随着信息产业的快速发展,社会对计算机人才的需求日益增加。据IDC统计,在所有软件开发类人才的需求中,对Java工程师的需求量最大。然而这并没有让计算机及软件专业毕业生的就业压力得到缓解,其根本原因是传统教学模式的滞后导致了毕业生实际的动手实践能力偏薄弱,与企业的实际需要存在差距。

Java程序设计作为Java系列课程的基础课,其教学效果将直接决定后续课程的教学质量。如何能在有限的课堂上最大化地激发学生对Java编程的学习兴趣,提高教学质量,从而为后续Java高级课程的教学打下良好的入门基础,是Java教学工作者急需研究和解决的问题。作者根据近几年的教学实践,从合理设置教学内容、改进教学方式、改革考核方式等方面对Java程序设计课程的教学进行了探讨。

一 课程教学内容与学时设置

Java程序设计课作为Java系列课程的基础课,根据一般学校教学计划,多在大三开设,作为C或C++语言之后的第二门编程语言。该课程的主要教学目标为:(1)实现学生从C语言面向过程编程思想向主流面向对象编程(OOP)思想的转变;(2)让学生掌握Java编程技能,为JEE或JME高层次软件开发打下基础。为达到这一目的,首先需要合理安排教学内容。笔者将Java程序设计课程知识点分为三大类:Java基础、JSE平台开发和Java拓展。表1给出三大类知识点及其所需课时安排建议。

表1 Java程序设计课程设置

目前不少教师采用教授C语言的形式来进行Java教学,大多精力花在Java语法学习中,不太合理。应当认清课程的目标是培养学生面向对象思想和实际编程能力,进而激发学习Java更深层次的应用的学习主动性。本课程课时安排应以Java基础知识点授课课时为底线。如果该专业学生还有JSP互联网软件开发、JEE与中间件之类的后续课程,则至少要介绍Java基础和JSE平台开发知识点;如果学生是主修Java方向的,则最好课时安排能够将Java基础、JSE平台开发和Java拓展的知识点介绍完。当然在课时安排上,还可以根据学生的学习能力情况做细部的微调。

大学的程序类课程是系列化的教学,学生在接触Java之前大已经学过其他语言类课程,如C或C++语言。这些课程的基本风格、语法、程序逻辑是类似的,因此在Java教学中,对于这些基本的内容不必详细讲解,通过简单的回顾即可,适合把大量的时间和资源用于更高级、更专业内容的学习上,这样学生才能更快地提高自身素质,加强编程能力。

二 教学方式的改进

1.以项目作为教学案例。

传统的Java程序设计课程教学中,多数教师一般严格按照教学大纲和教材组织教学,虽然能系统完整地讲解各章节的知识点,但由于内容比较枯燥,且学生的学习只限于书本上的练习,没有参与过完整的项目开发,不能把所学的知识贯穿在一起,不能建立起整体的编程思想,达不到软件业对软件人才的要求。因此,我们在教学过程中必须改变传统的以“知识为本位”的教学目标,代之以能培养学生的主观能动性和创造力为目标的教学方法。

基于项目的教学法是以建构主义理论的指导,以项目为支撑的一种新型教学方式,[1]目前已广泛应用于计算机培训机构的教学。作者在“Java程序设计”课程教学实践中,结合教学内容和教学对象的实际情况,选取实用趣味、难易适当的开源项目进行教学,极大地提高了学生的学习积极性和主动性。例如,在介绍SWING图形界面编程时,以俄罗斯方块游戏作为项目案例。由于大部分学生都对该游戏熟悉,因此项目需求可以很快带过,直接进入设计环节。按照软件工程项目设计的流程,首先分析系统的用例场景,接着通过讨论概要设计,自然引出swing绘图API和键盘事件响应API的介绍。在深入细节之前,通过编写一个捕获用户键盘输入,并显示在窗口标签上的简单例子,让学生对键盘捕获处理有一个感性认识,再通过编写一个简单的在窗口上画彩色矩形图形的例子,让学生了解画图API的使用技巧。这样复杂的任务分解为多个小的任务,每个任务关注一个知识点,学生循序渐进地掌握每个任务的编程知识和技巧。接口部分介绍完后,接下来通过实际的用例场景描述,让学生思考在实现俄罗斯方块游戏过程中需要用到的算法和数据结构设计。比如在介绍俄罗斯方块游戏时,方块的类型和外观该如何用数据结构表达,可以考虑二维数组或者稀疏矩阵,每种数据结构在Java语言中该如何使用相关的API表示,结合算法,讨论每种数据结构在算法实现过程中带来的优缺点。这种讨论实际上让学生真正体会设计的过程,让学生了解设计的过程而不是直接摆出代码结果,这样对学生的代码设计和编写能力有极大的提高。

值得注意的是,在实施项目教学时,项目的选取至关重要。须以教学内容为依据,可大可小,既要包含基本的教学知识点,又能调动学生解决问题的积极性。作为教师对知识点进行讲解的实例,所选取的项目必须简单和典型,便于学生对知识的迁移;另外,一个项目要有一定的难度,可促使学生学习和运用新的知识、技能,解决过去从未遇到过的实际问题。

2.控制学习难度阶梯曲线,实现分层次教学。

在学生学习过程中存在的一个问题是学生能够编写各种小规模程序,但是碰到大项目的问题,就无从下手。作者认为,由于网络上大项目的开发资料都是静态的,没有展现软件开发的动态演进的过程,使得学生缺少较大型软件项目开发的实践体会。因此,要在教学过程中有效地控制学习难度阶梯曲线,实现分层次教学。在Java程序设计课程后期,课外布置学生阅读影院售票系统的订票功能的用例规格表、UML类图和代码实现。由于订票功能业务逻辑相对简单,用例规格表和UML类图都很直观,学生可以容易地体会到需求演化为设计最后到代码实现的一个过程,接下来再提供给学生影片信息管理功能的用例规格表和UML类图,不提供代码实现,要求学生根据这些文档给其具体的代码实现。由于前面有了订票功能的演绎展现,学生就会较容易地实现影片信息管理的功能要求。最后再将影院售票系统的所有用例规格表提供给学生,让他们根据自己的能力去实现功能,完成得越多,成绩越高,在这个开发过程中,学生可以逐步掌握软件项目的开发技巧。

3.任务驱动和小组协作学习相结合的实验教学方式。

任务驱动教学法是一种能够很好地应用于以实验性、实践性与操作性较强的教学内容的教学方法。协作学习不仅能提高学生学习的主动性和对学习的自我控制,也促进了学生间良好的人际合作关系,促进了学生心理品质的发展和社会技能的进步。把任务驱动和小组协作学习相结合作为实验教学方式,不仅提高了学生的自主学习能力,更有利于创新能力和动手实践能力的培养。[2]当然,在这种实验教学方式中,要注意以下几点。

(1)教学任务的设计。教师可以选择一些具有真实问题情境的项目(根据教学情况和学生实际情况进行一定的修改简缩)作为学生上机的大任务。同时,根据实验进度安排,可以将一个大任务分解成几个小任务,让学生分阶段进行。学生小组定期要上交任务报告。

(2)及时的辅导。在超出学生目前知识结构的地方,教师要加以实际指导,或给予解决思路和参考书目,辅助学生解决难题。

(3)要完善实验教学评价机制。为了增强小组协作学习的意识,教师可以适当引进一些竞争激励机制,完善评价机制,避免部分小组成员偷懒的情况发生。评价的形式可以是组内自评与组外互评相结合。组内自评中包括每个小组成员的个人评价,如对其在小组协作任务活动中的表现、所分配任务的完成情况、对小组的贡献度等方面的评分,也包括整个小组的自评。小组评价的内容包括小组学习实施计划、组员参与情况、小组实践过程、实践效果(Java小软件形式)等方面。

三 考核方式的改革

对于Java程序设计课程而言,纯粹笔试或单一的大作业考核都有其片面性。若只采取笔试的形式,只能考核学生对编程语言细节的熟悉程度,而对于程序设计的思路,开发工具的掌握以及开发过程的调试等重要方面却很难考查到。而只用开放实验或课程设计的方式进行考试有可能导致部分学生抄袭现成的代码而不求甚解或分工不均等。因此,采用“笔试+大作业”的形式是一种较好的考试模式,既能考核学生的理论掌握水平,又能考核学生的实际编程能力。在本门课程的教学中,作者采用“笔试60%+大作业40%”的考试模式。

四 总结

作者在2008级计算机科学与技术专业的Java程序设计课程中实施了教学改革,并将之与未实施教改的2007级学生Java程序设计课程的教学效果进行了粗略的比较分析。采用课程教学改革后,学生在学习兴趣、技术的掌握、软件开发能力的提升方面都有明显改善。在实施教改前,2007级学生中大概只有三分之一会在课堂上认真听讲,个别学生会做听课笔记,上机任务很少会提前完成。而实行教改的2008级,课堂上超过半数的学生会认真听讲,达到三分之一的学生能提前完成上机任务。从学生的期末平均成绩上看,也从2007级的71.5分提高到了2008级的83分。从软件开发能力上看,2007级学生学完这门课程后主要能开发一些功能简单的小规模程序,而在2008级的学生中,呈现出一批主动要求参加Java系列的大学生创新项目以及参与企业需求的项目的同学,为后续做出有实用价值的软件产品奠基了坚实的基础。

[1]蒋志勇,张文.项目教学法在《微机系统实现与维护》课程教学中的应用探索[J].桂林航天工业高等专科学校学报,2007(3):95-97.

[2]刘文杰,吴婷婷,郑玉.基于任务驱动的小组协作Java教学模式研究[J].计算机教育,2010(20):55-61.

[3]郑阿奇.Java实用教程(第2版)[M].电子工业出版社,2009.

[4]赵呈领,贾永娜,等.基于任务驱动教学法的现代教育技术实验课教学设计研究[J].现代教育技术,2011(1):142-146.

[5]邵奇峰,车战斌.Java课程教学方法探讨[J].计算机教育,2008(12):50-52.

On Teaching Reform of Java Programming Course

Lin Yeyu Lin Yaming

As the foundation of Java series courses,the teaching quality of“Java programming”would directly determine the quality of follow - up courses.Because of the great amounts of knowledge to learn for Java and the students'weak programming skills and their learning motivation,a demand - driven teaching reform is needed ,which includes teaching content,teaching methods and assessment methods,etc.

teaching content;teaching methods;assessment methods

G642.0

A

1672-6758(2011)11-0028-3

林叶郁,硕士,讲师,闽江学院,福建·福州。邮政编码:350108

林亚明,硕士,讲师,闽江学院,福建·福州。邮政编码:350108

闽江学院教育教学改革研究立项(0914B);闽江学院青年育苗项目(YKY 07005)

Class No.:G642.0Document Mark:A

(责任编辑:蔡雪岚)

猜你喜欢
Java程序设计程序设计编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
《Java程序设计》课程网站的设计与实现
Java程序设计基础课实践教学中的分层教学模式研究
高职高专院校C语言程序设计教学改革探索
基于实训项目的Java程序设计实验教学模式改革与实践