Introduction to Theoretical Computer Science - Lectures

The following is the provisional plan for the course. Owing to expected nationwide strike action, the timetable from week 6 onwards will be disrupted.

Changes:(16 Mar) Post-strike schedule
(22 Feb) Strike info
(7 Feb) Lectures 9 and 10 moved to week 5 as prerecorded videos.
(22 Jan) Last two lectures moved to Mondays of weeks 10 and 11.

Slides for the entire course
1-up for viewing and 4-up for printing
These are the slides for the entire course; probably some changes or amendments will be made during the course.
Week 1
Mon 15 Jan, Lecture 1
General introduction to the course. What are computers? What is computation?
Thu 18 Jan, Lecture 2
Definition of register machines. Programming RMs. Examples. Pairing.
Notes for RMs and programming
Week 2
Mon 22 Jan
Coursework 1 issued
Mon 22 Jan, Lecture 3
Universal RMs. The Halting Problem (with proof). Other models.
Notes for universal machines, halting, oracles
The poetic proof was Geoff Pullum's Scooping the Loop Snooper.
For a more detailed account of the construction of a Universal Register Machine, see Philippa Gardner's lecture slides.
For more information and technical details of Turing Machines, see either Sipser ch.3 (for the TM formalism) and 4 (for the Halting Theorem), or the lectures 3 and 4 of the old Computability and Intractability course.
Thu 25 Jan, Lecture 4
Computable functions. Decision problems and oracles. Reductions. Undecidability proofs. Uniform Halting.
Notes for reductions and uniform halting
Reading: for reductions and undecidable problems, Sipser ch. 5.
Tutorial sheet 1 for week 3 tutorials.
Week 3
Mon 29 Jan, Lecture 5
Looping. Semi-decidability. Enumeration. Looping revisited. Uniform Halting revisited.
Notes for semi-decidability, enumeration, UH
Reading: Sipser doesn't really cover this. Wikipedia is OK; also any textbook on `computability theory' or `recursion theory'. The notes for the old Computability and Intractability course also cover it: in particular Note 9 and Note 10.
Thu 1 Feb, Lecture 6
UH continued. Beyond UH. Primitive recursion and partial recursion. Arithmetical hierarchy. (Not official part of course).
Notes for the arithmetic hierarchy, primitive recursion.
Reading: again, any `recursion theory' textbook. I also have some old notes for a postgraduate course, of which the first 6 pages cover the arithmetical hierarchy (though not primitive recursion). However, you don't need to read this - it's not in the course syllabus.
Tutorial sheet 2 for week 4 tutorials.
Week 4
Mon 5 Feb, Lecture 7
Complexity of algorithms and problems. Polynomial time. Polynomial reductions. Outside P.
Notes for lectures 7-9
Reading: Sipser sections 7.1 and 7.2.
Thu 8 Feb, Lecture 8
Non-determinism. The class NP. NP-completeness and statement of Cook-Levin.
Reading: Sipser 7.3 and 7.4.
Tutorial sheet 3 for week 5 tutorials.
Week 5
Mon 12 Feb, Prerecorded Lecture 9
Proof of Cook-Levin.
This lecture is not delivered in person, but by prerecorded video. You can watch either by:
See previous notes handout.
Reading: Sipser 7.4 for the structure of the proof. The adaptation to register machines you have to work on understanding yourselves.
Thu 15 Feb, Prerecorded Lecture 10
More NP problems. Beyond NP.
This lecture is not delivered in person, but by prerecorded video. You can watch either by:
Notes for this lecture
Sipser 7.5, then look briefly through ch. 8, 9.1, 10.1--10.3.
Tutorial sheet 4 for week 6 tutorials.
Fri 16 Feb
Coursework 1 due at 16:00
Flexible Learning Week
No course activities this week
UCU Strike
Owing to the forthcoming industrial action, the delivery of the final part of the course is unpredictable. I will put the list of lectures (with links to materials, when available) here, and fill in the dates of delivery as the situation evolves.
  • Lecture 11: Syntax and semantics of untyped lambda-calculus.
    Notes for this lecture
    Reading: Pierce Ch. 5 up to page 65 half-way down; plus back-references to previous chapters.
  • Lecture 12: Recursion and the Y combinator. Simple types.
    See previous notes for recursion, following notes for types.
    Reading: Pierce, rest of ch. 5; (ch. 8 and) 9.1, 9.2.
    Tutorial sheet 5 for week 10 tutorials.
  • Lecture 13: Proof systems for simple types. Properties of simple typing. Recursion in a typed language. Extensions, let, letrec.
    Notes for this lecture
    Reading: Pierce 9.2, 9.3,9.5, 11 (esp. 11.5 and 11.11), 12.
  • Lecture 14: Type reconstruction for the simply-typed calculus.
    Notes for this lecture
    Reading: Pierce 22.1-22.5.
    Tutorial sheet 6 for week 11 tutorials.
  • Lecture 15: Polymorphic types, Hindley-Milner type inference.
    Notes for this lecture
    Reading: Pierce ch 22 (again, not missing bits).
    Tutorial sheet 7 for week 12 tutorials.
  • Lecture 16: Non-examinable. Curry-Howard and propositions as types. Gödel's incompleteness theorem; incompleteness in mathematics.
  • Fun lecture: Unofficial lecture on Infinity.
Week 6
Mon 26 Feb
Coursework 2 issued
Mon 26 Feb Strike scheduled
Thu 1 Mar, No Lecture (snow closure)
Week 7
Mon 5 Mar, Strike scheduled
Coursework 1 returned.
Thu 8 Mar, No Lecture (regardless of Strike scheduled)
Week 8
Mon 12 Mar, Strike scheduled
Thu 15 Mar, Strike scheduled
Week 9
No tutorials this week
Mon 19 Mar, Strike scheduled
Wed 21 Mar, Lecture 11
At 13:10 in G.8 Gaddum LT, 1 George Sq (Neuroscience)
Thu 22 Mar, No Lecture
Fri 23 Mar
Coursework 2 due at 16:00
Week 10
Tutorials resume this week
Mon 26 Mar, Lecture 12
Thu 29 Mar, Lecture 13
Week 11
Mon 2 Apr, Lecture 14
Thu 5 Apr, Lecture 15
Week 12
Tutorials given if tutors available
Mon 9 Apr, Fun Lecture on infinities and big numbers
Fri 13 Apr
Coursework 2 due at 16:00

Home : Teaching : Courses : Itcs 

Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail:
Please contact our webadmin with any comments or corrections. Logging and Cookies
Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh