Discrete mathematics is the first non-calculus course for mathematics, computer science and engineering majors. This course introduces mathematical tools and techniques used to study discrete processes as opposed to continuous processes. Topics covered include such discrete concepts as basic set theory, functions, relations, recurrences, counting principles, fundamentals of propositional calculus and Boolean algebra, graphs and trees. The course also introduces proof techniques of mathematics including proof by induction, proof by truth table, proof by Venn diagram, pigeonhole principle, etc. This course is indeed prerequisite for logic design, operational research and other advance level courses in combinatorics, abstract algebra, mathematical modeling, geometry and topology.