Teaching
I believe the two central tasks for an academic are
creating
and
disseminating knowledge. One of the best ways I can
disseminate knowledge, and have a more immediate impact in the world, is
through my university teaching, which is always a joy.
My open-source educational resources
I often like to provide my students with
summary notes of key ideas, particularly when such ideas are quite technical.
I see no reason to keep these under lock and key! I hope they can
be helpful for others, either as learners or teachers (or both).
Thus, below you can find my lecture notes, and links to their source code
on GitHub.
If you spot any errors, I welcome issues and pull requests
(via the linked GitHub repositories),
and I would also love to know if you have used these in any way (you
could drop me an e-mail, or an issue on GitHub to let me know).
Current teaching
-
(Kent) COMP5002 - Functional Programming (convener, Year 2) - 2016-present
-
(Kent) COMP4016 - Computer Systems (convener, Year 1) - 2026-present
Previous teaching
-
CO661 - Theory and Practice of Concurrency (Year 3) - 2018-2022
-
CO583 - Introduction to programming via the web (Year in Computing) - 2016-2021
-
CO580 - Year in Computing projects (convener, Year in Computing) - 2017-2020
-
CO519 - Theory of Computing (Year 2) - 2017-2021
-
CO323 - Databases and the web (Year 1) - 2017
-
Type Systems for Programming (Year 2, Cambridge) - 2014
-
Research topics: Mathematically structured programming (Year 3, Cambridge) - 2014
-
Small-group teaching:
Hoare Logic & Model Checking (2016),
Optimising Compilers (2008-09, 2013-14),
Semantics of Programming Languages (2009-14),
Logic and Proof (2013-14),
Concepts in Programming Languages (2010-11),
Comparative Architectures (2009)