InvAASTCluster: On Applying Invariant-Based Program Clustering to Introductory Programming Assignments

06/28/2022
by   Pedro Orvalho, et al.
0

Due to the vast number of students enrolled in Massive Open Online Courses (MOOCs), there has been an increasing number of automated program repair techniques focused on introductory programming assignments (IPAs). Such state-of-the-art techniques use program clustering to take advantage of previous correct student implementations to repair a given new incorrect submission. Usually, these repair techniques use clustering methods since analyzing all available correct student submissions to repair a program is not feasible. The clustering methods use program representations based on several features such as abstract syntax tree (AST), syntax, control flow, and data flow. However, these features are sometimes brittle when representing semantically similar programs. This paper proposes InvAASTCluster, a novel approach for program clustering that takes advantage of dynamically generated program invariants observed over several program executions to cluster semantically equivalent IPAs. Our main objective is to find a more suitable representation of programs using a combination of the program's semantics, through its invariants, and its structure, through its anonymized abstract syntax tree. The evaluation of InvAASTCluster shows that the proposed program representation outperforms syntax-based representations when clustering a set of different correct IPAs. Furthermore, we integrate InvAASTCluster into a state-of-the-art clustering-based program repair tool and evaluate it on a set of IPAs. Our results show that InvAASTCluster advances the current state-of-the-art when used by clustering-based program repair tools by repairing a larger number of students' programs in a shorter amount of time.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
06/17/2022

C-Pack of IPAs: A C90 Program Benchmark of Introductory Programming Assignments

Due to the vast number of students enrolled in Massive Open Online Cours...
research
07/24/2023

Graph Neural Networks For Mapping Variables Between Programs – Extended Version

Automated program analysis is a pivotal research domain in many areas of...
research
01/15/2021

Automating Program Structure Classification

When students write programs, their program structure provides insight i...
research
09/29/2022

Repairing Bugs in Python Assignments Using Large Language Models

Students often make mistakes on their introductory programming assignmen...
research
03/19/2016

Automated Correction for Syntax Errors in Programming Assignments using Recurrent Neural Networks

We present a method for automatically generating repair feedback for syn...
research
11/20/2017

Dynamic Neural Program Embedding for Program Repair

Neural program embeddings have shown much promise recently for a variety...
research
08/28/2020

On the Performance of Bytecode Interpreters in Prolog

The semantics and the recursive execution model of Prolog make it very n...

Please sign up or login with your details

Forgot password? Click here to reset