
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 technicalities 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. The book 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 firstyear liberal arts undergraduates to more technically advanced computer science students. 


Encyclopedia of AlgorithmsThe Encyclopedia of Algorithms aims to provide the researchers, students, and practitioners of algorithmic research with a mechanism to efficiently and accurately find the names, definitions, key results, and further readings of important algorithmic problems.
The work covers a wide range of algorithmic areas, and each algorithmic area...   Data Abstraction and Structures Using C++Data Abstraction and Stmctzwes Using C++ is designed for a second course in computer science fundamentals, consistent with the AChI guidelines for the CS2 course (August 1985). The book is also compatible with a Cl02 course in ACMAEEE’s Computing Curricula 1991, covering elements from the following knowledge units: ALl through AL4, AL6, SE1...   Data Structures and Their Algorithms
Like all engineering activities, computer programming is both craft and science. Building a bridge or a computer program requires familiarity with the known techniques for the overall design of similar artifacts. And making intelligent choices among the available techniques and designs requires understanding of the mathematical principles... 
