当前位置: 首页 > 范文大全 > 优秀范文 >

Java语言实验教学改革探讨

发布时间:2022-05-03 19:05:02 | 浏览次数:

文章编号:1672-5913(2009)10-0148-03

摘要:针对Java语言实验课程的教学现状,本文探讨了该课程实验教学方面的改革。通过在课程中引入敏捷方法和自动单元测试,来激发学生的学习兴趣,提高学生的编程能力、沟通能力和团队合作能力,改善学生编写程序的质量。

关键词:Java;敏捷方法;结对编程

中图分类号:G642

文献标识码:A

1引言

Java自1995年由Sun公司正式推出,就迅速成为全球主流与应用广泛的开发语言,其跨平台的技术优势为网络计算带来了划时代的变革,从一种编程语言发展成为全球第一大领先开发平台。为了适用人才培养的需要,各高校纷纷开设了Java程序设计语言的课程,该语言也逐渐成为计算机科学与技术专业和软件工程专业学生需掌握的一门面向对象程序设计语言。我校软件工程专业培养方案中将该课程安排在“面向对象程序设计(C++)”之后开设,即二年级上学期。在实际的教学过程中,该课程教学大多仍沿用传统的教学模式,主要强调个体的动手实践,而忽视了沟通与交互,导致学生学习兴趣不高、理解不够深入、开发效率较低。且大多数同学习惯于编写“基本正确的程序”,而不是致力于编写“尽量正确的程序”,结果所编程序的质量不高。

敏捷方法首次提出来是在上世纪90年代后期,其目的是为了在需求和技术不断变化的过程中实现快速的软件开发。敏捷的价值观是:个体和交互胜过过程和工具;可以工作的软件胜过面面俱到的文档;客户合作胜过合同谈判;响应变化胜过遵循计划。敏捷方法强调应加强开发人员之间的交互,加强与客户的交互,注重有可工作的软件和完善、不过分的文档,积极、快速应对客户的需求变化,而不是回避。近年来,敏捷方法已经受到工业界和学术界的越来越多的关注。其中一些方法,如结对编程等已经被实践证明能有效提高软件设计质量,并应用于程序设计和软件开发等课程的教学过程中,取得良好的教学效果。

在分析Java语言课程的特点和学生的实践背景的基础上,针对该课程传统实验教学过程中的一些局限性,通

过引入敏捷方法和自动单元测试,来提高学生动手实践能力,取得了较好的教学效果。

2本课程特点

“Java语言程序设计”是软件工程专业的一门非常重要的专业选修课,主要讲授面向对象的Java语言程序设计及应用。在选修本课程之前,学生已经修过“面向对象程序设计(C++)”,具有C++的基本知识,并对面向对象思想有一定的了解。通过本课程的学习,学生能够在一定程度上掌握面向对象的思维方式,理解Java语言特有的一些属性,能够明白Java语言与其他面向对象编程语言的区别,使用Java语言有能力编写有实际意义的应用程序。但是在实际的教学过程中,学生学习兴趣不大,编程的质量不高。其主要原因有:

(1) 学生虽然已经学过C++,但是不够熟练,且对面向对象思想理解不深,在学习Java语言的初期有不少疑惑。如经常有同学提出“Java 到底有什么用?”,“我已经学了C++,为什么还要学Java?”以及“Java怎么感觉与C++有很大的不同?”等问题。如果不能及时解决学生的疑惑,将导致学生在随后的学习过程中缺乏兴趣,散失信心。因此在这个阶段,教师在实验教学中应通过比较Java与C++的异同来展示Java的基本语法和一些特性,使学生充分了解学习Java的必要性,从而激发学习兴趣。

(2) 在教学过程中,主要强调通过实例来展示Java的特性,并要求学生模仿实例来使用这些特性编写应用程序,但是忽略了程序的质量,甚至有些实例代码本身就不够严谨。因此学生所编写程序的质量很难得到保证。

(3) 学生独立性较强,不善于团队合作和沟通。在之前的程序设计等先修课程中主要是培养学生独立的逻辑思考和编程能力,而忽视了沟通、交互与团队合作。

从以往选修该课程的学生反馈来看,不少同学反映对Java语言掌握得不好,并且在今后两年的学习和实践过程中很少采用Java技术。然而这将导致学生在今后就业时失去不少机会。因此,在Java语言实验教学中,应该对教学内容和教学手段进行适当调整。通过引入结对编程这一敏捷方法和自动单元测试,来培养学生实际编程能力和沟通能力。

3实验教学改革及实施过程

