Skip to main content

CS917 Foundations of Computing

Academic Aims

The aim of the module is to equip students with a grounding in foundations of computing, to enable students from a wider background to confidently undertake a taught masters programme in advanced computing topics.

Learning Outcomes

By the end of the module the student should be able to:

  • Understand the foundational concepts of computing mathematics and statistical methods.
  • Write computer programs with an understanding of type systems and control flow in both procedural and object oriented programming paradigms and have strategies for debugging. Use data structures sucha as arrays, lists stack, queues, hash tables and trees effectively.
  • Understand the relationships between algorithms and complexity.
  • Comprehend a range of computational architectures at various scales.


  • Computational Mathematics and Statistical Methods (logic, sets, probability and hypothesis testing)
  • Programming and Data Structures (procedural and object oriented programming, using appropriate data structures)
  • Algorithms and Complexity (analysis of algorithms, searching and sorting algorithms and calculation best, worst and average case complexities)
  • Computing Architectures (processors and memory hierarchies, client-server models and distributed architectures)
  • Computing Grand Challenges (current and emerging issues in computing)

15 CATS (7.5 ECTS)
Term 1

Adam Chester


Online material