Module overview
This module aims to provide a broad and stimulating introduction to the theory of computing
Linked modules
Pre-requisites: COMP1215 and COMP1201
Aims and Objectives
Learning Outcomes
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- The time and space complexity of algorithms and problems
- The complexity class PSPACE together with examples of PSPACE-complete problems
- The nature and examples of undecidable problems
- The diagonalisation proof technique
- The relationship between the regular, context-free and recursively enumerable classes of languages, and the state-machines that accept them
- The complexity classes P and NP together with examples of NP-complete problems
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Analyse the complexity of a given algorithm or problem
- Use the reduction technique to show that a problem is undecidable
- Use polynomial-time reduction to reason about the complexity class of a problem
- Ascertain and prove whether or not a given language is regular
- Ascertain and prove whether or not a given language is context-free
Syllabus
Automata theory
- Finite state automata, regular expressions and regular languages
- The pumping lemma for regular languages
- Closure properties of regular languages
- Context-free grammars and pushdown automata
- Closure properties of context-free languages
- The pumping lemma for context-free languages
Computability theory
- Turing machines, recursively enumerable and recursive languages
- Church-Turing thesis
- Limitations of algorithms: universality, the halting problem and undecidability
Computational complexity theory
- Complexity of algorithms and of problems
- Complexity classes P, NP, PSPACE
- Polynomial-time reduction
- NP-Completeness and Cook's theorem
- PSPACE-Completeness
Learning and Teaching
Type | Hours |
---|---|
Follow-up work | 36 |
Wider reading or practice | 12 |
Tutorial | 12 |
Lecture | 36 |
Preparation for scheduled sessions | 36 |
Completion of assessment task | 8 |
Revision | 10 |
Total study time | 150 |
Resources & Reading list
Textbooks
Hey AJG (1996). Feynman Lectures on Computation. Addison Wesley.
Dewdney AK (2001). The (new) Turing Omnibus. Henry Holt.
Gruska J (1996). Foundations of Computing. Thomson.
Sipser M, (1997). Introduction to the Theory of Computation. PWS.
Dexter C. Kozen (1999). Automata and Computabilty. Springer.
Cohen D (1996). Introduction to Computer Theory. Wiley.
Harel D (1992). Algorithmics: The Spirit of Computing. Addison Wesley.
Jones ND (1997). Computability and Complexity. MIT.
Barwise J and Etchemendy J (1993). Turing's World. Stanford.
Hein J (2002). Discrete Structures, Logic, and Computability. Jones and Bartlett.
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Examination | 90% |
Quizzes | 10% |
Referral
This is how we’ll assess you if you don’t meet the criteria to pass this module.
Method | Percentage contribution |
---|---|
Examination | 100% |
Repeat
An internal repeat is where you take all of your modules again, including any you passed. An external repeat is where you only re-take the modules you failed.
Method | Percentage contribution |
---|---|
Examination | 100% |
Repeat Information
Repeat type: Internal & External