Knowledge base compilation and the language design game

  • Warren Sack
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 608)


The ProgramCritic is a system designed to analyze and critique students' computer programs. After analyzing a program, the ProgramCritic provides the student with a list of Englishlanguage comments detailing the strengths and weaknesses of the student's program. The foundation of the ProgramCritic's analytic abilities is a set of “knowledge bases” which describe a range of programming problems and the ways in which parts of the problem can be solved. Several other systems have been built by other researchers with a functionality similar to the ProgramCritic's; notable among them is PROUST [Johnson 1986], Differences between the ProgramCritic and PROUST are described through a detailed explanation of how one might build a compiler for PROUST's knowledge base language. Shortcomings with PROUST's knowledge base language are pointed out one-by-one and for each shortcoming a fix is proposed. Integrating the proposed fixes together serves to explain the knowledge base language used in the ProgramCritic.


Language Game Plan Language Variable Binding Abstract Syntax Tree Declarative Semantic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. •.
    Anderson, John R. (1983) The Architecture of Cognition, Harvard University Press, Cambridge, MA.Google Scholar
  2. •.
    Brown, J.S. and Burton, R. (1978) Diagnostic models for procedural bugs in basic mathematics skills, Cognitive Science, 2, 155–192.Google Scholar
  3. •.
    Brown, John Seely and VanLehn, Kurt (1980) Repair theory: a generative theory of bugs in procedural skills, Cognitive Science, 2.Google Scholar
  4. •.
    Chapman, David et al. (1987) How to be a graduate student at the MIT AI Lab, MIT AI Lab Memo, Cambridge, MA.Google Scholar
  5. •.
    Charniak, Eugene, Riesbeck, Christopher, McDermott, Drew and Meehan, James (1986) Artificial Intelligence Programming, 2nd Edition, Lawrence Erlbaum associates.Google Scholar
  6. •.
    Johnson, W. Lewis (1985) Intention-Based Diagnosis of Errors in Novice Programs, Yale University Computer Science Department Research Report #395, New Haven, CT.Google Scholar
  7. •.
    Johnson, W. Lewis (1986) Intention-Based Diagnosis of Novice Programming Errors, Morgan Kaufmann, Los Altos, CA.Google Scholar
  8. •.
    Johnson, W. Lewis and Soloway, Elliot (1985a) Micro-PROUST, Yale University Computer Science Department Research Report #402, New Haven, CT.Google Scholar
  9. •.
    Johnson, W. Lewis and Soloway, Elliot (1985b) PROUST: An automatic debugger for Pascal programs, BYTE, April 1985, 179–190.Google Scholar
  10. •.
    Kuhn, Thomas S. (1962) The Structure of Scientific Revolutions, 2nd Edition, U of Chicago Press, Chicago.Google Scholar
  11. •.
    Latour, Bruno (1987) Science in Action: How to follow scientists and engineers through society, Harvard U. Press, Cambridge, MA.Google Scholar
  12. •.
    Minton, S., Carbonell, J.G., Knoblock, CA., Kuokka, D.R., Etzioni, O., and Gil, Y. (1989) Explanation-based Learning: A Problem Solving Perspective, Artificial Intelligence 40, 63–118.Google Scholar
  13. •.
    Sack, Warren (1990) Technical Description of the Analytic Component: A Pattern Matcher for Analyzing Computer Programs. (Unpublished Working Paper) Princeton, NJ: Educational Testing Service.Google Scholar
  14. •.
    Sack, Warren (1991) Knowledge Engineer's Manual: How to Build KBs for the ProgramCritic. (Unpublished Working Paper) Princeton, NJ: Educational Testing Service.Google Scholar
  15. •.
    Sack, Warren, Soloway, Elliot and Bennett, Randy (in preparation) The Advanced Placement Computer Science Practice and Feedback System.Google Scholar
  16. •.
    Sack, Warren and Bennett, Randy (patent pending) United States Patent Application: Method and System for Interactive Computer Science Testing, Analysis and Feedback.Google Scholar
  17. •.
    Schank, Roger and Abelson, Robert (1977) Scripts Plans Goals and Understanding: An Inquiry into Human Knowledge Structures, Lawrence Erlbaum Associates, Hillsdale, NJ.Google Scholar
  18. •.
    Soloway, Elliot and Ehrlich, Kathrine (1984) Empirical Investigations of Programming Knowledge, IEEE Transactions on Software Engineering SE-10(5).Google Scholar
  19. •.
    Steele, Guy Lewis and Sussman, Gerald Jay (1975) Scheme: An interpreter for the extended lambda calculus, MIT Artificial Intelligence Laboratory Memo 349, Cambridge, MA.Google Scholar
  20. •.
    Sterling, Leon and Shapiro, Ehud (1986) The Art of Prolog, MIT Press, Cambridge, MA.Google Scholar
  21. •.
    Sussman, Gerald Jay and Abelson, Harald (1985) Structure and Interpretation of Computer Programs, MIT Press, Cambridge, MA.Google Scholar
  22. •.
    van Harmelen, F, and Bundy, A. (1988) Explanation-based generalization = Partial evaluation, Artificial Intelligence 36401–412.Google Scholar
  23. •.
    Warren, D.H.D. (1977) Implementing Prolog: Compiling Predicate Logic Programs, DAI Report Nos. 39 & 40, U. of Edinburgh.Google Scholar
  24. •.
    Wenger, Etienne (1986) Artificial Intelligence and Tutoring Systems, Morgan Kaufmann Publishers, Los Altos, CA.Google Scholar
  25. •.
    Wittgenstein, Ludwig (1960) The Blue and Brown Books: Preliminary Studies for the “Philosophical Investigations,” Harper & Row, New York.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Warren Sack
    • 1
  1. 1.Santa Cruz

Personalised recommendations