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) Poststrike 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
 1up for viewing
and 4up 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.
Reading:
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. Semidecidability. Enumeration. Looping revisited. Uniform
Halting revisited.
Notes for semidecidability, 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 79
Reading: Sipser sections 7.1 and 7.2.
 Thu 8 Feb, Lecture 8
 Nondeterminism. The class NP. NPcompleteness and statement of
CookLevin.
Reading: Sipser 7.3 and 7.4.
Tutorial sheet 3 for week 5 tutorials.
 Week 5
 Mon 12 Feb, Prerecorded Lecture 9
 Proof of CookLevin.
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.110.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 lambdacalculus.
Notes for this lecture
Reading: Pierce Ch. 5 up to page 65 halfway down; plus
backreferences 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 simplytyped calculus.
Notes for this lecture
Reading: Pierce 22.122.5.
Tutorial sheet 6 for week 11 tutorials.
 Lecture 15: Polymorphic types, HindleyMilner type inference.
Notes for this lecture
Reading: Pierce ch 22 (again, not missing bits).
Tutorial sheet 7 for week 12 tutorials.
 Lecture 16: Nonexaminable. CurryHoward 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