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 diagonalisation proof technique
- The complexity classes P and NP together with examples of NP-complete problems
- The complexity class PSPACE together with examples of PSPACE-complete problems
- The time and space complexity of algorithms and problems
- The relationship between the regular, context-free and recursively enumerable classes of languages, and the state-machines that accept them
- The nature and examples of undecidable problems
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Ascertain and prove whether or not a given language is context-free
- Ascertain and prove whether or not a given language is regular
- Use the reduction technique to show that a problem is undecidable
- Use polynomial-time reduction to reason about the complexity class of a problem
- Analyse the complexity of a given algorithm or problem
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 |
---|---|
Tutorial | 12 |
Follow-up work | 36 |
Lecture | 36 |
Revision | 10 |
Completion of assessment task | 8 |
Preparation for scheduled sessions | 36 |
Wider reading or practice | 12 |
Total study time | 150 |
Resources & Reading list
Textbooks
Sipser M, (1997). Introduction to the Theory of Computation. PWS.
Dexter C. Kozen (1999). Automata and Computabilty. Springer.
Harel D (1992). Algorithmics: The Spirit of Computing. Addison Wesley.
Cohen D (1996). Introduction to Computer Theory. Wiley.
Gruska J (1996). Foundations of Computing. Thomson.
Hein J (2002). Discrete Structures, Logic, and Computability. Jones and Bartlett.
Barwise J and Etchemendy J (1993). Turing's World. Stanford.
Dewdney AK (2001). The (new) Turing Omnibus. Henry Holt.
Jones ND (1997). Computability and Complexity. MIT.
Hey AJG (1996). Feynman Lectures on Computation. Addison Wesley.
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Quizzes | 10% |
Examination | 90% |
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