Discrete mathematics is the part of mathematics that is devoted to the study of discrete objects. Discrete mathematics provides the mathematical foundations for many computer science courses, including data structures, algorithms, database theory, automata theory, computer security and operating systems. This book explains the basic principles of Discrete Mathematics and structures in five sections, sets theory, relations and functions, probability and counting techniques; recurrence relations, propositional logic; lattices and Boolean algebra; study of graphs and trees and algebraic structures and finite state machines. In this Second Edition new and revised material is added related to number theory including the well-ordering principle, Principles of mathematical induction, division algorithm and the Euclidean algorithm with suitable examples and exercises are also given.