Explaining Abstract Data Types with Sentential and Diagrammatic Elements

Although much work has been done on Intelligent Tutoring Systems that support the learning of programming skills, little attention has been paid to supporting the understanding of programs. We discuss the issues involved in developing a tool for a learning environment in which novice programmers can explore in detail an important class of programs implementing Abstract Data Types (ADTs). We start by developing a conceptual framework for explaining ADTs. Next, we describe an interactive learning situation and discuss the design principles that it embodies. After presenting an example of student/system interaction, we describe in detail the explanation process underlying it. We end with a discussion of the main issues.