Main Article Content

Abstract

 Intelligent program diagnosis systems are computer programs capable of analyzing logical and design-level errors and misconceptions in programs. Upon discovering the errors, these systems provide intelligent feedback and thus guide the users in the problem-solving process. Intelligent program diagnosis systems are classified by their primary means of program analysis. The most distinct split is between those systems that are unable to analyze partial code segments as they are provided by the user and must wait until the entire solution code is completed before attempting any diagnosis, and those that are capable of analyzing partial solutions and providing proper guidance whenever an error or misconception is encountered. This paper gives an overview of the field and then critically compares work accomplished on several closely related active diagnosis systems, emphasizing such issues as the representation techniques used to capture the domain knowledge required for the diagnosis, ability to handle the diagnosis of partial code segments of the solutions, features of the user interfaces, and methodologies used in conducting the diagnosis process. Finally the paper presents a detailed discussion on issues related to active program diagnosis along with various design considerations to improve the engineering of this approach to intelligent diagnosis. The discussion presented in this paper tackles the issues referred above within the context of DISCOVER, an intelligent system for programming by discovery.

Keywords

Intelligent programming systems knowledge representation program debugging software development user programming.

Article Details

References

  1. ADAM, A. and LAURENT, J. 1980. LAURA: A System to Debug Student Programs. Journal of Artificial Intelligence, 15: 75-122.
  2. ANDERSON, J. 1982. Acquisition of Cognitive Skill. Psychological Review, 89: 369-6.
  3. ANDERSON, J. 1990. Cognitive Modeling and Intelligent Tutoring. Artificial Intelligence and Learning Environments, Clancy and Soloway (Eds.), MIT/Elsevier.
  4. ANJANEYULU, K. and ANDERSON, J. 1992. The Advantages of Data Flow Diagrams for Beginning Programming, In Frasson, Gauthier and McCalla (Eds.), Intelligent Tutoring Systems, Springer-Verlag.
  5. BAECKER, R. and DIGIANO, C. 1997. Software Visualization for Debugging. ACM Communications, Vol. 40: 45-54.
  6. BAECKER R. 1990. Human Factors and Typography for More Readable Programs, Addison-Wesley, Reading, Mass., 1990.
  7. BARR, A. 1976. The Computer as a Computer Laboratory. International Journal of Man-Machine Studies, 8: 567-596.
  8. BOEHM-DAVIS, D. 1987. Program design languages: how much detail they should include, International Journal of Man-Machine Studies, 27: 337-347.
  9. BONAR, G. 1992. Intelligent Tutoring with Intermediate Representations. Proceedings of the Second Conference on Intelligent Tutoring Systems (ITS-92), Canada.
  10. BROWN, M. 1992. ZEUS: A system for algorithm animation and multi-view editing, Proceedings of the 1991 IEEE Workshop on Visual Languages, Japan, pp. 4-9.
  11. CLANCY, W. 1987. Qualitative Student Models. Annual Review of Computer Science, 1: 381-450.
  12. CURTIS, B. 1988. Experimental evaluation of software documentation formats. Journal of systems and software, 9: 1-41.
  13. DAVIES, S. 1992. Cognitive Models of Programming and the Design of Support for Learning. Proceedings of the NATO Workshop on Cognitive Models and Intelligent Environments for Learning Programming, Italy.
  14. DU BOULAY, J.B.H., O'SHEA, T. and MONK, J. 1981. The Black Box Inside the Glass Box: Presenting Computing Concepts to Novices. International Journal of Man-Machine Studies, 14: 237-249.
  15. DYCK, J. 1987. Learning and comprehension of Basic and natural language computer programming by novices, Ph.D thesis, University of California, Santa Barbara, USA.
  16. EISENSTADT M. 1993. Software Visualization as a pedagogical tool, Instructional Science, Vol. 21: 335-364.
  17. GILMORE, D. and GREEN, T. 1988. Programming Plans and Programming Expertise. Journal of Experimental Psychology, 40A: 69-92.
  18. GOLDSEIN, I. 1974. Understanding Simple Picture Programs. PhD Thesis, MIT.
  19. HASHMER, T. 1983. An Empirically-Based Debugging System for Novice Programmers. PhD Thesis, The Opend University, UK.
  20. JOHNSON, W. 1990. Understanding and Debugging Novice Programs. Artificial Intelligence and Learning Environments, Clancey and Soloway (Eds.), MIT/Elsevier.
  21. LAWRENCE, A. Empirically evaluating the use of animations to teach algorithms. IEEE Symposium on Visual Languages, St. Louis.
  22. LIEBERMAN, H. 1984. Seeing what your programs are doing. International Journal of Man-Machine Studies, 21: 311-331.
  23. LUKEY, F. 1980. Understanding and Debugging Programs. International Journal of Man-Machine Studies, 12: 42-71.
  24. MAYER, R. 1981. The Psychology of How Novices Learn Computer Programming. Computing Surveys, 13: 121-141.
  25. MAYER, R. 1985. Learning in complex domains: a cognitive analysis of computer programming, in Psychology of learning and motivation, Bower (Ed.), 19: 89-130, Academic Press, USA.
  26. MILLER, J. 1982. Intelligent Tutoring for Programming Tasks. Technical Report, Texas Instruments.
  27. MUKHERJEA, S. and STASKO, J. 1994. Toward visual debugging: integrating algorithm animation capabilities within a source-level debugger, ACM TOCHI, Vol. 1: No. 3 (Sept. 1994), Pages 215-244.
  28. MURRAY, W. 1986. Automatic Program Debugging for Intelligent Tutoring Systems. PhD Thesis, Texas University, Austin, 1986.
  29. NWANA, H. 1991. An Approach to Developing Intelligent Tutors. Proceedings of the 6th International PEG Conference on Knowledge Based Environments for Teaching and Learning, Italy.
  30. PRICE, B. A. 1993. Principled taxonomy of software visualization. Journal of Visual Languages and Compuling, 4(3): 211-266.
  31. RAMADHAN, H. 1992a. Intelligent vs. Unintelligent Programming Systems for Novices. Proceedings of the IEEE 15th International Conference on Computer Applications and Systems, USA.
  32. RAMADHAN, H and DU BOULAY, B. 1992b. Programming Environments for Novices. du Boulay and Lemut (Eds.), Cognitive Models and Intelligent Environments for Learning programming, Spring Verlag.
  33. RAMADHAN, H. 1997. Improving the Engineering of Model-Tracing Based Approach to Intelligent Program Diagnosis and Tutoring, IEE Journal of Software Engineering, 144(3): 149-161.
  34. RAMADHAN, H. 1997. Model tracing based approach to intelligent program diagnosis. SQU Journal of Science & Technology, 2: 65-76.
  35. RAMADHAN, H. 1999a. Active vs. Passive Systems for Automatic Program Diagnosis, Proceedings of International Conference on HCI (HCI’99), pp 345-351, Munich, Germany.
  36. RAMADHAN, H. 1999b. Improving the Engineering of Immediate Feedback for Model-Tracing Based Program Diagnosis, Proceedings of International Conference on HCI (HCI’99), pp 352-358, Munich, Germany.
  37. RAMADHAN, H. 2000a. DISCOVER: An intelligent system for discovery programming , Journal of Cybernetics & Systems, Vol. 31: 87-114.
  38. RAMADHAN, H., BRUSILOVSKY, P., and DEEK, F. 2000b. Incorporating Software Visualization in the Design of Intelligent Diagnosis Systems for User Programming, Journal of Artificial Intelligence Review, 01: 1-24.
  39. REISER, B. 1992. Making Process Visible: Scaffolding Learning with Reasoning-Congruent Representations. Proceedings of the 2nd Conference on Intelligent Tutoring Systems (ITS ’92), Montreal.
  40. REPENNING, A. 1996. Domain-Oriented Design Environments: Making Learning a Part of Life, Communications of the ACM, 9: 56-72.
  41. RICH, E. 1986. Characterization of plan-based program analysis approaches to debugging. Personal Communication, April, 1986.
  42. RUTH, G. 1973. Analysis of Algortihm Implementations. Technical Report, MIT Project MAC TR 130, MIT.
  43. SHAPIRO, E. 1983. Algortihmic Program Debugging. MIT Press, MIT.
  44. SOLOWAY, E. 1984. Empirical Studies of Programming Knowledge. IEEE Transactions on Software Engineering, September, 1984.
  45. STASKO J. and PATTERSON C. 1992. Understanding and Characterizing Software Visualization Systems, Proceedings of the 1992 IEEE Workshop on Visual Languages, USA, pp. 3-10.
  46. SPOHRER, J. 1985. A Goal/plan Analysis of Buggy Pascal Programs. Human Computer Interaction, 1(2): 163:207.
  47. VESSEY, I. 1985. Expertise in debugging computer programs: a process analysis. International Journal of Man-Machine Studies, 23: 459-494.
  48. WEGNER, E. 1987. Artificial Intelligence and Tutoring Systems, Morgan Kaufmann Publishers, USA.