Tools for teaching introductory programming: what works?
ProfessorJ: a gradual introduction to Java through language levels