This book is designed for use by students with a wide range of ability and maturity. The stronger the students, the harder the exercises that can be assigned. The book can be used for one-quarter, two-quarter, or one-semester course depending on how much material is used. Combinatorical reasoning underlies all analysis of computer systems. It plays a similar role in discrete operations research problems and in finite probability. This book teaches students in the mathematical sciences how to reason and model combinatorically. It seeks to develop proficiency in basic discrete math problem solving in the way that a calculus textbook develops proficiency in basic analysis problem solving. The three principle aspects of combinatorical reasoning emphasized in this book the systematic analysis of different possibilities, the exploration of the logical structure of a problem (e.g. finding manageable subpieces or first solving the problem with three objects instead of n), and ingenuity. Although important uses of combinatorics in computer science, operations research, and finite probability are mentioned, these applications are often used solely for motivation. Numerical examples involving the same concepts use more interesting settings such as poker probabilities or logical games.
This was just an okay textbook. There are sections of this book that are very well written (when you get into the actual start of the Combinatorics section, the author does a fantastic job of introducing the subject, provides a LOT of examples, and really does a great job of explaining what is a tough subject to many people.
But there are sections that are just terribly done. The section on non-homogeous recurrence relations was very vague, and the examples were a bit poor. The early sections covering edge and vertex covers also weren't very well explained (especially given that easier solutions using logic formulas exist).
So, overall, not a terrible book, but it could definitely use some improvement.