In a world of increasingly thick mathematics textbooks, this one is no exception. However, the reason for that thickness is exceptional: this is the most physically readable textbook that I have seen in a long time. The print is clear and large; it is one-and-one-half times the size of the text in another math book that I am reading. This is excellent, for eyestrain should not be a consequence of studying mathematics.
In terms of content, the material is fairly standard for the discrete mathematics course containing topics in a computer science path, as one can see from the table of contents.
The text is readable, there are many examples and in many cases proofs of the theorems are included. A large number of exercises are provided and split into two categories, the traditional math problem and exercises to be performed on a computer. The computer exercises require the writing of code and where appropriate algorithms in pseudocode are listed. Solutions to the odd numbered exercises are included in an appendix.
The two most important courses in the computer science major are the first programming and discrete math classes. Each establishes a foundation of skills that will be repeatedly used throughout the major field of study and this book is an excellent text for the development of the needed skills in math.
Charles Ashbacher splits his time between consulting with industry in projects involving math and computers, teaching college classes and co-editing The Journal of Recreational Mathematics. In his spare time, he reads about these things and helps his daughter in her lawn care business.
Logic and Sets
Relations and Functions, Boolean Algebra, and Circuit Design
Relations and Functions
Equivalence Relations and Partial Orderings
Boolean Algebra and Circuit Design
The Integers, Induction, and Recursion
Some Topics in Elementary Number Theory
Representations of Integers in Different Bases
Modular Arithmetic and Congruences
Floating Point Arithmetic
Public Key Cryptography
Counting Techniques, Combinatorics, and Generating Functions
Fundamental Principles of Counting
Permutations, Combinations, and the Binomial Theorem
Discrete Probability and Simulation
Introduction to Discrete Probability
Random Numbers, Random Variables, and Basic Simulations
Complexity of Algorithms
Some Algorithms for Searching and Sorting
Growth Rates of Functions and the Complexity of Algorithms
Graphs, Trees, and Associated Algorithms
Graph Concepts and Properties
Paths Connectedness, and Distances in Graphs
Graph Traversal and Optimization Problems
Graph Traversal Problems
Tree Growing and Graph Optimization Algorithms
Randomized Search and Optimization Algorithms
Randomized Search and Optimization: An Overview
Appendix A: Pseudo Code Dictionary
Appendix B: Solutions to all Exercises for the Reader
Appendix C: Answers/Brief Solutions to Odd Numbered Exercises