This module is intended to introduce the student to a range of topics in Discrete mathematics which are frequently used in Computer Science. We will look at topics in Predicate calculus, Lattice theory, elementary number theory and combinatorics. We place particular emphasis on equational reasoning and on structuring proofs. We will cover standard proof techniques and introduce you to some techniques you may not have seen before such as proof by indirect equality and indirect inequality. Proof by induction will be studied and used extensively. We will illustrate the material with many examples from Computer Science.