Computer Science Level 2 modules are organised into four main themes

  • Software Processes
  • Systems
  • Applications
  • Theory

Software Processes

Building software is a key part of Computer Science, and many Computer Scientists are heavily involved in it throughout their career. This theme is about Software Engineering – how to build large reliable software systems – and Specification – understanding exactly what software systems are supposed to do.


Software generally forms part of a system – and different systems (and parts of the same system) interact together. An important part of a modern software system is a database – and this theme looks at how to build reliable and efficient databases. Another important part of modern software systems is concurrency – that is, multiple things going on at the same time. If you are not careful, it is easy to end up with results that are wrong! Concurrency is an important part of modern programming (multithreading), operating systems (multitasking) and networking. It is also important to mordern multi-core microprocessors. Building concurrent systems is a major part of this theme.


Computers are only useful when they are used in applications. There is a huge range of possible applications and this theme concentrates on two important ones – graphics and artificial intelligence.


Theoretical Computer Science is about how computer systems work, how difficult tasks are, and what tasks are even possible. This theme addresses algorithms – that is, how problems are solved and how we can measure how good these solutions are. It also looks at the limits of computation – there are many problems that we can prove we can never solve. The other main part of this theme is languages and computations – what do programming languages mean? Can we compute the same things in any language? If we make changes to the way computer systems work does that affect what we can compute?