This book is classic Knuth: brilliant, comprehensive, inviting, and playful. Highly, highly recommended. This book is ideal for self-study.<br><br>Material covered includes the basics of discrete math, plus some extras needed for analysis of algorithms. There is an explicit and polemical slant towards a concrete (Knuth calls it 'Eulerian') approach, but this basically just means the emphasis is on explicit calculation and motivating examples, rather than 'elegant' formality and abstraction.<br><br>In terms of topics, the book starts with a chapter introducing recurrences, then guides the reader through developing familiarity and calculational skill with sums and sigma notation; floors and ceilings; modular arithmetic and a bit of number theory; binomial coefficients and special functions, finally culminating with generating functions, which provide a general framework for solving recurrences encountered in earlier chapters. There are also a couple of chapters on discrete probability and asymptotics, which round out the stated goal of the book: covering preparatory mathematical material needed for the analysis of algorithms in Knuth's Art of Computer Programming.<br><br>As with TAOCP, the problem sets are as enjoyable and carefully constructed as the exposition, and the solutions are included in the back of the book (about 500 pages of exposition, and about 100 pages of solutions). These problems could easily keep an interested person busy for a lifetime. They are each graded using Knuth's customary scale, and range from the trivially easy to open research problems.