This review is for the second edition of the text. The subtitle of the first edition, “A Companion Manual for Practical Study,” illustrates the largest difference between the two editions – the incorporation of the programming language Python. There are several explicit examples of code, and, as one might expect, the code is found primarily in the chapters associated with algorithms.

The book is divided into relatively stand-alone chapters. Each has a short introduction of the main ideas with vocabulary, theorems, and a few examples. Then there are lists of concept “Test Questions” for the reader to check their understanding of the content. After this are the problem sets. These are collections of around 50 concrete questions of varying levels of difficulty. The final section of each chapter is called ’‘Answers, Hints, and Solutions.” The Answers are short, often a single number or single line of text. The Solutions are more detailed explanations or proofs. Most of the problems are associated with Answers or Solutions, but a few have Hints instead. The Hints tend to be paired with problems whose solutions are very similar to another, so say things like ”See the previous problem” or ”Use the mathematical induction method.”

The content is pretty comprehensive. The book has chapters on the traditional topics of a one semester discrete course, logic, sets, functions, relations, and graphs, but also contains five chapters related to algorithms. The only topic that I often teach that is not included here is a section on number theory with primes, divisibility, and basic cryptography. The writing is well-done and the text is nicely edited. I did not notice typographical errors or strangely-worded passages.

As an educator, I use this book as a resource for supplementary problems in a Discrete Mathematics course. It is probably not designed to be used as the primary text in a course due to the succinct nature of the exposition, but I do think it could be very effectively used for self-study. The discovery aspect of problems and solutions can be much more engaging than straight forward reading of text. The reader is also able to build up their knowledge, starting with the problems with short answers and moving to those that are more involved with proofs or longer solutions.

Tricia Muldoon Brown (tmbrown@georgiasouthern.edu) is a Professor of Mathematics at Georgia Southern University with interests in combinatorics

, recreational mathematics, and sports.