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
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
Recognizing a Program's Design: A Graph-Parsing Approach
IEEE Software
Developing intelligent programming tutors for novice programmers
ACM SIGCSE Bulletin
Hi-index | 0.00 |
This paper describes a method to automate the diagnosis of students' programming errors in programming learning environments. In order to recognize correct students' programs as well as to identify errors in incorrect student programs, programs are represented using an improved dependence graph representation. The student program is compared with a specimen program (also called a model program) at the semantic level after both are standardized by program transformations. The method is implemented using Smalltalk in SIPLeS-II, an automatic program diagnosis system for Samlltalk programming learning environments. The system has been tested on approximately 330 student programs for various tasks. Experimental results show that, using the method, semantic errors in a student program can be identified rigorously and safely. Semantics-preserving variations in a student program can be eliminated or accommodated. The tests also show that the system can identify a wide range of errors as well as produce indications of the corrections needed. This method is essential for the development of programming learning environments. The techniques of the improved program dependence graph representation, program standardization by transformations, and semantic level program comparison are also useful in other research fields including program understanding and software maintenance.