LAURA, A System to Debug Student Programs

An effort to automate the debugging of real programs is presented. We discuss possible choices in conceiving a debugging system. In order to detect all the semantic errors, it must have a knowledge of what the program is intended to achieve. Strategies and results are very dependent on the way of giving this knowledge. In the LAURA system that we have designed, the program's task is given by means of a 'program model'. Automatic debugging is then viewed as a comparison of programs. The main characteristics of LAURA are the representation of programs by graphs, which gets rid of many syntactical variations, the use of program transformations, realized on the graphs, and its heuristic strategy to identify step by step the elements of the graphs. It has been tested with about a hundred programs written by students to solve eight different problems in various fields. It is able to recognize correct programs even if their structures are very different from the structure of the program model. It is also able to express exact diagnostics of errors, or at least to localize them. It could be an effective tool for students programmers.

[1]  W. A. Martin,et al.  The MACSYMA system , 1971, SYMSAC '71.

[2]  Daniel Brand Analytic Resolution in Theorem Proving , 1976, Artif. Intell..

[3]  Susan L. Gerhart Knowledge about programs: A model and case study , 1975 .

[4]  N. Falconer Structured Programming , 1973, Nature.

[5]  John Darlington,et al.  A system which automatically improves programs , 1973, Acta Informatica.

[6]  Susan L. Gerhart,et al.  Knowledge about programs: A model and case study , 1975, Reliable Software.

[7]  Donald E. Knuth,et al.  Structured Programming with go to Statements , 1974, CSUR.

[8]  W. W. Bledsoe,et al.  Non-Resolution Theorem Proving , 1977, Artif. Intell..

[9]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[10]  Jacques Arsac La construction de programmes structurés , 1977 .

[11]  Gregory R. Ruth Intelligent Program Analysis , 1976, Artif. Intell..

[12]  Peter Naur Proof of Algorithms by General Snapshots , 1966 .

[13]  Ben Wegbreit Complexity of Synthesizing Inductive Assertions , 1977, JACM.

[14]  Karl N. Levitt,et al.  Reasoning about programs , 1973, Artif. Intell..

[15]  Dominique Pastre Automatic Theorem Proving in Set Theory , 1978, Artif. Intell..

[16]  F. Malloy Brown Doing Arithmetic Without Diagrams , 1977, Artif. Intell..

[17]  Zohar Manna,et al.  Knowledge and Reasoning in Program Synthesis , 1974, IJCAI.

[18]  James C. King,et al.  A Program Verifier , 1971, IFIP Congress.

[19]  Robert W. Floyd,et al.  Notes on Avoiding "go to" Statements , 1971, Information Processing Letters.

[20]  Robert S. Boyer,et al.  Proving Theorems about LISP Functions , 1973, JACM.

[21]  Zohar Manna,et al.  Logical analysis of programs , 1976, CACM.

[22]  Zohar Manna,et al.  A Heuristic Approach to Program Verification , 1973, IJCAI.

[23]  Richard C. T. Lee,et al.  An improved program-synthesizing algorithm and its correctness , 1974, CACM.

[24]  David B. Loveman,et al.  Program Improvement by Source-to-Source Transformation , 1977, J. ACM.

[25]  L GerhartSusan Knowledge about programs , 1975 .

[26]  Edsger W. Dijkstra,et al.  A constructive approach to the problem of program correctness , 1968 .