CM50260: Foundations of computation
[Page last updated: 18 August 2023]
Academic Year:  2023/24 
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: 

Assessment Summary:  CW 40%, EX 60% 
Assessment Detail: 

Supplementary Assessment: 

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:

Aims:  To introduce formal models of computation: finite automata, pushdown automata, Turing machines, and the corresponding classes of formal languages: regular, contextfree, semidecidable. To teach students to design algorithms for concrete computational problems within these models of computation. To introduce the dichotomy between deterministic and nondeterministic 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 nondeterministic finite automata.
2. Regular languages. Existence of nonregular languages. 3. Pushdown automata and contextfree grammars and languages. Parsing in contextfree languages. 4. Existence of noncontextfree languages via Pumping Lemma. 5. Turing machines and ChurchTuring Thesis. 6. Universal Turing machine and undecidability of the halting problem. 7. Nondeterministic 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:
