This overview of discrete mathematics places special emphasis on combinatorics, graph theory and two important topics in network optimization with an algorithmic approach. The text provides a discussion of basic combinatorics and graph theory, with several combinational models. The text includes: a brief exposition of the theory of NP completeness; more than 100 diagrams and tables directly tied to subject matter; historical notes and references in each chapter; end-of-chapter exercises; and a bibliography.