Coronavirus (Covid-19): Latest updates and information
Skip to main content Skip to navigation

CS917 Foundations of Computing

CS917 15 CATS (7.5 ECTS) Term 1


Core - MSc Computer Science, MSc Data Analytics, MSc Behavioural and Data Science



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.


  • 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)


  • Huth and Ryan, Logic in Computer Science
  • Daniel Liang Y, Introduction to Java Programming - Comprehensive (7th ed), Pearson, 2008
  • Goodrich MT, Tamassia R and Goldwasser MH, Data Structures and Algorithms in Java (6/e), Wiley, 2015
  • Kleinberg J and Tardos E, Algorithm Design, Addison Wesley, 2005


Coursework (100%) - three assignments.


30 hours of lectures, 20 hours of seminars