基于Web的Java算法自动评测系统外文翻译资料

 2022-12-16 20:17:00

英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料


基于Web的Java算法自动评测系统

Marcos Andreacute; Pinto, Student Member 92275550, IEEE

摘要:源代码自动评估是学习编程语言的重要机制。一些工具和系统通过使用输入/输出测试来自动评估源代码,但很少有工具和系统使用软件工程度量。考虑到目前工作的局限性,本文提出了一种源代码自动评估的四阶段方法:i)编译源代码并进行错误检查;i i)根据教员提供的一组JUnit(见IV-A)测试编译后的代码;i i i)一组软件工程度量标准。ICS用于将学生的解决方案与教师的解决方案进行比较;iv)最后,根据前几个阶段的结果,向学生提供自动反馈,以便他们确定需要进一步学习的领域。在论文的最后,我们给出了系统评估的结果,表明我们的方法可以在学习编程语言的同时促进学生的学习和知识获取过程。

关键词:学生反馈、自动评价、网络应用、Java代码。

引言

学习一门编程语言可能是一项具有挑战性的活动,尤其是对于从未接触过编程语言的一年级学生而言。

以前的主要编程概念。这个领域的成功通常与努力工作和频繁测试学生的编程技能(通过练习和测试)有关,以评估他们当前的知识,从而将重点放在他们尚未掌握的领域。学生评估现状的最合适时机是整个学期的评估期。在评估期间,教师提供编程练习,学生必须提出解决方案。之后,老师对这些测试进行单独评分,学生可以通过这个评分反馈自我评估并确定需要进一步学习的概念。

然而,由于这些评估期需要教师投入大量的时间和资源,因此在学期内,这些评估期的执行时间不足以作为学生自我评估的工具。有些工具可以帮助完成这些任务,但这些工具存在一些局限性(见II-F)。基于此,我们开发了一个自动的基于网络的系统来分析和评估学生在解决老师提出的问题时提供的源代码。在这个系统中,教师只需提供练习的文本、解决方案和一些评分参数(例如一些JUnit测试和与解决方案中某些指标重要性相关联的百分比)并且在学生提供解决方案后,系统自动向他们提供反馈。

我们的研究工作始于对源代码自动评估相关工作的分析,本文第二节介绍了这些方法。分析使我们能够确定这种方法的局限性,以及我们的工作如何有助于提高技术水平。第三节介绍了我们的方法体系结构、ACODE系统,第四节详细介绍了我们的方法,通过解释每个组件的功能以及它们如何结合成一个能够评估学生提交的源代码的统一系统。本文的第五部分专门介绍了在评估我们方法时所获得的结果。最后,第六节总结了本文,并概述了构成我们未来研究指导方针的目标。

相关工作

自动评估系统,顾名思义,旨在分析某一信息,并自动提供充分的评估响应,而无需用户的帮助。在源代码自动评估的情况下,这种系统可以方便教学人员手工评估学生的源代码,同时为学生提供一种快速的自我评估编程技能的方法。有几种工具和系统可以帮助教师完成这项任务。然而,他们大多只使用输入/输出测试技术,很少使用软件工程度量来充分分析学生解决方案中提出的算法。

1.Mooshak

mooshak[1]是一个基于Web的系统,能够自动评估编程练习。该系统由奥珀托大学科学院的一组教授开发,以支持和管理编程课程中的小组分配。使用该系统,学生团队可以访问教学人员提供的一组编程问题,并通过C、C 、Java或PAS等几种不同的编程语言来解决练习。在将解决方案提交给编程问题后,学生将根据解决方案算法生成的输出数据,与教员生成的类似输出数据进行比较,获得自动反馈。

2.PC2

PC2,编程竞赛控制,是在加州大学开发的,用于管理与编程相关的竞赛。这个系统是用Java开发的,与Mooshak系统不同的是,它要求每个学生在使用应用程序之前先在自己的计算机上安装应用程序。PC2的9.1版执行自动评估[2],只要问题提供了必要的配置。否则,教师将人工进行评估。该系统使用客户机-服务器体系结构,要求学生访问局域网以访问服务器,以便检索编程练习。建立连接后,作业会自动载入学生的应用程式(用户端),当学生完成作业时,答案会传回伺服器,然后由系统自动检阅,或由教员手动检阅。与mooshak类似,该系统仅根据解决方案算法生成的输出数据与教员生成的类似输出数据进行评估。此外,该工具在使用上的灵活性较低,因为它需要预先安装,而不是简单地在网络上可用。

