Abstract
Automated program repair is a promising approach to deliver feedback to novice learners at scale. CLARA is an effective repairer that uses a correct program to fix an incorrect program. CLARA suffers from two main issues: rigid matching and lack of support for typical constructs and tasks in introductory programming assignments. We present several modifications to CLARA to overcome these problems. We propose approximate graph matching based on semantic and topological information of the programs compared, and modify CLARA’s abstract syntax tree processor and interpreter to support new constructs and tasks like reading from/writing to console. Our experiments show that, thanks to our modifications, we can apply CLARA to real-world programs. Also, our approximate graph matching allows us to repair many incorrect programs that are not repaired using rigid program matching.
This material is based upon work supported by the National Science Foundation under Grant No. 1915404.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Approximate graph matching for CLARA. github.com/mcontractor/clara/
CLuster And RepAir tool for introductory programming assignments. github.com/iradicek/clara/
Less or equal. codeforces.com/problemset/problem/977/C
Who’s opposite? codeforces.com/problemset/problem/1560/B
Camp, T., Zweben, S.H., Buell, D.A., Stout, J.: Booming enrollments: survey data. In: SIGCSE, pp. 398–399 (2016)
Gulwani, S., Radicek, I., Zuleger, F.: Automated clustering and program repair for introductory programming assignments. In: PLDI, pp. 465–480 (2018)
Hu, Y., Ahmed, U.Z., Mechtaev, S., Leong, B., Roychoudhury, A.: Re-factoring based program repair applied to programming assignments. In: ASE, pp. 388–398 (2019)
Marin, V.J., Contractor, M.R., Rivero, C.R.: Flexible program alignment to deliver data-driven feedback to novice programmers. In: ITS, pp. 247–258 (2021)
Marin, V.J., Pereira, T., Sridharan, S., Rivero, C.R.: Automated personalized feedback in introductory Java programming MOOCs. In: ICDE, pp. 1259–1270 (2017)
Marin, V.J., Rivero, C.R.: Clustering recurrent and semantically cohesive program statements in introductory programming assignments. In: CIKM, pp. 911–920 (2019)
Monperrus, M.: Automatic software repair: a bibliography. CSUR 51(1), 1–24 (2018)
Piech, C., Huang, J., Nguyen, A., Phulsuksombati, M., Sahami, M., Guibas, L.J.: Learning program embeddings to propagate feedback on student code. In: ICML, pp. 1093–1102 (2015)
Pu, Y., Narasimhan, K., Solar-Lezama, A., Barzilay, R.: sk_p: a neural program corrector for MOOCs. In: OOPSLA Workshops, pp. 39–40 (2016)
Rolim, R., et al.: Learning syntactic program transformations from examples. In: ICSE, pp. 404–415 (2017)
Singh, R., Gulwani, S., Solar-Lezama, A.: Automated feedback generation for introductory programming assignments. In: PLDI, pp. 15–26 (2013)
Wang, K., Singh, R., Su, Z.: Search, align, and repair: data-driven feedback generation for introductory programming exercises. In: PLDI, pp. 481–495 (2018)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Contractor, M.R., Rivero, C.R. (2022). Improving Program Matching to Automatically Repair Introductory Programs. In: Crossley, S., Popescu, E. (eds) Intelligent Tutoring Systems. ITS 2022. Lecture Notes in Computer Science, vol 13284. Springer, Cham. https://doi.org/10.1007/978-3-031-09680-8_30
Download citation
DOI: https://doi.org/10.1007/978-3-031-09680-8_30
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-09679-2
Online ISBN: 978-3-031-09680-8
eBook Packages: Computer ScienceComputer Science (R0)