Learning theoretical computer science was one of the most enjoyable modules on the course. I enjoy learning about data structures, algorithms and discrete mathematics and I still learn more computer science outside my studies. This module taught how propositional and predicate logic can be used in mathematics to create proofs and models. Set theory was taught at a higher level than the previous years and this was enjoyable as this prepared me for further modules in the future.

Graph and network Theory was taught on this module and I learnt various algorithms used in graph theory that are used in computer networks such as shortest path first and spanning tree. This helped me in the network modules as when they were talking about the protocols in a high level overview I was able to relate back to how the algorithm works.

Algorithm efficiency was taught on this module and this showed me how model efficient algorithms as not all computers have a lot of resources. Various algorithms such as prime number generators (fermat), data compression and sorting algorithms (bubble, merge and select sort).