Tutoring systems for learning to program

A large number of software packages have appeared in recent years, aiming to support the learning process. The paper looks into those softwares packages which provide assistance to beginners who are learning to program. More than twenty tutoring systems described in the European and American scientific literature (up to 1991) are analyzed based on an overview of available documents and, for three of the systems, on a few experiments. A classification of tutoring systems is proposed, based on two criteria: domain competence (knowledge about the fundamental concepts and capability to solve problem within the domain) and pedagogical competence (knowledge and usage of teaching strategies). A number of conclusions are allow about the role of tutoring systems in education and about the multiplicity of approaches followed by the various authors.