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


  • 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
  • Clements A, The Principles of Computer Hardware, Oxford, 2006
  • Armbrust, Michael, et al, "A view of cloud computing." Communications of the ACM 53.4 (2010): 50-58
  • Zikopoulos, Paul and Chris Eaton. Understanding big data: Analytics for enterprise class hadoop and streaming data. McGraw-Hill Osborne Media, 2011
  • Atzori, Luigi, Antonio Iera and Giacomo Morabito. "The internet of things: A survey." Computer networks 54.15 (2010): 2787-2805
  • Debatin, Bernhard, et al. "Facebook and online privacy: Attitudes, behaviors, and unintended consequences." Journal of Computer-Mediated Communication 15.1 (2009): 83-108
  • Leuenberger, Michael N and Daniel Loss. "Quantum computing in molecular magnets." Nature 410.6830 (2001): 789-793
  • Batty Michael, et al. "Smart cities of the future." European Physical Journal-Special Topics 214.1 (2012): 481


Coursework (100%) - five assignments.


30 hours of lectures, 20 hours of seminars

Jalote P, Fault Tolerance in Distributed Systems, Prentice Hall, 1994.
Lynch N, Distributed Algorithms, Morgan Kauffman, 1996.
Gouda M, Elements of Network Protocol Design, John Wiley, 1998.

  • Background: development and scope of social informatics; practical goals.
  • Understanding individual behaviour: perception, memory and action.
  • Modelling human interaction with digital systems.
  • Design methodologies and notations.
  • Techniques and technologies: dialogue styles, information visualisation.
  • Designer-user relations: iteration, prototyping.
  • Evaluation: formative and summative; performance and learnability.
  • Mobile computing and devices: novel interfaces; ubiquitous computing.
  • Organisational factors: understanding the workplace; resistance; dependability.

Innovation processes at scale: social shaping of IT, actor-network theory, co-production.