This paper describes an intelligent computer-based tutor for LISP that incorporates some of the Ingredients of good private tutoring. The tutor consists of a problem-solver that generates steps toward a solution and an advisor that compares the problem-solver’s steps to the student’s steps. Our system can interact with students in a number of different problem spaces for algorithm design and coding. The tutor reduces memory demands by displaying relevant contextual information and directs problem-solving by immediately intervening when a student generates an unacceptable partial answer. Initial experiments indicate that our tutor is approximately twice as effective as classroom instruction.