Computer science provides a deep understanding of practical applications of computation in areas ranging from programming language design to everyday software systems. This course is aimed at anyone who wants to become a programmer, understands and can build on the fundamental principles behind the software that underpins modern society.