## CM50260: Foundations of computation

[Page last updated: 23 October 2023]

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 40%, EX 60%
Assessment Detail:
• Coursework (CW 40%)
• Examination (EX 60%)
Supplementary Assessment:
Like-for-like reassessment (where allowed by programme regulations)
Requisites: Before or whilst taking this module you must take CM50258 OR take CM50109 OR take another programming module.
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 grammars and languages;
2. design algorithms for specific computational problems as automata of appropriate types;
3. demonstrate the practical application of grammars and language in to context of parsing algorithms
4. prove mathematically that some computational problems are undecidable within a particular class of computational models;
5. give upper bounds on complexities of some decidable computational problems.
6. put the theory in to practice

Aims: To introduce formal models of computation: finite automata, pushdown automata, Turing machines, and the corresponding classes of formal languages: regular, context-free, semi-decidable. To teach students to design algorithms for concrete computational problems within these models of computation. To introduce the dichotomy between deterministic and non-deterministic computation.
To give students an appreciation of limits of computation, including methods of proving undecidability and specific examples of undecidable problems. To introduce the concept of computational complexity and complexity classes.

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: 1. Deterministic and non-deterministic finite automata.
2. Regular languages. Existence of non-regular languages.
3. Pushdown automata and context-free grammars and languages. Parsing in context-free languages.
4. Existence of non-context-free languages via Pumping Lemma.
5. Turing machines and Church-Turing Thesis.
6. Universal Turing machine and undecidability of the halting problem.
7. Non-deterministic Turing machines, complexity classes P and NP.
8. The implementation of theoretical concepts in practical scenarios.

Course availability:

#### CM50260 is Compulsory on the following courses:

Department of Computer Science

 Notes: This unit catalogue is applicable for the 2023/24 academic year only. Students continuing their studies into 2024/25 and beyond should not assume that this unit will be available in future years in the format displayed here for 2023/24. 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.