This thesis describes the Meno-tutor, a computer program for tutoring. The program adapts its discourse to the context of student and discourse history, i.e., it responds differently to the knowledgeable student and the confused one. The program uses knowledge about tutoring strategies, complex communication skills, and its ability to infer the level of the student\u27s knowledge to generate reasonable tutoring discourse. It can question a student about the subject domain, probe him for possible misconceptions, and can change its strategies if the student is not progressing well. The planning mechanism for the Meno-tutor is best described as a set of decision-making states organized into three levels. Each state provides a constraint or decision about the form and context of the utterance. The levels successively refine the actions of the previous level and constrain the pedagogical, strategic and tactical formation of the utterance. States are linked to other states by a structure which is nominally an OR graph, but makes two notable deviations. The first is a set of default transitions that represent crosslinks through the states and are responsible for the traditional sections of discourse, e.g., introduction of a topic, questioning the student about the topic, and terminating that topic. The second deviation is a set of meta-rules which functionally represent the shifts observed in classic human tutoring; they express the high-level transitions characteristic of, for example, a change in strategy. The path of the tutor can be preempted before entrance to any state by meta-rules. The Meno-tutor is an attempt at a generic tutor, one not committed by design to a single subject. It teaches about the causal reasoning behind rainfall and the looping constructs in the programming language PASCAL. In both subject areas it adjusts its response to its own inferences about the student\u27s level of knowledge and to the success of the discourse