Discrete Algorithmic Mathematics, Third Edition

Prologue. This gives an application which foreshadows both the subject matter and the point of view of the rest of the book.
Chapter 0, Mathematical Preliminaries. The goal is to make sure students are comfortable with standard concepts, notations and operations used throughout the book (e.g., set notation, the function concept, summation notation, order of growth, matrix multiplication, logical implication). This is not the real stuff of discrete math, and we believe that a discrete math course should not dwell on this chapter longer than necessary. Well-prepared students will have seen some of the material before, but some will probably be new to almost everyone (e.g., order calculus). Consider referring back to this material as needed instead of starting with it.
Chapter 1, Algorithms. This chapter introduces our algorithmic language through a number of examples, including the two we use repeatedly in later chapters the Euclidean algorithm and the Towers of Hanoi. Also introduced through examples are key issues in the analysis of algorithms and an introduction to complexity ideas. The use of recursion in our language and its close connection to mathematical induction are essential parts of our recursive paradigm theme. If only modest algorithm writing fluency is expected, portions of this chapter can be covered fairly quickly. In any event, the concept of an algorithm has become better known in schools since we first wrote this book. Therefore, the examples and discussion of the nonrecursive parts of our language have been cut back.