UVa Judge

uva judge系统(Valladolid大学在线法官)是由Valladolid大学的一名计算机科学学生开发的[3]系统,不仅支持编程竞赛,还支持学生学习和测试编程技能的环境。系统生成的所有信息都存储在数据库中,以后可以通过基于Web的系统访问。教育判断系统[4]是一个针对高中和大学生的数学和编程课程的学习过程的系统。该系统使用uva评判系统来分配相应的作业,让学生有一个更有效的学习环境。但是,系统的评估过程非常有限,因为它只对学生提交的解决方案的输出与教师解决方案的输出进行精确的比较。此评估过程不允许对学生的解决方案进行更具信息性的评估,因为学生的解决方案与教师的解决方案之间存在细微差异,将导致错误的评分解决方案。

ProgTest

程序测试是一种提交和自动评估工具,用于执行基本的输入/输出测试,测试由教学人员提供[5]。基本上,该系统使用三个阶段的分析过程:i)编译程序;i i)执行功能标准JUnit测试;i i i)使用JabutiService框架执行进一步的结构测试[6]。为了给学生的解决方案分配一个等级,该系统执行三组测试。首先,学生通过自己提交的测试来解决问题。第二个提交老师对学生提交的测试的解决方案。最后,在将学生的解决方案提交给老师创建的一组测试后,将所有结果合并以生成最终分数。然而,正如本文所回顾的其他系统,它们只依赖基于输入/输出测试的评估,这是非常有限的。

5.程序设计任务的自动评估

在[7]中,作者提出了一个基于Web的程序设计作业自动评估系统,该系统使用两种机制来评估学生提交的解决方案:一种是评估是否发生了抄袭,另一种是使用基于案例的测试来评估算法。尽管很重要,抄袭检测只是一种无效的评估机制,即,如果系统检测到抄袭已经发生,学生的解决方案将被拒绝,学生将得不到有效的分数。在这种抄袭分析发生之后,系统将执行与前面描述的系统类似的基于输入/输出的测试。该系统的唯一创新之处在于,它可以根据教师的理想解决方案自动生成测试,这对节省时间非常有帮助。

6.当前工作的局限性

虽然上面描述的方法能够评估学生生成的代码,但是它们使用简单的方法来评估,这些方法只测试编译程序的输入和输出。仅仅测试程序产生的输入参数和输出,虽然是必要的和相关的,但是非常不有效,因为它不能提供程序内部发生的事情的清晰视图,即算法的工作方式。这些方法无法使用更全面的方法,使评估模块能够提取有用的信息,从而为学生的解决方案返回更准确的分数。我们的目标是克服这些限制,扩展典型评估机制的功能,使用更先进的方法分析源代码,从而对整个程序提供准确的评估。我们通过介绍软件工程度量的使用,同时将学生的解决方案与教师的解决方案进行比较。这些数据与输入/输出测试数据相结合,将提供学生解决方案质量的完整视图。

ACode系统

考虑到目前方法的局限性和我们为工作设定的目标,我们开发了ACODE系统,能够对几个不同的主题进行自动评估。其目的是通过向学生提供自我评估工具来帮助他们评估某一特定学科的当前技能状态。

该系统设计用于支持几个不同的自动评估模块(见图1)。它的架构足够灵活,可以支持引入新的模块来处理其他课程的自动评估,而无需进行结构更改。在本文中,我们只关注负责Java源代码评估的模块。

图1 ACode系统架构

该模块允许学生通过解决编程问题和获得对结果的持续自动反馈来提高他们的编程技能,而无需等待教员进行手动评估。这样,学生就可以把他们的学习和工作集中在一门课程上,使他们有更高的能力。

技术方法

