| Week | Lectures |
Lecture handouts (for screen viewing) |
Lecture handouts (for printing) |
Tutorial sheets (for printing) |
|---|---|---|---|---|
| 1 | Introduction | ps | ||
| Problems & algorithms | ps | |||
| 2 | Algorithmic constructs | ps | ps | |
| More algorithmic constructs | ps | |||
| 3 | Recursive definitions | ps | ps | |
| Recursive algorithms | ps | |||
| 4 | Formal languages | ps | ps | |
| Programming languages: syntax | ps | |||
| 5 | Programming languages: semantics | ps | ps | |
| Introduction to correctness | ps | |||
| 6 | Bank Holiday | Mock class test | ||
| The syntax of propositional logic | ps | |||
| 7 | The semantics of propositional logic | ps | ps | |
| Propositional logic metatheory | ps | |||
| 8 | Formal deduction | ps | ps | |
| Formal and informal proof | ps | |||
| 9 | Program specifications | ps | ps | |
| Floyd-Hoare logic for partial correctness | ps | |||
| 10 | Floyd-Hoare logic for conditionals | ps | ps | |
| Invariants of loops | ps | |||
| 11 | More on invariants | ps | ps | |
| Total correctness | ps | |||
| 12 | Correctness in practice | ps | ||
| Class Test | ||||
| 13 | Analysing algorithm complexity | ps | ||
| Algorithm complexity | ps | |||
| 14 | Algorithms with exponential complexity | ps | ps | |
| Algorithms with logarithmic complexity | ps | |||
| 15 | Asymptotic analysis | ps | ps | |
| Problem complexity | ps | |||
| 16 | Tractable and intractable problems | ps | ps | |
| Graph problems | ps | |||
| 17 | Reductions | ps | ps | |
| P and NP problems | ps | |||
| 18 | NP-Hard and NP-Complete problems | ps | ps | |
| Cryptology | ps | |||
| 19 | The halting problem | ps | ps | |
| Other non-computable problems | ps | |||
| 20 | Turing machines | ps | ps | |
| Combining Turing machines | ps | |||
| 21 | Extensions to Turing machines | ps | ps | |
| Another model of computation | ps | |||
| 22 | All computers are created equal | ps | ps | |
| Revision | ||||
| 23 | Bank holiday | |||
| Revision | ||||
| 24 | Revision | |||
| Class Test |