{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/automated-clustering-and-program-repair-for","title":"Automated Clustering and Program Repair for Introductory Programming Assignments","arxiv_id":"1603.03165","date":"2016-03-10","proceeding":null,"authors":["Sumit Gulwani","Ivan Radiček","Florian Zuleger"],"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.","url_abs":"https://arxiv.org/abs/1603.03165v4","url_pdf":"https://arxiv.org/pdf/1603.03165v4.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"automated-clustering-and-program-repair-for","repo_url":"https://github.com/iradicek/clara","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"automated-clustering-and-program-repair-for","repo_url":"https://github.com/sutd-automated-programming-tools/clara-api-server","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"automated-clustering-and-program-repair-for","repo_url":"https://github.com/sutd-automated-programming-tools/clara-s","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"GPL-3.0"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=1603.03165","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1603.03165"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/iradicek/clara","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/sutd-automated-programming-tools/clara-s","reach":{"status":"ok","spdx":"GPL-3.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/sutd-automated-programming-tools/clara-api-server","reach":null}],"summary":{"ran_draft_wrong":2,"unverified":1},"by_repo_kind":{"official":{"samples":1,"ran":1,"repositories":1},"listed":{"samples":2,"ran":1,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":3,"samples":[{"code_sha256_prefix":"fa58ee1b1bc9656f","entry":"computeDeriv","repo":"iradicek/clara","repo_kind":"official","path":"examples/c1.py","file_url":"https://github.com/iradicek/clara/blob/HEAD/examples/c1.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"fa58ee1b1bc9656f"}},{"code_sha256_prefix":"0fb74354448b975f","entry":"label_dist","repo":"sutd-automated-programming-tools/clara-api-server","repo_kind":"listed","path":"clara/repair.py","file_url":"https://github.com/sutd-automated-programming-tools/clara-api-server/blob/HEAD/clara/repair.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"0fb74354448b975f"}},{"code_sha256_prefix":"22124d6484c1598d","entry":"unprimes","repo":"sutd-automated-programming-tools/clara-api-server","repo_kind":"listed","path":"clara/repair.py","file_url":"https://github.com/sutd-automated-programming-tools/clara-api-server/blob/HEAD/clara/repair.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"22124d6484c1598d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}