Learning Outcomes:
On completion of this module students should be able to:
- Define and use general concepts like computation, algorithm, and language;
- Work with several models of computing including finite state machines, Turing machines, and automata;
- Use appropriate computation models for real applications;
- Understand and use notions of computability and decidability, and their limits;
- Understand and explain the relationships between mathematical proof and computation.
Indicative Module Content:
The topics covered in this module are:
1. Regular Languages (Finite Automata, Regular Expressions)
2. Context-free Languages (Pushdown Automata, Context-free Grammars)
3. Recursively Enumerable Languages (Turing Machines)
4. Undecidability (Does a computer solution/algorithm exist?)
5. Intractability (Can it be solved fast?)