This sequel to Foundations of Discrete Mathematics provides insight into how the methods of discrete mathematics can be applied to a variety of problems, both theoretical and practical. It covers all standard topics including group actions, graph theory, and linear programming, and includes end-of-chapter exercises. The text has been designed for student and practising mathematicians and computer scientists.