This book is designed for an introductory course in discrete mathematics that serves a variety of majors, including mathematics, computer science, and engineering. The book is the outgrowth of a course at Portland State University that has evolved over 15 years from a course for upper-division students into a course for sophomores. The book can be read by anyone with a good background in high school mathematics. Therefore it could also be used at the freshman level or at the advanced high school level.
This book differs in several ways from current books about discrete mathematics. It presents an elementary and unified introduction to a collection of topics that, up to now, have not been available in a single source. A major feature of the book is the unification of the material so that it doesn't fragment into a vast collection of seemingly unrelated ideas. This is accomplished by organization and focus. The book is organized more along the lines of technique than on a subject-by-subject basis. The focus throughout the book is on the computation and construction of objects. Therefore many traditional topics are dispersed throughout the text to places where they fit naturally with the techniques under discussion. For example, to read about properties of—and techniques for processing—natural numbers, lists, strings, graphs, or trees, it's necessary to look in the index or scan the table of contents to find the several places where they are found.