Automated clustering and program repair for introductory programming assignments
Abstract
Providing feedback on programming assignments is a tedious task for the instructor, and even impossible in large Massive Open Online Courses with thousands of students. Previous research has suggested that program repair techniques can be used to generate feedback in programming education. In this paper, we present a novel fully automated program repair algorithm for introductory programming assignments. The key idea of the technique, which enables automation and scalability, is to use the existing correct student solutions to repair the incorrect attempts. We evaluate the approach in two experiments: (I) We evaluate the number, size and quality of the generated repairs on 4,293 incorrect student attempts from an existing MOOC. We find that our approach can repair 97% of student attempts, while 81% of those are small repairs of good quality. (II) We conduct a preliminary user study on performance and repair usefulness in an interactive teaching setting. We obtain promising initial results (the average usefulness grade 3.4 on a scale from 1 to 5), and conclude that our approach can be used in an interactive setting.
The claims and statistics of this paper haven’t been checked yet.
Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.
Integrity signals
Registry
Cites
Statistics
Claims the paper makes
The claims and statistics of this paper haven’t been checked yet.
Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.
Claims other papers make about this one
Each is checked against this paper’s own text: does it say what the citing paper says it does?
CLARA clusters multiple correct implementations and selects the one that produces the smallest fix when aligned with the buggy program.
“CLARA clusters multiple correct implementations and selects the one that produces the smallest fix when aligned with the buggy program.”
From Counterexample Guided Program Repair Using Zero-Shot Learning and MaxSAT-based Fault Localization (2025) · cites this paper as Gulwani, Radicek, and Zuleger 2018
In “Constraint-Optimization Local Repairs” (page not specified), the paper says CLARA runs the repair algorithm on each cluster of correct programs and chooses the repair with the lowest syntactic-distance cost. But the claim says it selects one correct implementation; the “Summary” says a repair can combine expressions from multiple correct solutions within a cluster. (LLM, conf=0.87)
Experimental — accuracy not yet measuredBoth VERIFIX and CLARA require an exact match between control flow graphs and a bijective relationship between variables; otherwise they return a structural mismatch error.
“Both tools require an exact match between the control flow graphs (e.g., branches, loops) and a bijective relationship between the variables; otherwise, they return a structural mismatch error.”
From Counterexample Guided Program Repair Using Zero-Shot Learning and MaxSAT-based Fault Localization (2025) · cites this paper as Gulwani, Radicek, and Zuleger 2018
The Matching and §4 Matching and Clustering passages say CLARA requires matching control flow and defines program matching using a bijective variable relation. But Matching explicitly allows different branching structures when the looping structure matches, so an exact match of branches is not required. The paper does not establish VERIFIX’s requirements or say either tool returns a ‘structural mismatch error.’ (LLM, conf=0.89)
Experimental — accuracy not yet measuredOur method allows LLMs to repair more programs than other configurations and state-of-the-art symbolic program repair tools.
“This method enables LLMS to repair more programs and produce superior fixes with smaller patches, outperforming both other configurations and state-of-the-art symbolic program repair tools (Gulwani, Radicek, and Zuleger 2018; Ahmed et al. 2022).”
From Counterexample Guided Program Repair Using Zero-Shot Learning and MaxSAT-based Fault Localization (2025) · cites this paper as Gulwani, Radicek, and Zuleger 2018
Self-check
Percentages, sums and reported differences re-computed from the paper’s own numbers.
The self-check needs the paper’s full text.
Cites
The ManyBugs and IntroClass benchmarks for automated repair of C programs
Le Goues, C., Holtschulte, N., Smith, E. K., Brun, Y., Devanbu, P., Forrest, S., & Weimer, W. (2015) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2015.2454513 · Cited by 326 · see citing works
Flagged first, then by citations
Research works printed but not linked: 33
- Anne Adam and Jean-Pierre Laurent. 1980. LAURA, a system to debug student programs. Artificial Intelligence 15, 1âĂŞ2 (1980), 75 -122. h ps://doi.org/10.1016/0004-3702(80)90023-5 · DOI
- Andrea Arcuri. 2008. On the Automation of Fixing Software Bugs. In Companion of the 30th International Conference on Software Engi- neering (ICSE Companion '08). ACM, New York, NY, USA, 1003-1006. h ps://doi.org/10.1145/1370175.1370223 · DOI
- D. Beyer, A. Cimatti, A. Griggio, M. E. Keremoglu, S. F. University, and R. Sebastiani. 2009. Software model checking via large-block encoding. In 2009 Formal Methods in Computer-Aided Design. 25-32. h ps://doi.org/10.1109/FMCAD.2009.5351147 · DOI
- Satish Chandra, Emina Torlak, Shaon Barman, and Rastislav Bodik. 2011. Angelic Debugging. In Proceedings of the 33rd International Con- ference on Software Engineering (ICSE '11). ACM, New York, NY, USA, 121-130. h ps://doi.org/10.1145/1985793.1985811 · DOI
- Loris D'Antoni, Roopsha Samanta, and Rishabh Singh. 2016. Qlose: Program Repair with Quantitative Objectives. In Com- puter Aided Verification -28th International Conference, CAV 2016, Toronto, ON, Canada, July 17-23, 2016, Proceedings, Part II. 383-401. h p://dx.doi.org/10.1007/978-3-319-41540-6_21 · DOI
- Rajdeep Das, Umair Z. Ahmed, Amey Karkare, and Sumit Gul- wani. 2016. Prutor: A System for Tutoring CS1 and Collect- ing Student Programs for Analysis. CoRR abs/1608.03828 (2016). h p://arxiv.org/abs/1608.03828 · arXiv
- V. Debroy and W.E. Wong. 2010. Using Mutation to Automatically Suggest Fixes for Faulty Programs. In Software Testing, Verification and Validation (ICST), 2010 Third International Conference on. 65-74. h ps://doi.org/10.1109/ICST.2010.66 · DOI
- A. Drummond, Y. Lu, S. Chaudhuri, C. Jermaine, J. Warren, and S. Rixner. 2014. Learning to Grade Student Programs in a Massive Open Online Course. In Data Mining (ICDM), 2014 IEEE International Con- ference on. 785-790. h ps://doi.org/10.1109/ICDM.2014.142 · DOI
- Stephanie Forrest, ThanhVu Nguyen, Westley Weimer, and Claire Le Goues. 2009. A Genetic Programming Approach to Automated Software Repair. In Proceedings of the 11th Annual Conference on Ge- netic and Evolutionary Computation (GECCO '09). ACM, New York, NY, USA, 947-954. h ps://doi.org/10.1145/1569901.1570031 · DOI
- Elena L. Glassman, Jeremy Scott, Rishabh Singh, Philip Guo, and Robert Miller. 2014. OverCode: Visualizing Variation in Student Solu- tions to Programming Problems at Scale. In Proceedings of the Adjunct Publication of the 27th Annual ACM Symposium on User Interface Soft- ware and Technology (UIST'14 Adjunct). ACM, New York, NY, USA, 129-130. h ps://doi.org/10.1145/2658779.2658809 · DOI
- Divya Gopinath, Muhammad Zubair Malik, and Sarfraz Khurshid. 2011. Specification-based Program Repair Using SAT. In Pro- ceedings of the 17th International Conference on Tools and Algo- rithms for the Construction and Analysis of Systems: Part of the Joint European Conferences on Theory and Practice of Software (TACAS'11/ETAPS'11). Springer-Verlag, Berlin, Heidelberg, 173-188. h p://dl.acm.org/citation.cfm?id=1987389.1987408
- C. Le Goues, N. Holtschulte, E. K. Smith, Y. Brun, P. Devanbu, S. Forrest, and W. Weimer. 2015. The ManyBugs and Intro- Class Benchmarks for Automated Repair of C Programs. IEEE Transactions on Software Engineering 41, 12 (Dec 2015), 1236-1256. h ps://doi.org/10.1109/TSE.2015.2454513 · DOI · Paper page
- Sumit Gulwani, Ivan Radiček, and Florian Zuleger. 2014. Feedback Generation for Performance Problems in Introductory Programming Assignments. In Proceedings of the 22Nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2014). ACM, New York, NY, USA, 41-51. h ps://doi.org/10.1145/2635868.2635912 · DOI
- Andrew Head, Elena Glassman, Gustavo Soares, Ryo Suzuki, Lu- cas Figueredo, Loris D'Antoni, and Björn Hartmann. 2017. Writ- ing Reusable Code Feedback at Scale with Mixed-Initiative Pro- gram Synthesis. In Proceedings of the Fourth (2017) ACM Conference on Learning @ Scale (L@S '17). ACM, New York, NY, USA, 89-98. h ps://doi.org/10.1145/3051457.3051467 · DOI
- Petri Ihantola, Tuukka Ahoniemi, Ville Karavirta, and Otto Sep- pälä. 2010. Review of Recent Systems for Automatic Assess- ment of Programming Assignments. In Proceedings of the 10th Koli Calling International Conference on Computing Education Re- search (Koli Calling '10). ACM, New York, NY, USA, 86-93. h ps://doi.org/10.1145/1930464.1930480 · DOI
- Barbara Jobstmann, Andreas Griesmayer, and Roderick Bloem. 2005. Program Repair As a Game. In Proceedings of the 17th International Conference on Computer Aided Verification (CAV'05). Springer-Verlag, Berlin, Heidelberg, 226-238. h ps://doi.org/10.1007/11513988_23 · DOI
- Shalini Kaleeswaran, Anirudh Santhiar, Aditya Kanade, and Sumit Gulwani. 2016. Semi-supervised Verified Feedback Generation. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2016). ACM, New York, NY, USA, 739-750. h ps://doi.org/10.1145/2950290.2950363 · DOI
- Yalin Ke, Kathryn T. Stolee, Claire Le Goues, and Yuriy Brun. 2015. Re- pairing Programs with Semantic Code Search (T). In Proceedings of the 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE) (ASE '15). IEEE Computer Society, Washington, DC, USA, 295-306. h p://dx.doi.org/10.1109/ASE.2015.60 · DOI
- Dohyeong Kim, Yonghwi Kwon, Peng Liu, I. Luk Kim, David Mitchel Perry, Xiangyu Zhang, and Gustavo Rodriguez-Rivera. 2016. Apex: Automatic Programming Assignment Error Explanation. In Proceedings of the 2016 ACM SIGPLAN International Confer- ence on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016). ACM, New York, NY, USA, 311-327. h ps://doi.org/10.1145/2983990.2984031 · DOI
- Robert Könighofer and Roderick Bloem. 2011. Automated Er- ror Localization and Correction for Imperative Programs. In Pro- ceedings of the International Conference on Formal Methods in Computer-Aided Design (FMCAD '11). FMCAD Inc, Austin, TX, 91- 100. h p://dl.acm.org/citation.cfm?id=2157654.2157671
- Fan Long and Martin Rinard. 2016. Automatic Patch Generation by Learning Correct Code. SIGPLAN Not. 51, 1 (Jan. 2016), 298-312. h p://doi.acm.org/10.1145/2914770.2837617 · DOI
- Ken Masters. 2011. A Brief Guide To Understanding MOOCs. The Internet Journal of Medical Education 1, 2 (2011). h ps://doi.org/10.5580/1f21 · DOI
- Andy Nguyen, Christopher Piech, Jonathan Huang, and Leonidas Guibas. 2014. Codewebs: Scalable Homework Search for Massive Open Online Programming Courses. In Proceedings of the 23rd Inter- national Conference on World Wide Web (WWW '14). ACM, New York, NY, USA, 491-502. h ps://doi.org/10.1145/2566486.2568023 · DOI
- Kelly Rivers and Kenneth R. Koedinger. 2017. Data-Driven Hint Gen- eration in Vast Solution Spaces: a Self-Improving Python Program- ming Tutor. International Journal of Artificial Intelligence in Education 27, 1 (01 Mar 2017), 37-64. h ps://doi.org/10.1007/s40593-015-0070-z · DOI
- Reudismam Rolim, Gustavo Soares, Loris D'Antoni, Oleksandr Polo- zov, Sumit Gulwani, Rohit Gheyi, Ryo Suzuki, and Björn Hartmann. 2017. Learning Syntactic Program Transformations from Exam- ples. In Proceedings of the 39th International Conference on Software Engineering (ICSE '17). IEEE Press, Piscataway, NJ, USA, 404-415. h ps://doi.org/10.1109/ICSE.2017.44 · DOI
- Rishabh Singh, Sumit Gulwani, and Armando Solar-Lezama. 2013. Automated Feedback Generation for Introductory Programming As- signments. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '13). ACM, New York, NY, USA, 15-26. h ps://doi.org/10.1145/2491956.2462195 · DOI
- Stefan Staber, Barbara Jobstmann, and Roderick Bloem. 2005. Finding and Fixing Faults. In Correct Hardware Design and Verification Meth- ods, Dominique Borrione and Wolfgang Paul (Eds.). Lecture Notes in Computer Science, Vol. 3725. Springer Berlin Heidelberg, 35-49. h ps://doi.org/10.1007/11560548_6 · DOI
- Ryo Suzuki, Gustavo Soares, Elena Glassman, Andrew Head, Loris D'Antoni, and Björn Hartmann. 2017. Exploring the Design Space of Automatically Synthesized Hints for Introduc- tory Programming Assignments. In Proceedings of the 2016 CHI Conference Extended Abstracts on Human Factors in Computing Systems (CHI EA '17). ACM, New York, NY, USA, 2951-2958. h ps://doi.org/10.1145/3027063.3053187 · DOI
- Kuo-Chung Tai. 1979. The Tree-to-Tree Correction Problem. J. ACM 26, 3 (July 1979), 422-433. h ps://doi.org/10.1145/322139.322143 · DOI
- Nikolai Tillmann, Judith Bishop, R. Nigel Horspool, Daniel Perelman, and Tao Xie. 2014. Code Hunt: Searching for Secret Code for Fun. Proceedings of the International Con- ference on Software Engineering (Workshops) (June 2014). h p://research.microso .com/apps/pubs/default.aspx?id=210651
- Nikolai Tillmann, Jonathan De Halleux, Tao Xie, Sumit Gul- wani, and Judith Bishop. 2013. Teaching and Learning Pro- gramming and Software Engineering via Interactive Gam- ing. In Proc. 35th International Conference on Software En- gineering (ICSE 2013), Software Engineering Education (SEE). h p://www.cs.illinois.edu/homes/taoxie/publications/icse13see-pex4fun.pdf
- Jooyong Yi, Umair Z. Ahmed, Amey Karkare, Shin Hwei Tan, and Ab- hik Roychoudhury. 2017. A Feasibility Study of Using Automated Program Repair for Introductory Programming Assignments. In Pro- ceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2017). ACM, New York, NY, USA, 740-751. h ps://doi.org/10.1145/3106237.3106262 · DOI
- K. Zhang and D. Shasha. 1989. Simple Fast Algorithms for the Editing Distance Between Trees and Related Problems. SIAM J. Comput. 18, 6 (Dec. 1989), 1245-1262. h ps://doi.org/10.1137/0218082 · DOI
Cited by
Sorted by citations
Automated Grading and Feedback Tools for Programming Education: A Systematic Review
Messer, M., Brown, N. C. C., Kölling, M., & Shi, M. (2024) · ACM Transactions on Computing Education · doi:10.1145/3636515 · Cited by 262 · see citing works
Students’ Perceptions and Preferences of Generative Artificial Intelligence Feedback for Programming
Zhang, Z., Dong, Z., Shi, Y., Price, T., Matsuda, N., & Xu, D. (2024) · Proceedings of the AAAI Conference on Artificial Intelligence · doi:10.1609/aaai.v38i21.30372 · Cited by 54 · see citing works
CREF: An LLM-Based Conversational Software Repair Framework for Programming Tutors
Yang, B., Tian, H., Pian, W., Yu, H., Wang, H., Klein, J., Bissyandé, T. F., & Jin, S. (2024) · Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis · doi:10.1145/3650212.3680328 · Cited by 41 · see citing works
Counterexample Guided Program Repair Using Zero-Shot Learning and MaxSAT-based Fault Localization
Orvalho, P., Janota, M., & Manquinho, V. (2025) · arXiv · doi:10.48550/arxiv.2502.07786 · Cited by 4 · see citing works
- Authors
- Gulwani, S., Radiček, I., & Zuleger, F.
- Affiliations
- Microsoft, USA
- Vienna University of Technology, Austria
- Venue
- ACM SIGPLAN Notices
- Published
- 2018-06-11
- Volume
- 53
- Issue
- 4
- Pages
- 465-480
- ISSN
- 0362-1340
- 1558-1160
- Cited by
- 55
- References
- 1
- Language
- en
About these checks
Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.
Statistics and arithmetic are recomputed, not judged.
Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.
What counts as a claim ›How we measure confidence ›How we check this ›
Are you an author, or do you see a problem with this page? Request a review