- Academic Registry
Course & Unit Catalogues


CM50278: Foundations of computation

[Page last updated: 14 August 2024]

Academic Year: 2024/25
Owning Department/School: Department of Computer Science
Credits: 6 [equivalent to 12 CATS credits]
Notional Study Hours: 120
Level: Masters UG & PG (FHEQ level 7)
Period:
Semester 1
Assessment Summary: CW 100%
Assessment Detail:
  • Coursework (CW 100%)
Supplementary Assessment:
Like-for-like reassessment (where allowed by programme regulations)
Requisites: This module is only available to apprentices on the Level 7 Digital and Technology Solution Specialist Apprenticeship
Learning Outcomes: On completion of this unit, students will be able to: 1. Demonstrate an understanding of the fundamental models of computation and the corresponding classes of formal languages, suitably expressed; 2. Design and apply algorithms for specific computational problems involving languages and computational models of appropriate types (e.g. automata); 3. Prove formally that some computational problems are undecidable within a particular class of computational models; 4. Demonstrate an understanding of the role of grammars in the context of parsing algorithms, by applying the theoretical knowledge to concrete cases. 5. Give upper bounds on complexities of some decidable computational problems.


Aims: This unit will go back to the early days of computing, long before any physical machines existed which would be recognisable today as a computer. Do computational problems exist which have no possible `method' for solving? And when a `method' exists, on which resources does it rely upon, and what is its cost? In this unit, students will learn that to answer these questions they must investigate formally what a 'method' actually is, and appreciate its limits, as well as learning about some unsolvable problems, students will learn some techniques that are used in many modern systems, including the core component of how compilers are able to process source code when programming. This unit also covers how formal computation models can be used to reason about the relative speed or complexity of various algorithms without needing to write any actual code.

Skills: Use of IT (A), Application of Number (T/F, A), Problem Solving (T/F, A), Critical thinking (T/F,A), communication (T/F,A)

Content: Topics covered in this unit may include (but are not limited to) the following: 1. Basic mathematical notions and terminology. Deterministic and non-deterministic finite automata 2. Regular languages and their properties, regular expressions and relations to computational models. 3. Existence of non-regular languages via the pumping lemma. Context free grammars and languages, and their properties. 4. Pushdown automata. Parsing with context-free grammars, Chomsky Normal Form, application of theoretical knowledge to a concrete case. 5. Existence on non-context-free languages via the pumping lemma. 6. Turing machines and Church Turing Thesis. 7. Universal Turing machine, and undecidability of the halting problem. 8. Computational analysis and complexity: the classes P and NP. Decidable, semi decidable, undecidable properties.

Course availability:

CM50278 is Compulsory on the following courses:

Department of Computer Science

Notes:

  • This unit catalogue is applicable for the 2024/25 academic year only. Students continuing their studies into 2025/26 and beyond should not assume that this unit will be available in future years in the format displayed here for 2024/25.
  • Courses and units are subject to change in accordance with normal University procedures.
  • Availability of units will be subject to constraints such as staff availability, minimum and maximum group sizes, and timetabling factors as well as a student's ability to meet any pre-requisite rules.
  • Find out more about these and other important University terms and conditions here.