Automatic diagnosis and correction of logical errors for functional programming assignments

Junho Lee, Dowon Song, Sunbeom So, Hakjoo Oh

    Research output: Contribution to journalArticlepeer-review

    17 Citations (Scopus)

    Abstract

    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' 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.

    Original languageEnglish
    Article number158
    JournalProceedings of the ACM on Programming Languages
    Volume2
    Issue numberOOPSLA
    DOIs
    Publication statusPublished - 2018 Nov

    Bibliographical note

    Publisher Copyright:
    © 2018 Copyright held by the owner/author(s).

    Keywords

    • Automated Program Repair
    • Program Synthesis

    ASJC Scopus subject areas

    • Software
    • Safety, Risk, Reliability and Quality

    Fingerprint

    Dive into the research topics of 'Automatic diagnosis and correction of logical errors for functional programming assignments'. Together they form a unique fingerprint.

    Cite this