PROUST: Knowledge-Based Program Understanding
IEEE Transactions on Software Engineering
Grading student programs using ASSYST
SIGCSE '97 Proceedings of the twenty-eighth SIGCSE technical symposium on Computer science education
RoboProf and an introductory computer programming course
ITiCSE '99 Proceedings of the 4th annual SIGCSE/SIGCUE ITiCSE conference on Innovation and technology in computer science education
An automatic grading scheme for simple programming exercises
Communications of the ACM
Simplifying and Isolating Failure-Inducing Input
IEEE Transactions on Software Engineering
From symptom to cause: localizing errors in counterexample traces
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Programming by sketching for bit-streaming programs
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Automatic test-based assessment of programming: A review
Journal on Educational Resources in Computing (JERIC)
Error explanation with distance metrics
International Journal on Software Tools for Technology Transfer (STTT)
On the automation of fixing software bugs
Companion of the 30th international conference on Software engineering
Program analysis as constraint solving
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
A genetic programming approach to automated software repair
Proceedings of the 11th Annual conference on Genetic and evolutionary computation
QUICKXPLAIN: preferred explanations and relaxations for over-constrained problems
AAAI'04 Proceedings of the 19th national conference on Artifical intelligence
Meno-II: an intelligent tutoring system for novice programmers
IJCAI'81 Proceedings of the 7th international joint conference on Artificial intelligence - Volume 2
From program verification to program synthesis
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Abstraction-guided synthesis of synchronization
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Programming with angelic nondeterminism
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program synthesis by sketching
Program synthesis by sketching
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Using Mutation to Automatically Suggest Fixes for Faulty Programs
ICST '10 Proceedings of the 2010 Third International Conference on Software Testing, Verification and Validation
TurKit: human computation algorithms on mechanical turk
UIST '10 Proceedings of the 23nd annual ACM symposium on User interface software and technology
Soylent: a word processor with a crowd inside
UIST '10 Proceedings of the 23nd annual ACM symposium on User interface software and technology
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Synthesizing geometry constructions
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Cause clue clauses: error localization using maximum satisfiability
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Synthesizing data structure manipulations from storyboards
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
CHARME'05 Proceedings of the 13 IFIP WG 10.5 international conference on Correct Hardware Design and Verification Methods
Automated error localization and correction for imperative programs
Proceedings of the International Conference on Formal Methods in Computer-Aided Design
Learning semantic string transformations from examples
Proceedings of the VLDB Endowment
Spreadsheet data manipulation using examples
Communications of the ACM
Concurrent data representation synthesis
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
A trace-based framework for analyzing and synthesizing educational progressions
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Increasing human-tool interaction via the web
Proceedings of the 11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering
Toward facilitating assistance to students attempting engineering design problems
Proceedings of the ninth annual international ACM conference on International computing education research
Automatically generating problems and solutions for natural deduction
IJCAI'13 Proceedings of the Twenty-Third international joint conference on Artificial Intelligence
Hi-index | 0.00 |
We present a new method for automatically providing feedback for introductory programming problems. In order to use this method, we need a reference implementation of the assignment, and an error model consisting of potential corrections to errors that students might make. Using this information, the system automatically derives minimal corrections to student's incorrect solutions, providing them with a measure of exactly how incorrect a given solution was, as well as feedback about what they did wrong. We introduce a simple language for describing error models in terms of correction rules, and formally define a rule-directed translation strategy that reduces the problem of finding minimal corrections in an incorrect program to the problem of synthesizing a correct program from a sketch. We have evaluated our system on thousands of real student attempts obtained from the Introduction to Programming course at MIT (6.00) and MITx (6.00x). Our results show that relatively simple error models can correct on average 64% of all incorrect submissions in our benchmark set.