Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
PROUST: Knowledge-Based Program Understanding
IEEE Transactions on Software Engineering
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Identifying the semantic and textual differences between two versions of a program
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
A program integration algorithm that accommodates semantics-preserving transformations
ACM Transactions on Software Engineering and Methodology (TOSEM)
Program Concept Recognition and Transformation
IEEE Transactions on Software Engineering - Special issue on software maintenance
Exploiting program schemata in an automated program debugger
Journal of Artificial Intelligence in Education
PASS: an automated system for program assessment
Computers & Education
Advanced compiler design and implementation
Advanced compiler design and implementation
Program Improvement by Source-to-Source Transformation
Journal of the ACM (JACM)
Automatic Program DeBugging for Intelligent Tutoring Systems
Automatic Program DeBugging for Intelligent Tutoring Systems
Algorithmic Program DeBugging
A Knowledge-Based Approach to Program Understanding
A Knowledge-Based Approach to Program Understanding
Cognitive Models and Intelligent Environments for Learning Programming
Cognitive Models and Intelligent Environments for Learning Programming
Introduction To Automata Theory, Languages, And Computation
Introduction To Automata Theory, Languages, And Computation
Automatic Problem Description from Model Program for Knowledge-based Programming Tutor
Automated Software Engineering
Recognizing a Program's Design: A Graph-Parsing Approach
IEEE Software
Using Functional Models in Automatic Debugging
IEEE Expert: Intelligent Systems and Their Applications
Semantic Diff: A Tool for Summarizing the Effects of Modifications
ICSM '94 Proceedings of the International Conference on Software Maintenance
Semantic similarity-based grading of student programs
Information and Software Technology
Constraint-based Error Diagnosis in Logic Programming
Proceedings of the 2005 conference on Towards Sustainable and Scalable Educational Innovations Informed by the Learning Sciences: Sharing Good Practices of Research, Experimentation and Innovation
Using strategies for assessment of programming exercises
Proceedings of the 41st ACM technical symposium on Computer science education
Edutainment'10 Proceedings of the Entertainment for education, and 5th international conference on E-learning and games
An interactive functional programming tutor
Proceedings of the 17th ACM annual conference on Innovation and technology in computer science education
A canonicalizing model for building programming tutors
ITS'12 Proceedings of the 11th international conference on Intelligent Tutoring Systems
A programming tutor for haskell
CEFP'11 Proceedings of the 4th Summer School conference on Central European Functional Programming School
Codewebs: scalable homework search for massive open online programming courses
Proceedings of the 23rd international conference on World wide web
Hi-index | 0.00 |
A robust technology that automates the diagnosis of students' programs is essential for programming tutoring systems. Such technology should be able to determine whether programs coded by a student are correct. If a student's program is incorrect, the system should be able to pinpoint errors in the program as well as explain and correct the errors. Due to the difficulty of this problem, no existing system performs this task entirely satisfactorily, and this problem still hampers the development of programming tutoring systems. This paper describes a transformation-based approach to automate the diagnosis of students' programs for programming tutoring systems. Improved control-flow analysis and data-flow analysis are used in program analysis. Automatic diagnosis of student programs is achieved by comparing the student program with a specimen program at the semantic level after both are standardized. The approach was implemented and tested on 525 real student programs for nine different programming tasks. Test results show that the method satisfies the requirements stated above. Compared to other existing approaches to automatic diagnosis of student programs, the approach developed here is more rigorous and safer in identifying student programming errors. It is also simpler to make use of in practice. Only specimen programs are needed for the diagnosis of student programs. The techniques of program standardization and program comparison developed here may also be useful for research in the fields of program understanding and software maintenance.