CN110349477A - 一种基于历史学习行为的编程错误修复方法、系统及服务器 - Google Patents

一种基于历史学习行为的编程错误修复方法、系统及服务器 Download PDF

Info

Publication number
CN110349477A
CN110349477A CN201910638382.3A CN201910638382A CN110349477A CN 110349477 A CN110349477 A CN 110349477A CN 201910638382 A CN201910638382 A CN 201910638382A CN 110349477 A CN110349477 A CN 110349477A
Authority
CN
China
Prior art keywords
syntax tree
error
repair
path
knowledge point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910638382.3A
Other languages
English (en)
Other versions
CN110349477B (zh
Inventor
黄井泉
肖立成
段甲生
钟金
何振远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan Kude Network Technology Co Ltd
Original Assignee
Hunan Kude Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan Kude Network Technology Co Ltd filed Critical Hunan Kude Network Technology Co Ltd
Priority to CN201910638382.3A priority Critical patent/CN110349477B/zh
Publication of CN110349477A publication Critical patent/CN110349477A/zh
Application granted granted Critical
Publication of CN110349477B publication Critical patent/CN110349477B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B19/00Teaching not covered by other main groups of this subclass
    • G09B19/0053Computers, e.g. programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Educational Technology (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Educational Administration (AREA)
  • Software Systems (AREA)
  • Electrically Operated Instructional Devices (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开一种基于历史学习行为的编程错误修复方法、系统及服务器,包括:获取历史学习行为记录数据;并从记录数据中提取历史记录程序中的错误修改路径;根据错误修改路径生成与语法树结构相关的修复路径模板库;获取当前错误程序数据;并从报错数据中提取错误代码段;将错误代码段生成查询标签;根据查询标签到修复路径模板库中搜索与查询标签相似度最高的语法树结构,得到模板集;根据模板集对当前错误程序的语法树结构进行修改,生成错误修复指导建议。解决现有技术中修复率低及指导建议不明确等问题,实现提高修复效率并针对每个程序的错误代码段生成明确的修复建议。

Description

一种基于历史学习行为的编程错误修复方法、系统及服务器
技术领域
本发明涉及在线教育技术领域,具体是一种基于历史学习行为的编程错误修复方法、系统及服务器。
背景技术
近年来在线教育迅速兴起,许多教学科目都可以在网上找到相应的教育课程。而随着人工智能的发展,编程也开始成为了新兴的热门学习科目,不仅在大学里有许多计算机专业的学生,社会上也有许多人在自学编程,全球编程学习人员迅速增多。且由于全球各国对于科技教育的重视,许多国家已经将编程加入到了中小学的教育科目中。巨大的需求推动了线上编程教育的出现与发展,许多线上教育平台推出了编程教育课程。
在线编程教育主要有三种形式:
一、视频。编程教育平台提前将上课视频录制好,然后再将视频发布到网上,当学生需要学习某个知识点时,就打开相应的视频进行观看学习,这个模拟的是传统的面对面课堂教育方式。
二、文本。编程教育平台将每个编程知识点用文字进行讲解,并将相应的程序示例以文本形式进行展示,学生通过阅读平台给出的讲解文本进行学习。
三、在线编程。编程教育平台在网络上发布每个知识点对应的编程训练题目,同时为用户提供编程所需的环境,用户在平台上根据题目要求进行编程,在编程完成后,平台运行用户编写的程序,并判断程序是否正确,学生通过动手进行编程来学习编程知识。
各个在线编程教育平台使用不同的编程教育模式,在这些教育模式下,无论学生是在线上还是线下进行编程都会出现一个问题,那就是当程序出现错误时教育平台无法指导学生进行错误修复。编程是一门实践性很强的科目,想要获得和学好编程知识必须动手编写代码,程序的编写过程中不可避免会出现错误,尤其是学生,由于学生的知识基础薄弱,编写经历较少,出现错误的概率和频率也大大增加。现在的在线编程教育平台,无论是采用视频、文本还是在线编程,当学生出现问题时都是通过学生在平台进行留言,老师回答问题的模式来进行解决,这样会造成回复消息不及时,且由于编程人员编程习惯和思维方式的差异,就算是实现一个同样的功能,具体的代码也可能会相差很大,所以通过平台留言进行指导还会造成指导不够精准,这样就使得对使用在线编程教育平台进行编程学习的学生进行自动程序错误修复指导变得极为必要。
在程序自动修复领域,现存的影响较大的主要有:GenProg,它基于抽象语法树使用遗传规划算法进行搜索来对错误程序进行修复;SemFix是首个基于语义的修复方法;Relifix是首个针对回归测试错误进行修复的方法。
上述方法主要针对的是大型软件中的错误,且要求错误频率不高,但是由于学生程序错误多且杂,所以将自动程序修复系统应用于学生程序修复上效果不佳,修复率低,同时对于学生教育来说,只是给出完整的正确代码学生可能会不明白为何要这样修改,没有指导意义。
发明内容
本发明提供一种基于历史学习行为的编程错误修复方法、系统及服务器,用于克服现有技术中修复率低及指导不明确等缺陷,针对反复出现的编程错误高效修复,并给出正确的修复路径,实现真正意义的指导,对用户编程错误自动提供个性化的修复引导,具有较高的可操作性和灵活性,能提高学生的学习效率。
为实现上述目的,本发明提供一种基于历史学习行为的编程错误修复方法,包括:
获取历史学习行为记录数据;并从所述记录数据中提取历史记录程序中的错误修改路径;
根据所述错误修改路径生成与语法树结构相关的修复路径模板库;
获取当前错误程序数据;并从所述报错数据中提取错误代码段;
将所述错误代码段生成查询标签;
根据所述查询标签到所述修复路径模板库中搜索与所述查询标签相似度最高的语法树结构,得到模板集;
根据所述模板集对当前错误程序的语法树结构进行修改,生成错误修复指导建议。
为实现上述目的,本发明还提供一种基于历史学习行为的编程错误修复系统,包括存储器和处理器,所述存储器存储有基于历史学习行为的编程错误修复程序,在所述处理器运行所述基于历史学习行为的编程错误修复程序时,执行所述方法的步骤。
为实现上述目的,本发明还提供一种服务器,包括所述的基于历史学习行为的编程错误修复系统。
本发明提供的基于历史学习行为的编程错误修复方法、系统及服务器,运用在提供在线编程的在线编程教育平台中,通过对历史编程数据的处理,实现对学生编程错误的修复指导。不同于以往的自动程序修复方法,它主要针对学生以往的程序错误形成的历史学习行为记录数据,根据所述错误修改路径生成语法树和错误信息,提取语法树中所述错误修改路径涉及的知识点和语法树结构,并根据所述错误信息与知识点及语法树结构之间的关联构建由所述语法树的集合形成的修复路径模板库;每个语法树均包括能够体现其自身特性的多维特征,包括:知识点及语法树结构,错误信息根据运行上述错误程序后获得,学生再次编程并产生程序错误时,针对每次程序错误所在位置的代码段进行定位,生成错误查询标签,根据查询标签到修复路径模板库中搜索与查询标签中错误信息和知识点均相同且语法树结构相似度最高的语法树,得到模板集;根据模板集对当前错误程序的语法树进行修改,生成错误修复指导建议,具体可以包括语法树节点修改链接及语法树相关知识点连接;不是一次将学生的错误程序完全修改正确,而是针对每次程序错误逐步进行修复提示,让学生能够清楚地明白自己犯的错误及针对此错误如何进行修改,同时还可以提供相应知识点的学习链接,提供的知识点链接可以让学生对自己缺乏的知识点进行学习,当学生学习完知识点后可以自主地对错误进行修复。这样可以极大地提高在线编程教育平台的教育指导作用,解决了学生无法得到及时、精准的程序修复指导问题,同时增大学生的学习兴趣,此方法具有较高的可操作性和灵活性,能提高学习效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明基于历史学习行为进行个性化错误修复推荐编程错误分类的流程图;
图2为本发明基于历史学习行为进行个性化错误修复推荐个性化错误修复推荐的流程图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“连接”、“固定”等应做广义理解,例如,“固定”可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接,还可以是物理连接或无线通信连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
实施例一
如附图1-2所示,本发明实施例提供一种基于历史学习行为的编程错误修复方法,包括:
S1,获取历史学习行为记录数据;并从所述记录数据中提取历史记录程序中的错误修改路径;
S2,根据所述错误修改路径生成语法树和错误信息,提取语法树中所述错误修改路径涉及的知识点和语法树结构,并根据所述错误信息与知识点及语法树结构之间的关联构建由所述语法树的集合形成的修复路径模板库;在本发明一实施例中将编程错误进行分类。将用户在编程时犯的错误根据标签进行分类。错误修复路径模板生成的方法名称为修复路径模板构建,具体过程如下:当用户的程序发生错误时,比如,用户的程序1在for循环犯了语法错误,将‘for’写成了‘wor’,此时在程序运行过后编译器会给出错误提示,显示程序犯了语法错误S1,并给出报错的程序语句E1,也就是用户所写的‘wor’所在的语句,将S1和E1生成元组(S1,E1)并记录下来。首先使用Kali方法对程序进行错误定位,确定错误代码段位置,并为错误代码段中每个语句打上标签,标注错误代码段。用户要解决这个问题就要对程序作出修改,对程序进行修改时,如果修改了错误代码段中的代码,原错误代码标签不删除,依然标注此行代码。当用户在某次修改程序并运行程序后,如果程序此语句不再报错,那这时用户就解决了这个错误,将此时的程序记录下来,将程序中有错误代码段标签的代码段截取下来,将此代码段生成语法树,遍历此语法树,将代表变量的节点都用同一个名称代替,此时此语法树就与具体的变量无关了,只与程序结构有关,将此时生成的语法树框架称为修改路径语法树。将前面记录下来的元组(S1,E1)中的E1提取出来,生成与具体变量无关的代码框架E2,并与S1生成新的元组(S1,E2),元组(S1,E2)就代表着此错误代码段的报错信息。遍历修改路径语法树,当遇到节点代表着关键词,比如‘for’,‘class’等就将这些节点记录下来,将这些节点放入集合中,这个集合就是错误代码中涉及到的知识点,根据这些节点对修改路径语法树进行分类。最后,将元组(S1,E2)整合到其对应的修改路径语法树,一棵修改路径语法树由报错信息、知识点和语法树自身结构三者共同标识。将历史学习行为记录中的所有数据进行错误修复路径模板生成处理,将所有的模板集合到一起形成修复路径模板库。
S3,获取当前错误程序数据;
S4,并从所述报错数据中提取错误代码段;错误定位。使用Kali方法来对错误程序进行错误定位,确定程序的错误代码段位置,提取出错误代码段。
S5,根据所述错误代码段生成查询标签,所述查询标签包括所述错误代码段涉及的错误信息、知识点及语法树结构;上述过程可通过对所述错误代码段进行训练获得查询标签;错误代码查询标签生成方法名称为错误代码查询标签构建,具体过程如下如下:提取出错误代码段后,遍历此代码段,将此代码段中的具体变量用同一个名称代替,此名称与修复路径模板库中的语法树框架中代表变量的统一名称相同。此时错误代码就生成了与具体变量无关只与结构相关的语法树框架。此框架称为结构查询标签。对此框架进行遍历,遇到关键词时就将关键词记录下来,这些关键词代表着错误代码段所涉及的知识点,将这些知识点记录放进一个集合,这个集合就是错误代码段的知识点查询标签。用户在运行错误程序后编译器会给出相应的犯错类型和报错语句,如语法错误S2和报错语句E3,将E3生成与具体变量无关的代码框架E4,将E4与S2组成元组(S2,E4),此元组就是错误信息查询标签。
S6,根据所述查询标签到所述修复路径模板库中搜索与所述查询标签中错误信息和知识点均相同且语法树结构相似度最高的语法树,得到模板集;
S7,根据所述模板集对当前错误程序的语法树结构进行修改,生成错误修复指导建议。
通过上述错误修复方法生成错误修复指导建议推荐给用户端。当学生的程序出现错误时,根据学生程序中的错误进行逐步的修复方法推荐,每次修复一个错误,直到程序完全正确。上述修改方法推荐的过程包括个性化引导修复。当对学生错误进行修复推荐时,同时提供错误涉及知识点的学习链接和错误修改方法供学生选择。
优选地,所述S2根据所述错误修改路径生成与语法树结构相关的修复路径模板库的步骤包括:
S21,提取所述错误修改路径的正确修改路径,并将所述正确修改路径转化为抽象的语法树;生成用户修改记录语法树。用户在做每个编程题时,会一步一步地修改代码直到代码完全正确,每次修改都会有相应的记录,同时用户犯了某个错误后,可能这个错误在下一次就修改正确,也有可能要修改几次才能修改正确,而且在修改完一个错误之后程序并不一定完全正确,因为可能又犯了其他错误。提取出用户程序中每个错误的正确修改路径,将这个路径化为抽象的语法树。
S22,提取所述抽象的语法树所对应的语法树结构及知识点;同时提取出错误修改路径所涉及到的知识点(如for循环、I/O等)和语法树结构,根据知识点生成知识点标签,根据语法树结构生成结构标签。
S23,提取所述错误修改路径运行后的错误类型和报错语句对应的错误信息,并生成错误标引标签;
程序运行后如果程序错误,编译器会给出错误记录,包括错误类型和报错语句,提取出每个错误记录所对应的错误信息,并生成错误标引标签。
S24,将所述错误标引标签整合到所述语法树,并根据所述知识点的类型对所述语法树进行分类;将每个错误信息生成错误标引标签并将该标签整合到对应的语法树,对每棵语法树根据知识点标签进行分类。
S25,根据分类后的语法树生成仅与所述知识点类型、程序结构和错误信息相关的修复路径模板。并将每棵分类后的语法树生成只与知识点类型,程序结构和错误信息相关的修复路径模板。
优选地,为了不断扩充和完善历史行为数据库,进而提高修复路径模板库的训练和学习能力,所述S3获取当前错误程序数据之后还包括:
S3A,从所述错误程序数据中提取当前错误修改路径;
S3B,在所述修复路径模板库中遍历所述当前错误修改路径;
S3C,在所述修改路径模板库中不存在所述当前错误修改路径时,根据所述当前错误修改路径生成与语法树结构相关的当前修复路径模板库,并将所述当前修复路径模板库加入所述修复路径模板库。
优选地,所述S5对所述错误代码段进行训练获得查询标签的步骤包括:
S51,根据所述错误代码段生成抽象的语法树;将错误代码段生成语法树。
S52,根据提取的所述语法树涉及的错误的知识点生成知识点查询标签,根据提取的所述语法树涉及的错误的语法树结构生成结构查询标签;
S53,根据提取的所述错误代码段运行后的错误类型和报错语句对应的错误信息,生成错误查询标签。
训练出错误代码段的知识点、语法树结构和错误信息(错误类型、报错语句)(错误代码查询标签构建),知识点是错误代码段中所涉及到的知识点,例如for循环、I/O问题等,语法树结构是指将错误代码段生成语法树后,将语法树处理为与具体变量无关,只与代码结构相关的语法树框架,错误信息是指错误代码段运行后提取出来的错误类型和报错语句,知识点指明了错误程序中具体的错误知识点,错误信息指明了在所涉及的具体知识点错误下编译器所给出的具体错误信息,语法树结构指明了错误程序具体的程序框架,知识点与编辑器给出的错误信息两者结合准确地给出了错误信息,语法树结构则给出了程序中错误的上下文信息。将知识点、语法树结构和错误信息对应生成知识点查询标签、结构查询标签和错误查询标签,如果某程序错误错在知识点for循环,则其知识点查询标签为‘for’,结构查询标签则是语法树框架,将报错语句处理成与具体变量无关后,将其与错误类型生成元组,知识点查询标签、结构查询标签和错误查询标签三者结合能确定程序错误。
优选地,所述S6根据所述查询标签到所述修复路径模板库中搜索与所述查询标签相似度最高的语法树结构,得到模板集的获得步骤包括:
S61,根据知识点查询标签到所述修复路径模板库中搜索与所述知识点查询标签具有相同知识点的语法树,得到第一模板母集;将错误程序的知识点查询标签到修复路径模板库中搜索相同的知识点类型的模板,得到与错误程序相同的知识点类型的模板集M1(第一模板母集)。
S62,根据错误查询标签到所述第一模板集中搜索与所述错误查询标签具有相同错误信息的语法树,得到第二模板母集;用错误查询标签对M1的错误信息标签进行搜索匹配得到满足条件的模板集M2(第二模板母集)。
S63,根据结构查询标签到所述第二模板集中搜索与所述结构查询标签语法树结构相似度最高的语法树,获得所述模板集。将错误程序结构标签与M2中语法树的结构标签进行相似度匹配,选择出相似度最大的模板M3(模板集),在M3不唯一时,可选择其中一个生成修复建议,这里的修复建议包括修复代码,根据所述修复代码以及编程时输入的变量填充语法树框架。
优选地,所述S7根据所述模板集对当前错误程序的语法树结构进行修改,生成错误修复指导建议的步骤包括:根据模板M3对错误程序语法树节点进行修改,生成错误修复P。具体包括:
S71,根据所述模板集对基于错误代码段生成的语法树进行修复,生成修复代码,并发出修复链接和知识点链接;
S72,获取用户端根据所述修复链接或知识点链接做出的修改程序数据;
S73,在所述修改程序数据报错时,重复上述S4-S7步骤;
S74,在所述修改程序数据正确时,修复结束。
当学生通过使用P对错误进行修复后,如果又犯了其他错误,执行步骤2,生成新的修复提示,依此方法循环提示,直到整个程序完全正确。系统给用户提供可选择的错误修复方法推荐,用户可以选择查看修复方法,也可以选择不查看,如果查看,系统以文本的形式给出错误修复方法,如果不查看,用户可以根据系统提供的个性化引导修复来进行错误修复。
首先,将在步骤S2中记录下来的知识点类型与相应知识点链接生成匹配对<F1,K1>,<F2,K2>....,Fn代表知识点类型,Kn代表知识点的链接;
然后、提示用户有哪几个知识点错误,并将相应的知识点链接推荐给用户端,用户端可以点击此链接可以进入这个知识点的学习页面,如果用户不进入知识点的学习可以查看修复方法链接;
最后、将修复方法以文本方式提供给用户端,当用户不进行知识点的学习时可以直接查看修复方法链接对程序进行修复。
采用本发明可以达到以下技术效果:
该方法通过对历史编程数据的处理,实现对学生编程错误的修复指导。不同于以往的自动程序修复方法,它主要针对学生的程序错误,且不是一次将学生的错误程序完全修改正确,而是逐步进行修复提示,让学生能够清楚地明白自己犯的错误及针对此错误如何进行修改,同时提供相应知识点的学习链接,提供的知识点链接可以让学生对自己缺乏的知识点进行学习,当学生学习完知识点后可以自主地对错误进行修复。这样可以极大地提高在线编程教育平台的教育指导作用,解决了学生无法得到及时、精准的程序修复指导问题,同时增大学生的学习兴趣,提高学习效率。
如图1所示,为本发明基于历史学习行为进行个性化错误修复推荐编程错误分类实施流程图,具体执行以下步骤:
步骤101、提取历史记录错误程序H中的错误Pi的修改路径。
步骤102、将修改路径Pi生成抽象语法树P1。
步骤103、提取出语法树P1所对应的知识点L,和语法树结构Q。
步骤104、将此错误程序运行后编译器所给出的错误类型和报错语句提取出来,生成标签W。
步骤105、把W整合到语法树P1。
步骤106、根据知识点L类别对语法树进行归类。
步骤107、把归类后的语法树生成只与知识点类型,程序结构和错误信息相关的修复路径模板。
步骤108、判断错误程序H中的错误是否都已生成修改路径并处理完毕,如果没有,执行步骤101,如果有,执行步骤109。
步骤109、处理结束。
如图2所示,为本发明基于历史学习行为进行个性化错误修复推荐个性化错误修复推荐实施流程图,具体执行以下步骤:
步骤201、用户程序A报错。
步骤202、将程序A中的错误代码段B1提取出来。
步骤203、把错误代码段B1生成抽象语法树T1。
步骤204、把T1涉及的错误的知识点K和语法树结构S提取出来。
步骤205、将错误程序A运行后编译器给出的错误类型和错误语句提取出来,生成标签R。
步骤206、用K到修复路径模板库中查询具有相同知识点的语法树模板,得到模板集M1。
步骤207、用R到M1中查询具有相同错误信息的语法树模板,得到模板集M2。
步骤208、到M2中查询与S具有最大结构相似度的语法树,得到模板M3。
步骤209、根据得到的目标模板M3对错误代码段语法树T1进行修复。
步骤210、此时用户可以选择是否查看系统提供的修复代码,如果查看,就显示修复代码,随后执行步骤211,如果不查看,就执行步骤211。
步骤211、用户选择是否查看错误所对应的知识点,如果查看,就显示相关知识点链接,如果不查看,则执行步骤212。
步骤212、用户修改程序。
步骤213、在用户对程序进行修改后,判断程序是否完全正确,如果不是完全正确,执行步骤202,否则执行步骤214。
步骤214、程序完全修复正确,修复结束。
实施例二
基于上述基于历史学习行为的编程错误修复方法的实施例,本发明还提供一种基于历史学习行为的编程错误修复系统,包括存储器和处理器,所述存储器存储有基于历史学习行为的编程错误修复程序,在所述处理器运行所述基于历史学习行为的编程错误修复程序时,执行任意实施例的基于历史学习行为的编程错误修复方法的步骤。
实施例三
基于上述基于历史学习行为的编程错误修复程序的实施例,本发明还提供一种服务器,包括任意实施例的基于历史学习行为的编程错误修复系统。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

Claims (8)

1.一种基于历史学习行为的编程错误修复方法,其特征在于,包括:
获取历史学习行为记录数据;并从所述记录数据中提取历史记录程序中的错误修改路径;
根据所述错误修改路径生成语法树和错误信息,提取语法树中所述错误修改路径涉及的知识点和语法树结构,并根据所述错误信息与知识点及语法树结构之间的关联构建由所述语法树的集合形成的修复路径模板库;
获取当前错误程序数据;并从所述报错数据中提取错误代码段;
根据所述错误代码段生成查询标签,所述查询标签包括所述错误代码段涉及的错误信息、知识点及语法树结构;
根据所述查询标签到所述修复路径模板库中搜索与所述查询标签中错误信息和知识点均相同且语法树结构相似度最高的语法树,得到模板集;
根据所述模板集对当前错误程序的语法树结构进行修改,生成错误修复指导建议。
2.如权利要求1所述的基于历史学习行为的编程错误修复方法,其特征在于,所述获取当前错误程序数据之后还包括:
从所述错误程序数据中提取当前错误修改路径;
在所述修复路径模板库中遍历所述当前错误修改路径;
在所述修改路径模板库中不存在所述当前错误修改路径时,根据所述当前错误修改路径生成与语法树结构相关的当前修复路径模板库,并将所述当前修复路径模板库加入所述修复路径模板库。
3.如权利要求1所述的基于历史学习行为的编程错误修复方法,其特征在于,所述根据所述错误修改路径生成与语法树结构相关的修复路径模板库的步骤包括:
提取所述错误修改路径的正确修改路径,并将所述正确修改路径转化为抽象的语法树;
提取所述语法树所对应的语法树结构及知识点;
提取所述错误修改路径运行后的错误类型和报错语句对应的错误信息,并生成错误标引标签;
将所述错误标引标签整合到所述语法树,并根据所述知识点的类型对所述语法树进行分类;
根据分类后的语法树生成仅与所述知识点类型、语法树结构和错误信息相关的修复路径模板。
4.如权利要求3所述的基于历史学习行为的编程错误修复方法,其特征在于,所述将所述错误代码段生成获得查询标签的步骤包括:
根据所述错误代码段生成抽象的语法树;
根据提取的所述语法树涉及的错误的知识点生成知识点查询标签,根据提取的所述语法树涉及的错误的语法树结构生成结构查询标签;
根据提取的所述错误代码段运行后的错误类型和报错语句,生成错误查询标签。
5.如权利要求4所述的基于历史学习行为的编程错误修复方法,其特征在于,所述根据所述查询标签到所述修复路径模板库中搜索与所述查询标签相似度最高的语法树结构,得到模板集的获得步骤包括:
根据知识点查询标签到所述修复路径模板库中搜索与所述知识点查询标签具有相同知识点的语法树,得到第一模板母集;
根据错误查询标签到所述第一模板集中搜索与所述错误查询标签具有相同错误信息的语法树,得到第二模板母集;
根据结构查询标签到所述第二模板集中搜索与所述结构查询标签语法树结构相似度最高的语法树,获得所述模板集。
6.如权利要求5所述的基于历史学习行为的编程错误修复方法,其特征在于,所述根据所述模板集对当前错误程序的语法树结构进行修改,生成错误修复指导建议的步骤包括:
根据所述模板集对基于错误代码段生成的语法树进行修复,生成修复代码,并发出修复链接和知识点链接;
获取用户端根据所述修复链接或知识点链接做出的修改程序数据;
在所述修改程序数据报错时,重复上述当前错误程序的修复步骤;
在所述修改程序数据正确时,修复结束。
7.一种基于历史学习行为的编程错误修复系统,其特征在于,包括存储器和处理器,所述存储器存储有基于历史学习行为的编程错误修复程序,在所述处理器运行所述基于历史学习行为的编程错误修复程序时,执行所述权利要求1~6任一项所述方法的步骤。
8.一种服务器,其特征在于,包括所述权利要求7所述的基于历史学习行为的编程错误修复系统。
CN201910638382.3A 2019-07-16 2019-07-16 一种基于历史学习行为的编程错误修复方法、系统及服务器 Active CN110349477B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910638382.3A CN110349477B (zh) 2019-07-16 2019-07-16 一种基于历史学习行为的编程错误修复方法、系统及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910638382.3A CN110349477B (zh) 2019-07-16 2019-07-16 一种基于历史学习行为的编程错误修复方法、系统及服务器

Publications (2)

Publication Number Publication Date
CN110349477A true CN110349477A (zh) 2019-10-18
CN110349477B CN110349477B (zh) 2022-01-07

Family

ID=68175432

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910638382.3A Active CN110349477B (zh) 2019-07-16 2019-07-16 一种基于历史学习行为的编程错误修复方法、系统及服务器

Country Status (1)

Country Link
CN (1) CN110349477B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113129689A (zh) * 2019-12-31 2021-07-16 昆山峻优科技培训有限公司 一种编程教学端及系统

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266594B2 (en) * 2008-08-20 2012-09-11 International Business Machines Corporation System, method and program product for correcting semantic errors in code using peer submitted code snippets
CN104699611A (zh) * 2015-03-18 2015-06-10 北京航空航天大学 一种基于开源软件缺陷代码修改模式的缺陷信息提取方法
CN104991858A (zh) * 2015-06-12 2015-10-21 扬州大学 一种面向代码修改的概要及标签自动生成方法
CN105389340A (zh) * 2015-10-20 2016-03-09 北京云知声信息技术有限公司 一种信息测试方法及装置
CN105701253A (zh) * 2016-03-04 2016-06-22 南京大学 中文自然语言问句语义化的知识库自动问答方法
US9459848B1 (en) * 2015-05-29 2016-10-04 International Business Machines Corporation Obtaining correct compile results by absorbing mismatches between data types representations
CN106796543A (zh) * 2014-08-27 2017-05-31 飞索科技有限公司 源代码分析装置、用于该装置的计算机程序及其记录介质
CN107015813A (zh) * 2017-04-19 2017-08-04 网易(杭州)网络有限公司 代码修复的方法、装置及电子设备
CN107256217A (zh) * 2017-04-19 2017-10-17 江苏师范大学 一种xml数据的快速查询方法
CN107967208A (zh) * 2016-10-20 2018-04-27 南京大学 一种基于深度神经网络的Python资源敏感缺陷代码检测方法
CN108932192A (zh) * 2017-05-22 2018-12-04 南京大学 一种基于抽象语法树的Python程序类型缺陷检测方法
US20190026264A1 (en) * 2016-03-23 2019-01-24 Nomura Research Institute, Ltd. Text analysis system and program
CN109345908A (zh) * 2018-09-30 2019-02-15 上海畅学教育科技有限公司 可视化模块编程系统及其控制方法
CN109376092A (zh) * 2018-11-26 2019-02-22 扬州大学 一种面向缺陷补丁代码的软件缺陷原因自动分析方法
CN109491924A (zh) * 2018-12-21 2019-03-19 北京达佳互联信息技术有限公司 代码检测方法、装置、终端及存储介质
US20190138731A1 (en) * 2016-04-22 2019-05-09 Lin Tan Method for determining defects and vulnerabilities in software code
CN109919500A (zh) * 2019-03-13 2019-06-21 中南大学 具有基于本体的错误反馈功能的自动评分系统

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266594B2 (en) * 2008-08-20 2012-09-11 International Business Machines Corporation System, method and program product for correcting semantic errors in code using peer submitted code snippets
CN106796543A (zh) * 2014-08-27 2017-05-31 飞索科技有限公司 源代码分析装置、用于该装置的计算机程序及其记录介质
CN104699611A (zh) * 2015-03-18 2015-06-10 北京航空航天大学 一种基于开源软件缺陷代码修改模式的缺陷信息提取方法
US9459848B1 (en) * 2015-05-29 2016-10-04 International Business Machines Corporation Obtaining correct compile results by absorbing mismatches between data types representations
CN104991858A (zh) * 2015-06-12 2015-10-21 扬州大学 一种面向代码修改的概要及标签自动生成方法
CN105389340A (zh) * 2015-10-20 2016-03-09 北京云知声信息技术有限公司 一种信息测试方法及装置
CN105701253A (zh) * 2016-03-04 2016-06-22 南京大学 中文自然语言问句语义化的知识库自动问答方法
US20190026264A1 (en) * 2016-03-23 2019-01-24 Nomura Research Institute, Ltd. Text analysis system and program
US20190138731A1 (en) * 2016-04-22 2019-05-09 Lin Tan Method for determining defects and vulnerabilities in software code
CN107967208A (zh) * 2016-10-20 2018-04-27 南京大学 一种基于深度神经网络的Python资源敏感缺陷代码检测方法
CN107256217A (zh) * 2017-04-19 2017-10-17 江苏师范大学 一种xml数据的快速查询方法
CN107015813A (zh) * 2017-04-19 2017-08-04 网易(杭州)网络有限公司 代码修复的方法、装置及电子设备
CN108932192A (zh) * 2017-05-22 2018-12-04 南京大学 一种基于抽象语法树的Python程序类型缺陷检测方法
CN109345908A (zh) * 2018-09-30 2019-02-15 上海畅学教育科技有限公司 可视化模块编程系统及其控制方法
CN109376092A (zh) * 2018-11-26 2019-02-22 扬州大学 一种面向缺陷补丁代码的软件缺陷原因自动分析方法
CN109491924A (zh) * 2018-12-21 2019-03-19 北京达佳互联信息技术有限公司 代码检测方法、装置、终端及存储介质
CN109919500A (zh) * 2019-03-13 2019-06-21 中南大学 具有基于本体的错误反馈功能的自动评分系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
周风顺等: "C/C++程序缺陷自动修复与确认方法", 《软件学报》 *
李德意等: "VB定位数据记录的方法 ", 《中国计算机用户》 *
王甜甜等: "示例演化驱动的学生程序自动修复 ", 《软件学报》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113129689A (zh) * 2019-12-31 2021-07-16 昆山峻优科技培训有限公司 一种编程教学端及系统

Also Published As

Publication number Publication date
CN110349477B (zh) 2022-01-07

Similar Documents

Publication Publication Date Title
Cline et al. A rule-based system for automatically evaluating student concept maps
Watson et al. Learning programming languages through corrective feedback and concept visualisation
Jiang et al. Programming trajectories analytics in block-based programming language learning
Feldman et al. Towards answering “Am I on the right track?” automatically using program synthesis
Huang et al. Supporting skill integration in an intelligent tutoring system for code tracing
Mahdaoui et al. Comparative study between automatic hint generation approaches in Intelligent Programming Tutors
Ho Chi et al. Automated Data-Driven Hint Generation in Intelligent Tutoring Systems for Code-Writing: On the Road of Future Research.
CN110349477A (zh) 一种基于历史学习行为的编程错误修复方法、系统及服务器
Suraweera et al. The role of domain ontology in knowledge acquisition for ITSs
Mendjoge et al. Review of knowledge representation techniques for Intelligent Tutoring System
Pahl et al. Interactive correction and recommendation for computer language learning and training
Chou et al. An educational tool for visualizing students' program tracing processes
Lienard et al. Extracting unit tests from patterns mined in student code to provide improved feedback in autograders
Prados et al. An automatic correction tool that can learn
Qiu et al. Making critiquing practical: Incremental development of educational critiquing systems
Kenny et al. Personalised correction, feedback and guidance in an automated tutoring system for skills training
Mansouri et al. PRAM: prolog automatic marker
Urazova Building a System for Automated Question Generation and Evaluation to Assist Students Learning UML Database Design
Gomes et al. A Machine Learning Approach for the Identification of Learners' Misconceptions in Algebraic Problem-Solving
Weeda et al. Unraveling novices’ code composition difficulties
Mungunsukh et al. An agent based programming language learning support system
Taniguchi et al. Visualizing Source-Code Evolution for Understanding Class-Wide Programming Processes. Sustainability 2022, 14, 8084
Price iSnap: Data-driven Support for Novice Programming Informed by Evaluations of Hint Quality and Investigations of Student Help-seeking Behavior
Wang Computational Approaches to Construct and Assess Knowledge Maps for Student Learning
Obaid Rule formation in simulation-based discovery learning: optimized clustering based on Levenshtein edit distance

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Duan Jiasheng

Inventor after: Xiao Licheng

Inventor after: Zhong Jin

Inventor after: He Zhenyuan

Inventor before: Huang Jingquan

Inventor before: Xiao Licheng

Inventor before: Duan Jiasheng

Inventor before: Zhong Jin

Inventor before: He Zhenyuan

CB03 Change of inventor or designer information
CB02 Change of applicant information

Address after: 410000 room 501-3, workshop 2, Debang biomedical park, No. 518, tongzipo West Road, Changsha high tech Development Zone, Changsha City, Hunan Province

Applicant after: Changsha Kude Network Technology Co.,Ltd.

Address before: 410000 room 501-3, workshop 2, Debang biomedical park, No. 518, tongzipo West Road, high tech Development Zone, Changsha, Hunan

Applicant before: Hunan Kude Network Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant