{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,20]],"date-time":"2026-02-20T04:13:19Z","timestamp":1771560799730,"version":"3.50.1"},"reference-count":46,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T00:00:00Z","timestamp":1540339200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by-nc-sa\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2018,10,24]]},"abstract":"<jats:p>We present FixML, a system for automatically generating feedback on logical errors in functional programming assignments. As functional languages have been gaining popularity, the number of students enrolling functional programming courses has increased significantly. However, the quality of feedback, in particular for logical errors, is hardly satisfying. To provide personalized feedback on logical errors, we present a new error-correction algorithm for functional languages, which combines statistical error-localization and type-directed program synthesis enhanced with components reduction and search space pruning using symbolic execution. We implemented our algorithm in a tool, called FixML, and evaluated it with 497 students\u2019 submissions from 13 exercises, including not only introductory but also more advanced problems. Our experimental results show that our tool effectively corrects various and complex errors: it fixed 43% of the 497 submissions in 5.4 seconds on average and managed to fix a hard-to-find error in a large submission, consisting of 154 lines. We also performed user study with 18 undergraduate students and confirmed that our system actually helps students to better understand their programming errors.<\/jats:p>","DOI":"10.1145\/3276528","type":"journal-article","created":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T11:57:18Z","timestamp":1540382238000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":21,"title":["Automatic diagnosis and correction of logical errors for functional programming assignments"],"prefix":"10.1145","volume":"2","author":[{"given":"Junho","family":"Lee","sequence":"first","affiliation":[{"name":"Korea University, South Korea"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Dowon","family":"Song","sequence":"additional","affiliation":[{"name":"Korea University, South Korea"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Sunbeom","family":"So","sequence":"additional","affiliation":[{"name":"Korea University, South Korea"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Hakjoo","family":"Oh","sequence":"additional","affiliation":[{"name":"Korea University, South Korea"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2018,10,24]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39799-8_67"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/604131.604140"},{"key":"e_1_2_2_3_1","unstructured":"Matej Balog Alexander L. Gaunt Marc Brockschmidt Sebastian Nowozin and Daniel Tarlow. 2017. DeepCoder: Learning to Write Programs. In ICLR.  Matej Balog Alexander L. Gaunt Marc Brockschmidt Sebastian Nowozin and Daniel Tarlow. 2017. DeepCoder: Learning to Write Programs. In ICLR."},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180219"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2535838.2535863"},{"key":"e_1_2_2_6_1","volume-title":"Qlose: Program Repair with Quantiative Objectives. (July","author":"D\u2019Antoni Loris","year":"2016"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062351"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009851"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/2737924.2737977"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1569901.1570031"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837614.2837629"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2006.12.032"},{"key":"e_1_2_2_13_1","first-page":"3","article-title":"Error Explanation with Distance","volume":"8","author":"Groce Alex","year":"2006","journal-title":"Metrics. Int. J. Softw. Tools Technol. Transf."},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926385.1926423"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635912"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/3192366.3192387"},{"key":"e_1_2_2_17_1","volume-title":"Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence","author":"Gupta Rahul","year":"2017"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/581339.581397"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993316.1993550"},{"key":"e_1_2_2_20_1","first-page":"10","article-title":"Apex","volume":"51","author":"Kim Dohyeong","year":"2016","journal-title":"Automatic Programming Assignment Error Explanation. SIGPLAN Not."},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486893"},{"key":"e_1_2_2_22_1","volume-title":"Proceedings of the 24th International Conference on Artificial Intelligence (IJCAI\u201915)","author":"Kini Dileep","year":"2015"},{"key":"e_1_2_2_23_1","doi-asserted-by":"crossref","unstructured":"Etienne Kneuss Manos Koukoutos and Viktor Kuncak. 2015. Deductive Program Repair. In Computer Aided Verification Daniel Kroening and Corina S. P\u0103s\u0103reanu (Eds.). Springer International Publishing Cham 217\u2013233.  Etienne Kneuss Manos Koukoutos and Viktor Kuncak. 2015. Deductive Program Repair. In Computer Aided Verification Daniel Kroening and Corina S. P\u0103s\u0103reanu (Eds.). Springer International Publishing Cham 217\u2013233.","DOI":"10.1007\/978-3-319-21668-3_13"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2544173.2509555"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.5555\/2157654.2157671"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.5555\/2337223.2337225"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250783"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/2914770.2837617"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486890"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/2737924.2738007"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2714064.2660230"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/2858949.2784765"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/2908080.2908093"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/2984043.2989222"},{"key":"e_1_2_2_35_1","volume-title":"Proceedings of the 18th IEEE International Conference on Automated Software Engineering (ASE\u201903)","author":"Renieris Manos"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/872757.872770"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3138818"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/2499370.2462195"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/2786805.2786825"},{"key":"e_1_2_2_40_1","volume-title":"SAS 2017, New York, NY, USA, August 30 - September 1, 2017, Proceedings. 364\u2013381","author":"So Sunbeom","year":"2017"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3192366.3192384"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2009.5070536"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133930"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133929"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133887"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/3121137"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276528","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3276528","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T19:03:39Z","timestamp":1750273419000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276528"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,10,24]]},"references-count":46,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2018,10,24]]}},"alternative-id":["10.1145\/3276528"],"URL":"https:\/\/doi.org\/10.1145\/3276528","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,10,24]]},"assertion":[{"value":"2018-10-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}