Excerpts from the Preface:



This book contains programming experiments that are designed to reinforce the learning of discrete mathematics, logic, and computability. It is the outgrowth of the experimental portion of a one-year course in discrete structures, logic, and computability for sophomores at Portland State University. The course has evolved over the last ten years from a standard course into a course that uses programming experiments as part of the required activity. Most of the experiments are short and to the point, just like traditional homework problems, so that they reflect the daily classroom work. The experiments in the book are organized to accompany the material in Discrete Structures, Logic, and Computability , Second Edition, by James L. Hein.



In traditional experimental laboratories, there are many different tools that are used to perform various experiments. The Prolog programming language is the tool used for the experiments in this book. Prolog has both commercial and public versions. The language is easy to learn and use because its syntax and semantics are similar to that of mathematics and logic. So the learning curve is steep and no prior knowledge of the language is assumed. In fact, the experiments are designed to introduce language features as tools to help explore the problems being studied.



The instant feedback provided by Prolog's interactive environment can help the process of learning. When students get immediate feedback to indicate success or failure, there is a powerful incentive to try and get the right solution. This encourages students to ask questions like, "What happens if I do this?" This supports the idea that exploration and experimentation are keys to learning.



The book builds on the traditional laboratory experiences that most students receive in high school science courses. i.e., experimentation, observation, and conclusion. Each section contains an informal description of a topic—with examples as necessary—and presents a list of experiements to perform. Some experiements are simple, like using a program to check answers to hand calculations, and some experiements are more sophisticated, like checking whether a definition works, or constructing a small program to explore a concept.

About The Author(s)