通过分析Java语言课程的特点和敏捷方法的主要特征,在实验教学环节中引入敏捷方法有助于综合培养学生的编程能力、沟通能力和团队合作能力,改善学生所编写程序的质量。因此,首先,教师通过比较Java与C++的异同来展示Java的基本语法和一些特性,使学生充分了解学习Java的必要性,从而激发学习兴趣,加快入门过程。从中期开始,在实验教学中,教师要求学生以结对编程的形式完成实验,并全程指导如何有效地应用结对编程。在后期,教师介绍JUnit测试框架,并要求在实验中编写测试代码,从而进行自动单元测试。

具体实施包括以下三个环节:利用对比加快入门、引入结对编程和自动单元测试。

3.1利用对比加快入门

对比的目的是理解隐藏在程序语言背后的设计哲理,使我们知道对于一个问题的解决,为什么在此语言中是这样一种解决方案,而在彼语言中又是那样一种解决方案?这样思考会让我们更好地掌握编程语言的精髓。

通过与C++的对比,学生可以更好地理解Java的语法特点和设计原理,明白Java是如何做的,并进一步知道Java“为什么”这么做。通过对比性实验来学习,不仅效率很高,而且充满乐趣,加深学生对Java的理解。

在初期,教师并未引入结对编程,因为学生刚开始接触Java,对语言不熟悉,而且在此期间布置的实验题目较简单。如果匆忙要求学生采用结对编程,可能操之过急,无法体现其优越性。所以,在实验教学初期,要求学生独立完成实验,而且教师在实验过程中全程指导,纠正学生在使用Java编程时的一些不良习惯,帮助他们形成较好的编程风格。

3.2引入结对编程

结对编程是敏捷方法中最重要的实践之一。结对编程的通俗含义指的是两个程序员在同一台计算机上进行编程活动,一个同伴使用鼠标和键盘来编码,另一个同伴关注整体。基本上,所有的开发环节都一齐肩并肩地、平等地、互补地进行,它的核心在于两名成员紧密合作,时刻交流。采用结对编程进行合作的学生能更有效地交流,相互学习和传递经验;能提供更好的设计质量和代码质量;能训练更强的问题解决能力。同时,采取结对编程的学生更容易树立信心,从工作中获取更多的满足感。

从中期开始,教师在实验课上要求学生自由组成结对来完成实验内容。学生刚开始感到很新奇,并乐意组成结对来完成实验,但是在随后的实践过程中,教师发现了一些问题,并进行针对性的指导。

(1) 有些结对中一直固定由某个学生编码,而在旁的另一个学生虽然仍在关注,但注意力有些不集中。教师立即要求学生们根据实验中上机题来轮换角色,这样不至于使某个学生因长时间担任某一角色而出现疲惫状况或产生厌倦情绪,且使得学生们能得到全面锻炼的机会。

(2) 也有些结对中出现了一些指责和埋怨。教师应及时指出,在结对中,尽量不要用“你的设计有问题”或“这个错误是你引起的”之类的话语。结对成员应共同承担责任,不能相互指责,两人意见不同时,可以协商解决,双方应互相关心和体谅。

(3) 在个别结对中,某位同学总是处于强势,而他的搭档没有机会发表自己的意见。在这种情况下,教师应强调公平结对。即使一方比另一方更有经验,也不要让另一方感觉自己不重要。在结对中,每一方都有平等的机会,表达自己的观点,双方对代码的控制权是平等的。

此外,在刚开始引入结对编程的几周内,鼓励轮换结对。这样可以使学生有机会考虑性格融合和技术互补等因素来调整结对。

在实践过程中,有不少学生反映在实验室进行结对编程时效果较好,而课后缺乏合适的环境。针对这种情况,教师建议可以首先在同宿舍的同学中找到合适的搭档。另外,可以在学生的个人计算机中安装支持分布式协作开发的软件来支持分布式结对编程。比如,Eclipse通讯框架(Eclipse Communication Framework——ECF)可以作为Eclipse IDE的插件,给使用Eclipse的团队提供了实时通讯和协作特性。比如P2P(peer-to-peer)文件共享、远程打开Eclipse视图、屏幕截图共享、以及实时共享编辑。该框架还提供一套通讯API和框架,建立在已有协议(如Google Talk、XMPP、SSH、HTTP/HTTPS、Rendevous、IRC及其他协议)之上,使得开发者可以给自己的基于Equinox的插件增加通讯和消息传递功能,或者自定义及扩展ECF应用。组成结对的学生使用Eclipse IDE作为Java开发工具,且安装了ECF插件后,再配上Google Talk或Skype等即时通讯工具,就可以进行文字、语音以及视频通讯、屏幕截图共享、视图共享,更重要的是可以实时共享编辑,可以相互实时关注对方编程,并发表观点。

