This book guides students through an exploration of
the idea that thinking might be understood as a form of computation.
Students make the connection between thinking and computing
by learning to write computer programs for a variety of tasks that require thought,
including solving puzzles, understanding natural language,
recognizing objects in visual scenes, planning courses of action,
and playing strategic games.
The material is presented with minimal technical detail
and is accessible to undergraduate students with no specialized knowledge
or technical background beyond high school mathematics.
Students use Prolog (without having to learn algorithms:
“Prolog without tears!”),
learning to express what they need as a Prolog program
and letting Prolog search for answers.
After an introduction to the basic concepts,
Thinking as Computation offers three chapters on Prolog,
covering backchaining, programs and queries,
and how to write the sorts of Prolog programs used in the book.
It follows this with case studies of tasks that appear to require thought,
then looks beyond Prolog to consider learning, explaining, and propositional reasoning.
Most of the chapters conclude with short bibliographic notes and exercises.
The book is based on a popular course at the University of Toronto
and can be used in a variety of classroom contexts,
by students ranging from first-year liberal arts undergraduates
to more technically advanced computer science students.