2000 Volume 15 Issue 2 Pages 362-375
In this paper, we propose an education system that helps programming learners by providing domainoriented-explanations that are explanations of functions of programs by vocabularies of domain worlds. We think novice programming learners feel difficulties when they can not understand whether bugs of their own programs are caused by failure in constructing algorithm or failure in encoding it. Therefore our system explains domain-oriented-functions of programs independently of detailed logic of the programs. By comparing the explanations with supposed behaviors of the programs, learners can check algorithms and find algorithmic bugs without middling with detailed logic of the programs. The system also shows sets of statements that realize each domain-oriented-function in order to help learners to find buggy codes. Moreover it can help learners to understand model programs by explaining them. In this paper, we describe a method of program analysis based on simulation. Our system has a domain model which represents states of a domain world and simulates a program on the model to extract its domain-oriented-functions. We also describe a method to make explanations of extracted functions and logic of programs. We have implemented an experimental system and a domain model for exercises that pays attention to numerical order such as 'greater' or 'lesser' (ex. exercise of sorting). We show our experimental system and experimental results.