Intelligent Tutoring System(ITS) for programming language is designed and implemented. This system consists of 4 components: expert module, tutoring module, student model, and user interface. The expert module represent domain knowledge, evaluates student's response, and has concepts and problems to be learned. In order to analyze and evaluate student's response, we employed ExBug which was developed for automatic debugger of C programs. The curriculum within the expert module is represented in the form of a network describing concepts, problems and their relations. The tutoring module controls the teaching sequence and determines the tutoring method. It selects the most suitable concepts and problems from Curriculum Network according to the student model and uses explanation methods defined in this network to explain the concept. The student model represents the current status of the student.
Curriculum Network contains the knowledge to be learned that is not only text-like concepts but also programming exercises. Also the tutoring sequence can be determined from it. Because several relations between concepts are defined in it, it can provide various kinds of explanation.