为了在自动评估提交学生解决方案的源代码时获得更真实的分数,ACODE系统中使用的模块使用两种不同但互补的策略:i)通过输入/输出测试(见4-A)评估解决方案;以及i i)通过软件工程M评估算法。ETRICS(见4-B)。

图2 Acode系统的flow-owchar

通过系统的Web界面,学生提交给定问题的解决方案,然后分四个阶段进行分析(见图2):

bull;学生发送的源代码首先由系统编译,以确保不存在编译错误。如果存在错误,则系统返回最终等级0(零)。然后学生可以重新提交解决方案;

bull;如果代码编译没有任何错误,第二阶段将运行由教学人员提供的一组JUnit测试(见IV-A)。如果所有测试失败,则系统返回0级(零),否则继续;

bull;测试阶段结束后,系统将从编译的源代码(见IV-B)和教师的解决方案中检索重要数据,并使用简单的软件工程度量(见IV-C)比较两组数据;

bull;最后,系统收集之前阶段的所有信息,并使用一组公式(见IV-C)计算学生解决方案的最终等级。最终等级,

同时向学生提交一份详细的评估报告,以便他们评估自己的表现。

输入/输出测试

这一技术使用的冰自动评价模块的输入/输出的基于JUnit测试框架。为了测试的学生的解决方案,提供一file教师必须与所做的测试,应该在学生的源代码。图3显示一个测试实例配置为file大厦有一个一级因素的方法。

图3 最后测试

在这篇文章中,老师为学生解决方案中应该测试的所有方法编写测试。_标记只是将测试分离在同一文件中的一种方法,这样我们的系统就可以独立地对它们进行计数,并提供关于哪些测试成功与否的详细报告。

JUnit:JUnit框架(8)允许程序员在Java代码上执行自动测试。通过使用testcase类(它可以扩展以适应特定的测试环境),系统检查类的每个方法是否如预期的那样工作。每个测试都提供必要的输入参数,并调用正在测试的方法。然后,框架分析调用的行为,并将其与测试创建者提供的预期行为进行比较。assertEquals方法可以以多种不同的方式使用,但最常见的用法是将正在测试的方法的返回对象与预期返回的对象进行比较。如果这两个不匹配,则引发异常。这允许我们的系统记录特定测试是否成功,稍后提供测试阶段的完整报告。Acode系统使用这种技术来测试学生解决方案的每一个方法,并生成一个报告,报告有多少测试成功,有多少测试失败。

软件工程度量

评估模块使用的第二种技术是分析一些软件工程度量,例如循环复杂性[9]、行数、方法数、属性数和类数。

我们选择这组指标是因为足以评估简单的算法,这通常是第一年编程学生使用的算法。这些度量的分析是通过使用JavaParser框架完成的。

JavaParser:JavaParser[10]是处理Java源代码并生成相应数据结构的框架。此数据结构允许我们的评估模块从学生解决方案的每个类和方法中检索一些有用的属性,例如名称、类型、主体和参数)。通过使用voidVisitorAdapter类(可以扩展以从算法中获得更多具体信息),ACode系统可以获得必要的数据,以生成基于度量的信息,这些信息将被处理,以便为学生的解决方案分配等级(见IV-C)。通过这个过程提取的信息允许检索相关的基于度量的信息,稍后由评估模块进行分析。例如,一个方法的行数是由一个处理getbody方法返回的数据的辅助方法计算的(返回每个方法的内容以便以后分析)。每当这个过程查询一个方法时,它就存储在一个列表中,这样评估模块不仅可以知道有多少方法(通过列表的大小),还可以知道使用了哪些方法。系统中使用的其余度量也同样获得。

评价

ACODE系统是一个基于Web的系统,包括内部的自动评估模块。系统的评估分两个层次进行:分析整个系统的性能和可用性,测试评估模块的效率。

为了测试系统是否能同时承受多个连接,并且输出一个可接受的性能,我们使用Apachebench来模拟系统中的过载,就像几个学生决定同时连接一样。图5通过显示系统为每个学生生成自动反馈需要多长时间来描述这种行为。

图5 ACODE系统的性能

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[20259],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。