of AI not only as the subject matter of the course, but
also as a tool to teach the course. In this section, we
describe two ways in which we chose to use AI to
teach AI, which we would advocate other advanced
courses on artificial intelligence adopt.

Intelligent Tutoring of AI Concepts
While traditionally intelligent tutoring systems create computer-aided learning activities, the KBAI
course already is online. The Udacity infrastructure
for video lessons provides a facility for creating flexible interactive exercises involving multiple input
types that can be evaluated by custom Python code.
Using that framework, we equipped the lecture material for the course with about 150 interactive exercises. Figure 1 illustrates an example of an exercise; this
exercise can be completed in the video lesson itself.

In addition, building on our prior work on intelli-gent tutoring systems (Joyner and Goel 2015a,2015b), we created about 100 “nanotutors” to sup-port the exercises and embedded them in the videolessons. The nanotutors are highly focused intelligenttutoring agents guiding students’ understanding ofone narrowly defined skill such as completing asemantic network for a particular problem or simu-lating an agent’s planning in the blocks world.

Figure 2 shows some of the behaviors of the nanotutor for the exercise in figure 1. The nanotutor
operates by first assessing the readability of the student’s input; for example, in the exercise shown in
figure 1, if a student entered a noninteger as input,
the nanotutor would alert the student that the input
did not match the rules of the problem, and would
reiterate the exercise’s acceptable input. In this way,
the nanotutor first operates by taking open-ended
student text input and guiding it toward the narrow-

Figure 1. Example Exercise.

This is an example exercise from the fourth lesson of CS7637: Knowledge-Based AI. Here, students are asked to fill in 24 boxes to represent
the possible next states of a problem in means-ends analysis in accordance with rules provided.