引入结对编程是为了培养学生的沟通能力和团队合作能力,让学生在沟通与合作中相互学习,共同进步,从而提高开发效率。从实验结果的质量和学生的反馈来看,结对编程的引入有利于编程效率的提高、代码质量的明显改进和培养学生的团队合作精神。

3.3引入自动单元测试

在Java语言实验教学实践中,许多学生在程序开发过程中忽视了程序质量。随着学习的深入,实验布置的编程题目越来越复杂,学生们所编写的程序中所暴露出来的质量问题也越来越严重。主要是由于他们对软件测试不够重视,没有针对实际问题设计出足够全面的测试用例,此外对软件测试的手段和技术了解很少,无法为有些代码设计相应的测试用例。

针对这一现象,可以通过让学生掌握基本的自动单元测试技术来改善程序质量。回归测试框架JUnit提供了基于API的自动测试方法,可以在测试代码中调用这个框架来进行断言检查,检查条件是否满足,并报告错误的数量和类型。在后期,教师在实验教学环节中介绍如何使用JUnit编写自动测试代码来进行自动单元测试。

通过引入自动单元测试,学生们在随后的实验中大多采用JUnit框架进行单元测试,代码质量较之前有了明显的提高。

4结束语

目前,在软件工程专业的“Java语言程序设计”课程实验教学中已经进行了上述的改革实践。通过利用对比学习Java,学生能较快地从C++编程过渡到Java编程,并逐渐对Java语言感兴趣。当引入结对编程之一敏捷方法后,学生普遍反映结对编程这一方式促进了同学之间的沟通与学习,激发了学习兴趣,提高了编程和团队合作能力。后期的实验教学中所引入的自动单元测试增强了学生们的程序质量意识,大大改善了代码的质量。

在实践过程也出现了一些个别现象,比如有极少数编程能力较强且个性较孤僻的同学不愿参与结对,而且认为自己独立开发效率应该更高。在今后的实验教学实践中,针对这些现象,将思考解决办法,进一步完善该改革方案

参考文献:

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

[2]Robert C. Martin. Agile Software Development: Principles, Patterns, and Practices[M]. Pearson Education, Inc., 2003.

[3]Armour P. Agile and Offshore[J]. Communications of the ACM, 2007,50(1):13-16.

[4]Kim Man Lui, Keith C.C. Chan, John Teofil Nosek. The Effect of Pairs in Program Design Tasks[J]. IEEE Transactions on Software Engineering,2008,34(2):197-211.

[5]Jeffrey C. Carver, Lisa Henderson, Lulu He, et al. Increased Retention of Early Computer Science and Software Engineering Students using Pair Programming[C]//In Proceedings of 20th Conference on Software Engineering Education & Training (CSEET"07). Washington,DC,USA:IEEE Computer Society. 2007:115-122.

[6]Richard G. Epstein. Getting Students to Think About How Agile Processes can be Made More Secure[C]//In Proceedings of 21st Conference on Software Engineering Education & Training (CSEET"08). Washington,DC,USA:IEEE Computer Society. 2008:51-58.

[7] 俞辉. 计算机专业提高Java语言教学效果的探索与实践[J]. 计算机教育,2008(14):48-49.

[8] 刘竹松,李振坤,王文彦. 极限编程在计算机本科毕业设计中的应用[J]. 计算机教育,2007(7):25-27.

[9] 钟扬,刘业政,马向辉. 小团队结对编程实践研究和重构[J]. 计算机技术与发展,2007,17(11):160-163.

Exploration on the Experimental Teaching of Java Programming Course

CHEN Hao, MING Zhong

(College of Computer Science and Software Engineering, Shenzhen University, 518060 Shenzhen, China)

Abstract: Considering the current situation in the experimental teaching of Java programming course, this paper proposes to introduce the agile methods and automatic unit test in the experimental teaching for the sake of stimulating the students’ learning interest, which also improves their programming skills, communication skills, teamwork capability and program quality.

Key words: Java; Agile methods; pair programming

推荐访问: 教学改革 探讨 语言 实验 java
本文标题:Java语言实验教学改革探讨
链接地址:http://www.yzmjgc.com/youxiufanwen/2022/0503/51938.html

版权声明:
1.赢正文档网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《Java语言实验教学改革探讨》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

版权所有:赢正文档网 2010-2024 未经授权禁止复制或建立镜像[赢正文档网]所有资源完全免费共享

Powered by 赢正文档网 © All Rights Reserved.。粤ICP备19088565号