FAPR: Fast and Accurate Program Repair for Introductory Programming Courses
Not on the map. Why?
Abstract (arXiv)
In introductory programming courses, it is challenging for instructors to provide debugging feedback on students' incorrect programs. Some recent tools automatically offer program repair feedback by identifying any differences between incorrect and correct programs, but suffer from issues related to scalability, accuracy, and cross-language portability. This paper presents FAPR -- our novel approach that suggests repairs based on program differences in a fast and accurate manner. FAPR is different from current tools in three aspects. First, it encodes syntactic information into token sequences to enable high-speed comparison between incorrect and correct programs. Second, to accurately extract program differences, FAPR adopts a novel matching algorithm that maximizes token-level matches and minimizes statement-level differences. Third, FAPR relies on testing instead of static/dynamic analysis to validate and refine candidate repairs, so it eliminates the language dependency or high runtime overhead incurred by complex program analysis. We implemented FAPR to suggest repairs for both C and C++ programs; our experience shows the great cross-language portability of FAPR. More importantly, we empirically compared FAPR with a state-of-the-art tool Clara. FAPR suggested repairs for over 95.5% of incorrect solutions. We sampled 250 repairs among FAPR's suggestions, and found 89.6% of the samples to be minimal and correct. FAPR outperformed Clara by suggesting repairs for more cases, creating smaller repairs, producing higher-quality fixes, and causing lower runtime overheads. Our results imply that FAPR can potentially help instructors or TAs to effectively locate bugs in incorrect code, and to provide debugging hints/guidelines based on those generated repairs.
Key facts. Cited by 4 papers in the map (data through 13 Oct 2026). First posted on arXiv 14 Jul 2021.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2022: 3; 2023: 1.
4 papers.
- 2022Repairing Bugs in Python Assignments Using Large Language Modelscited by 28
- 2022InvAASTCluster: On Applying Invariant-Based Program Clustering to Introductory Programming Assignmentscited by 4
- 2022A Survey on Artificial Intelligence for Source Code: A Dialogue Systems Perspectivecited by 3
- 2023Program Repair with Minimal Edits Using CodeT5cited by 2
- 2023Program Repair with Minimal Edits Using CodeT526 Sep 2023
- 2022Repairing Bugs in Python Assignments Using Large Language Models29 Sep 2022
- 2022InvAASTCluster: On Applying Invariant-Based Program Clustering to Introductory Programming Assignments28 Jun 2022
- 2022A Survey on Artificial Intelligence for Source Code: A Dialogue Systems Perspective10 Feb 2022