Discrete mathematics - Gallier, Jean H. (Universitext, 2011)
This book gives an introduction to discrete mathematics for beginning undergraduates and starts with a chapter on the rules of mathematical reasoning. This book  begins with a presentation of the rules of logic as used in mathematics where many examples of formal and informal proofs are given. With this logical framework firmly in place, the book describes the major axioms of set theory and introduces the natural numbers. The rest of the book deals with functions and relations, directed and undirected graphs and an introduction to combinatorics, partial orders and complete induction. There is a section on public key cryptography and RSA, with complete proofs of Fermat's little theorem and the correctness of the RSA scheme, as well as explicit algorithms to perform modular arithmetic. The last chapter provides more graph theory where Eulerian and Hamiltonian cycles are discussed. This book also includes network flows, matchings, covering, bipartite graphs, planar graphs and state the graph minor theorem of Seymour and Robertson. The book is highly illustrated and each chapter ends with a list of problems of varying difficulty. Undergraduates in mathematics and computer science will find this book useful.