SQL-Tutor is based on Constraint-Based Modeling (CBM), a student modeling approach proposed by Stellan Ohlsson.
It is a very efficient approach which concentrates on the violations of the basic principles in the domain of instruction. Currently there are more than 600 constraints in the system, which compiled into a structure resembling RETE networks, in order to speed up the matching process. The system also knows about various databases, problems and the ideal solutions to them, and uses this knowledge to diagnose students' answers. Currently the system only deals with the SELECT statement, but we believe that is not a serious limitation; the same approach can be used for other SQL statements, queries do cause most problems for students anyway, and many concepts covered by SELECT are directly applicable to other statements and other relational languages.
In order to adapt to individual students, SQL-Tutor maintains a model for each student. A student model contains information about the history of previous sessions (like a list of problems solved correctly etc) and also contains a model of the student's knowledge, expressed in terms of constraints.
When a student logs in for the first time, the system creates a new model, and lets the student select a database and a problem to work on. Every student solutions is analyzed (ie, propagated to the constraint network), and the system reports on its findings. There are several levels of feedback messages.
SQL-Tutor versions
The work on SQL-Tutor started in 1996, and now there are three version of the system available, developed in Allegro Common Lisp,.
Solaris version (interface developed in Tcl by Kendrick Elsey):