Suitable for undergraduate mathematics and computer science students, this book provides an introduction to many problems of discrete mathematics. It discusses selected results and methods, mostly from areas of combinatorics and graph theory, and uses proofs and problem solving to help students understand the solutions to problems.