Abstract
Knowledge-based programming tutors are supposed to analyze the students' programs using knowledge of the concepts of programming language, skills to build programs, misconceptions of novice programmers, and information about the programs to be analyzed. The last one provides the programming tutor with the intentions of programmers, and this allows the tutor to do an intention-based diagnosis (Johnson, 1996). This is given to the system in the form of a problem description by human instructors. However, it is very hard for instructors to write a problem description. For instructors, the simplest way to describe a problem may be to write a model program of that problem. This paper describes the system named GOES, a GOal Extraction System, which extracts the purposes (Goals) of a model program automatically.
GOES is a susbsystem of C-Tutor, a knowledge-based C Programing Tutor (Hahn et al., 1996). GOES extracts implemented plans from a model program, and then extract goals from the plans according to goal/plan hierarchies. The efficiency of GOES depends on the process of plan extraction. In GOES, only pairs of labels and variables of each statement are used to extract candidate plans. Exact matching is followed only for theses candidate plans. In addition, to extract plans more efficiently, we introduce the concept of necessary and sufficient conditions of a plan to the model program. Using this method, plan candidates can be extracted efficiently and successfully.
Similar content being viewed by others
References
S. K. Abd-El-Hafiz and V. R. Basili, A Knowledge-based Approach to Program Understanding. Norwell, Massachusetts: Kluwer Academic Publishers, 1995.
J. R. Anderson, C. F. Boyle, and G. Yost, "The geometry tutor," in The 9th International Joint Confenrence on AI, pp. 1–7, 1985.
K. Bertels, P. Vanneste, and C. D. Baeker, "A cognitive approach to program understanding," in Proc.the Working Conference on Reverse Engineering, (Baltimore Maryland), pp. 1–7, 1993.
R. Brooks, "Towards a theory of the comprehension of computer programs," Int.J.Man-Machine Studies, vol. 18, pp. 543–554, 1983.
I. Goldstein, "The genetic graph: a representation for the evolution of procedural knowledge," in Intelligent Tutoring Systems (D. Sleeman and J. Brown, eds.), Academic Press, 1982.
S. H. Hahn, J. Song, S. Kim, K. Tak, and J. Kim, "A programming tutoring system for novice c programmers," in PRICAI 96 Workshop on Knowledge-based Instructional Systems in an Industrial Setting, (Cairns, Austrailia), pp. 1–12, 1996.
M. T. Harandi and J. Q. Ning, "Pat: a knowledge-based program analysis," IEEE Trans.on Software Engineering, vol. 7, no. 1, pp. 74–81, 1990.
J. Hartman, "Understanding natural programs using proper decomposition," in Proc.of the 13th INternational Confenrence on Software Engineering, (Austin, Texas), pp. 62–73, 1991.
P. A. Hausler, M. G. Pleszkoch, R. C. Linger, and A. R. Henver, "Using function abstraction to understand program behavior," IEEE Trans.on Software Engineering, vol. 7, no. 1, pp. 55–63, 1990.
W. L. Johnson and E. Soloway, "Proust: An automatic debugger for pascal programs," Byte, vol. 10, no. 4, pp. 179–190, 1985.
W. Johnson and E. Soloway, "Proust: An automatic debugger for pascal programs," in AI and Instruction (G. Kearsley, ed.), Addison-Wesley, 1987.
W. L. Johnson, Intention-Based Diagnosis of Novice Programming Errors. Los Altos, California: Morgan Kaufmann, 1986.
R. A. Kemmerer and S. T. Eckmann, "Unisex: a unix-based symbolic executor for pascal," Software Practice and Experience, vol. 15, no. 3, pp. 439–458, 1985.
B. W. Kernighan and D. M. Ritchie, The C Programming Language, 2nd ed. New Delhi: Printice-Hall Software Series, 1989.
S. W. Kim, S. H. Hahn, and J. Kim, "Algorithm recognition using flow graph transformation," in Proc.Pacific Rim Int.Conf.of Artif.Intell, (Beijing, China), pp. 686–692, 1994.
K. H. Lee and et al, C language easy to learn. Seoul, Korea: Hong Rung Press, 1990.
S. Letovski, "Program understanding with the lambda calculus," in Int.Joint Conference on Artificial Intelligence, (Milan, Italy), pp. 512–514, 1987.
W. R. Murray, Automatic Program Debugging for Intelligent Tutoring Systems. San Mateo, California: Morgan Kaufmann, 1988.
J. Q. Ning, "A knowledge-based approach to automatic program analysis," tech. rep., Univ. of Illinois, Urbana-Chanpaign, 1989. PhD thesis.
A. Quilici, "A hybrid approach to recognizing programming plans," in Proc.the Working Conference on Reverse Engineering, (Baltimore Maryland), pp. 126–133, 1993.
C. Rich and R. C. Waters, The Programmer's Apprentice. Massachusetts: Addison-Wesley, 1990.
C. Rich, "Inspection methods in programming," Tech. Rep. AI-TR-604, MIT-AILAB, 1981.
G. R. Ruth, "Intelligent program analysis," Int.J.Artificial Intelligence, vol. 7, pp. 65–85, 1976.
H. E. Shrobe, "Dependency directed reasoning in the analysis of programs which modify complex data structures," in Int.Joint Conference on Artificial Intelligence, (Tokyo, Japan), pp. 829–835, 1979.
E. Soloway, J. Bonar, and K. Ehrlich, "Cognitive strategies and looping constructs: an emperical study," Commu-nications of the ACM, vol. 26, no. 11, pp. 853–860, 1983.
E. Soloway, "Learning to program = learning to construct mechanisms and explanations," Communications of the ACM, vol. 29, no. 9, pp. 850–858, 1986.
J. Song and J. Kim, "Exbug: An automatic debugger by plan matching and program execution," in PRICAI 92, (Seoul, Korea), pp. 638–644, 1992.
K. Y. Tak, "Curriculum description and design of tutoring module for programming tutoring system," tech. rep., Korea Advanced Institute of Science and Technology, Taejon, Korea, 1995. MS thesis.
H. Ueno, "Alpus: A program understanding system by means of algorithm-based programming knowledge," in Proc.Pacific Rim International Conf.on Artificial Intelligence, pp. 693–698, JISS, 1990.
P. Vanneste, "Areverse engineering approach to novice program analysis," tech. rep., KULeuven Campus Kortrijk (KULAK), Holland, 1994. Ph.D dissertion.
M. Ward, F. Calliss, and M. Munro, "The maintainer's assistant," in Proc.of the Conference on Software Maintenance, (Miami, Florida), pp. 307–315, 1989.
C. R. Waters, "Kbemacs: A step toward the programmer's apprentice," Tech. Rep. AI-TR-753, MIT-AILAB, May 1985.
M. Weiser, "Program slicing," IEEE Trans.on Software Engineering, vol. 10, no. 4, pp. 352–357, 1984.
L. M. Wills, "Automated program recognition by graph parsing," Tech. Rep. AI-TR-1358, MIT-AILAB, July 1992.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Hahn, SH., Kim, J. Automatic Problem Description from Model Program for Knowledge-based Programming Tutor. Automated Software Engineering 4, 439–461 (1997). https://doi.org/10.1023/A:1008632729798
Issue Date:
DOI: https://doi.org/10.1023/A:1008632729798