CS917 Foundations of Computing
CS917 15 CATS (7.5 ECTS) Term 1
Availability
Core  MSc Computer Science, MSc Data Analytics, MSc Behavioural and Data Science
Prerequisites
None
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.
Content

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)
Books
 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
Assessment
Coursework (100%)  three assignments.
Teaching
30 hours of lectures, 20 hours of seminars