Source Themes

GitSEED: A Git-backed Automated Assessment Tool for Software Engineering and Programming Education, SIGCSE Virtual 2024

This paper introduces GitSEED, a language-agnostic automated assessment tool designed for Programming Education and Software Engineering (SE) and backed by GitLab.

CFaults: Model-Based Diagnosis for Fault Localization in C with Multiple Test Cases, FM 2024

This paper introduces a novel fault localization approach for C programs with multiple faults. CFaults leverages Model-Based Diagnosis (MBD) with multiple observations and aggregates all failing test cases into a unified MaxSAT formula. Consequently, our method guarantees consistency across observations and simplifies the fault localization procedure.

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

A C90 Program Benchmark of Introductory Programming Assignments (IPAs), that contains semantically correct, semantically incorrect, and syntactically incorrect programs and a test suite for each IPA.

Graph Neural Networks For Mapping Variables Between Programs, ECAI 2023

In this work, we propose using graph neural networks (GNNs) to map the set of variables between two programs based on both programs' abstract syntax trees (ASTs). To demonstrate the strength of variable mappings, we present three use-cases of these mappings on the task of program repair to fix well-studied and recurrent bugs among novice programmers in introductory programming assignments (IPAs).

UpMax: User partitioning for MaxSAT, SAT 2023

This paper proposes a new framework called UpMax that decouples the partitioning procedure from the MaxSAT solving algorithms. As a result, new partitioning procedures can be defined independently of the MaxSAT algorithm to be used. Moreover, this decoupling also allows users that build new MaxSAT formulas to propose partition schemes based on knowledge of the problem to be solved.

MultIPAs: Applying Program Transformations to Introductory Programming Assignments for Data Augmentation, ESEC/FSE 2022

This paper presents MultIPAs, a program transformation tool that can augment IPAs benchmarks by (1) applying six syntactic mutations that conserve the program's semantics and (2) applying three semantic mutilations that introduce faults in the IPAs.

Project Proposal: Learning Variable Mappings to Repair Programs, AITP 2022

In this position paper, we propose to learn how to map the set of variables between different small imperative programs based on both programs' abstract syntax trees (ASTs) using graph neural networks (GNNs).

AlloyMax: Bringing Maximum Satisfaction to Relational Specifications, ESEC/FSE 2021

Alloy is a declarative modeling language based on a first-order relational logic. Its constraint-based analysis has enabled a wide range of applications in software engineering, including configuration synthesis, bug finding, test-case generation, …

SQUARES: A SQL Synthesizer Using Query Reverse Engineering, VLDB 2020

In this paper, we present SQUARES, an open-source tool that generates SQL and R queries from specifications. The specifications are expressed with input-output tables and some optional hints provided by the user. SQUARES is grounded on constraint programming techniques.

Encodings for Enumeration-Based Program Synthesis, CP 2019

In this paper, a new compact line-based encoding is proposed that allows a faster enumeration of the program space.