Computer Science

Computer Science is about understanding computer systems and networks at a deep level. Computers and the programs they run are among the most complex products ever created; designing and using them effectively presents immense challenges. Facing these challenges is the aim of Computer Science as a practical discipline, and this leads to some fundamental questions:

  • How can we capture in a precise way what we want a computer system to do?
  • Can we mathematically prove that a computer system does what we want it to?
  • How can computers help us to model and investigate complex systems like the Earth’s climate, financial systems or our own bodies?
  • What are the limits to computing? Will quantum computers extend those limits?

The theories that are now emerging to answer these kinds of questions can be immediately applied to design new computers, programs, networks and systems that are transforming science, business, culture and all other aspects of life.

Course Contents

  • Continuous maths
  • Design and analysis of algorithms
  • Digital systems
  • Discrete mathematics
  • Functional programming
  • Imperative programming
  • Introduction to formal proof
  • Linear algebra
  • Probability
  • Object-oriented programming
  • Concurrent programming
  • Models of computation
  • Logic and proof
  • Computer architecture
  • Computer graphics
  • Compilers
  • Concurrency
  • Algorithms and data structures
  • Databases
  • Computer networks
  • Intelligent systems
  • Computational complexity
  • Computational learning theory
  • Computer security
  • Computer-aided formal verification
  • Geometric modelling
  • Knowledge representation and reasoning
  • Lambda calculus and types
  • Principles of programming languages
  • Automata, logic and games
  • Advanced security
  • Categories, proofs and processes
  • Computational linguistics
  • Computer animation
  • Concurrent algorithms and data structures
  • Database systems implementation
  • Machine learning
  • Probabilistic model checking
  • Probability and computing
  • Quantum computer science
  • Program analysis
  • Theory of data and knowledge bases