一种程序设计作业错因自动聚类方法

专利检索2024-12-07  28


本发明涉及一种针对程序设计课程作业的自动化错因分析方法,属于计算机程序设计领域。


背景技术:

1、程序设计课程:程序设计课程旨在教授学生如何通过编程语言来解决问题,用来指导学生掌握不同的编程、算法、和数据结构概念。程序设计课程可以帮助学生建立编程思维和开发实践,目前在大学教学中十分普遍。课程覆盖范围十分广泛,在初级阶段包括例如变量、条件语句、循环和函数等内容。高级阶段包含如数据结构、算法、面向对象编程和软件工程等。

2、在课程中,学生将学习如何使用编程语言来编写代码、调试程序以及编写测试用例来验证代码的正确性。此外,程序设计课程还将强调计算机科学的核心原则,例如抽象化、模块化和算法复杂度等。学生将学习如何采用系统化的方法来解决问题,并开发清晰、可维护和可扩展的代码。

3、代码在线评测系统(online judge,以下简称oj):是一种在线评测和评分的工具,常用于计算机编程、算法竞赛、程序设计竞赛等领域。它通常由一个网站和相关的程序组成。网站上有一些程序设计和算法题目,这些题目通常给定一个情景条件,输入和输出说明,并附上样例输入和样例输出,要求用户编写代码解决问题。用户在完成程序后,可以在该网站上提交自己编写的程序,并观察通过或未通过测试的结果。oj将用户提交的代码编译运行,并对其进行多个测试点的测试,以验证代码的正确性和效率,并根据测试结果给出相应的分数和反馈信息。oj的存在使得编程教育和实践更加方便和高效。

4、目前一个典型的oj系统判题一般采用以下评测流程:

5、1.用户提交代码:用户在oj上提交程序的源代码,并选择对应的程序设计语言后提交。

6、2.系统编译代码:oj会首先对用户提交的代码进行编译,如果编译成功,继续下一步;否则提示编译错误(compile error,ce)。

7、3.运行测试数据:oj会将编译好程序多次运行,每一次传入题目规定的多组测试数据其中的一组。oj系统将用户程序的输出与题目各个测试输入对应的标准输出进行比对并检查。如果所有测试组的输出结果正确,则用户程序通过测试;若至少有一个测试数据比对不成功,则用户程序不通过测试,并给出结果错误(wrong answer,wa)、执行时间和内存占用等信息。

8、若用户程序在执行过程中发生错误,则按照错误类型给出不同的错误提示。其中包括程序运行出错(runtime error,re)、程序超出运行时间(time limit exceeded,tle)、程序超出运行规定内存(memory limit exceeded,mle)等。

9、典型的oj系统判题流程图如图1所示。

10、散列函数:是将任意长度的输入转化为固定长度的输出序列的一种函数。散列函数能将不同长度的输入数据映射为固定长度的输出,并且对于相同的输入始终能够得到相同的输出。sha256散列函数:sha256(secure hash algorithm 256)是一种加密散列函数,其作用是将输入数据转换为固定大小的输出(256位)。它是sha-2算法族中的一员,在密码学和信息安全领域得到广泛应用。

11、sha256散列函数具有以下特点:

12、·不可逆性:给定散列函数的输出,无法反推出原始的输入数据。即使输入数据只改变了一个比特位,输出结果也会有很大的不同。

13、·唯一性:任何两个不同的输入数据,其输出结果也是不同的。同时,sha256散列函数通过分布式设计,确保了输出结果在统计学上与随机数一样均匀分布,避免了碰撞的概率。

14、·固定长度输出:sha256散列函数的输出总是256位长,这使得散列值容易和比较和存储。

15、sha256散列函数的应用非常广泛,包含密码学、数字签名、数据完整性验证和随机数生成等各个方面。


技术实现思路

1、对于教师和助教而言,程序设计课程作业的批改是一项相当繁重、耗费时间的重复性工作。在目前的程序设计教学工作中,教师一般通过使用代码在线评测系统(onlinejudge,下称oj)来为学生布置作业,并根据oj系统自动测评打出的分数得出学生的分数。然而,oj主要用于程序设计竞赛。当oj应用于教学时,会展现出相当大的局限性。这些局限性包括:

2、·现有的oj评分系统仅基于代码对于测试点数据输出结果与标准输出的一致性,而无法考虑学生代码中错误的数量和严重性。这样的局限性使得微小的错误也会造成不合理的大量分数扣除。而如果学生的代码经过人工评分时,教师或助教往往可以根据具体错误酌情评分。

3、·现有的oj对学生一次作业提交的反馈只有“正确”和“错误”两种结果。若结果错误,学生无法从提交中得到其他反馈,例如错误的原因、具体的代码块等,从而对学生改正代码造成困难。而在人工评分的时候,教师或助教往往会指出学生代码的错误点,错因以及针对错误的思路分析。

4、然而,人工评分也同样有着缺点。人工评分需要消耗大量人力和时间成本。同时,不同的助教针对同一错误代码的给分可能会有较大差异,导致学生的作业得分不够稳定。

5、为了弥补现有oj评分方案的不足,本发明提出了一种能够进行错因分析的oj评分和错因聚类方法。本方法在每次学生提交答案后,将其程序的输出内容的散列值储存起来。每次评测完成后将散列值和已知错因的答案的输出散列值对比,如果散列值相同,即可认为输出内容相同。通过比较散列值来间接比较文件内容,避免了多次进行大量大文件的读写操作,使比较速度更快。

6、进一步地,使用散列函数对程序输出进行处理后的匹配方法。这种输出匹配法将新提交的代码运行结果与往期错误输出进行匹配。由于对于相同的输入文件、相同的题目要求,相同的错误输出往往由于极其类似的错误导致,由此推断新提交代码的错因与匹配到的往期错误提交十分相似。将代码中同一类型的错误聚为一类,可以辅助老师快速了解学生在编程过程中存在的普遍问题和难点,提高批改效率和教学质量。

7、与现有技术相比较,本发明适用于计算机编程、程序设计等领域,在自动批改、错误分析和教学评估等方面具有广泛应用前景。

8、本方法可以针对错误的程序给出正确的打分,并提供错因分类和错因反馈。这种错因分析方法还可以嵌入在现有的oj系统当中,使其应用范围更加广泛。



技术特征:

1.一种程序设计作业错因自动聚类方法,其特征在于,该方法包括如下步骤:

2.根据权利要求1所述的一种程序设计作业错因自动聚类方法,其特征在于,实施散列函数为sha-256散列函数。


技术总结
本发明公开了一种程序设计作业错因自动聚类方法,使用散列函数对程序输出进行处理后的匹配方法。这种输出匹配法将新提交的代码运行结果与往期错误输出进行匹配。由于对于相同的输入文件、相同的题目要求,相同的错误输出往往由于极其类似的错误导致,我们可以由此推断新提交代码的错因与匹配到的往期错误提交十分相似。本发明将代码中同一类型的错误聚为一类,可以辅助老师快速了解学生在编程过程中存在的普遍问题和难点,提高批改效率和教学质量。本发明适用于计算机编程、程序设计等领域,在自动批改、错误分析和教学评估等方面具有广泛应用前景。

技术研发人员:熊浩男,葛中正,卢雨轩,孙天天
受保护的技术使用者:北京工业大学
技术研发日:
技术公布日:2024/5/29
转载请注明原文地址:https://win.8miu.com/read-1146987.html

最新回复(0)