The overall aim of this course is to prepare you to use formal (mathematically precise) reasoning in your future studies and work in computer science. Areas of computer science in which such reasoning is essential include algorithms and data structures, the theory of computing, cryptography, computer security and privacy, and software engineering.