Intention-based diagnosis of errors in novice programs (program understanding, debugging, intelligent computer-aided instruction)

This thesis investigates the process whereby faults are diagnosed and corrected in human-designed artifacts in general, and in computer programs in particular. Established automatic diagnostic techniques are useful in cases where the artifact design is known to be correct, but they are inadequate when the design itself may be faulty. Instead, it is necessary for the diagnostician to identify the intentions underlying the design of the artifact and reason about these intentions in order to identify and correct faults. In other words, the diagnostician must understand the artifact in order to correct it. Such understanding is doubly necessary if the designer is a student, and the diagnostician is a teacher who is trying to find out why the student is having difficulties. Intention-based error diagnosis has been implemented in a program called PROUST, which identifies non-syntactic bugs in programs written by novice Pascal programmers. Empirical studies of PROUST's performance show that it achieves high performance in finding bugs in non-trivial student programs.