This module leads you on a journey from the foundations of mathematics, logic and set theory, via fundamental results about numbers, and in particular prime numbers, to important real world applications in cryptography and RSA encryption. The programming language Python is introduced which allows very large computations to be done. In particular, using theorems proved in the module, algorithms are developed and implemented that find huge prime numbers, and these are used to encrypt messages. The module enhances logical thinking and develops practical skills which are attractive to employers, including the use of Python programming.