This subject, delivered in two parallel streams, introduces a range of concepts from number theory, group theory and formal language theory tying the ideas together through some practical applications. The number and group theory stream first considers modular arithmetic and a range of number theoretic results that underpin RSA public key encryption before moving on to a general group theory module with applications to symmetries and error correcting codes. The formal language stream deals with regular expressions, regular languages and their relationship with automata. Context free languages are studied along with their related automa. An introductory discussion of Turing machines leads to model for computation.