Welcome to Spivey's Corner
This wiki preserves the materials for the lecture courses that I gave to Computer Science students in Oxford during the time I taught there, asd the Fellow and Tutor in Computer Science at Oriel College. It used to be a true wiki, in that most of the pages could be edited by participants in the courses, who would contribute questions and suggestions and occasionally corrections (always following the code of conduct, of course). But things move more slowly now, and it seems best to make all the material public but to disable editing so as to preserve a true record. Nevertheless, I would be delighted to hear from you by e-mail if you have a request or suggestion or correction to offer.
The material you see on this site is as I last presented it at Oxford, possibly with future corrections and improvements. If others pay me the compliment of continuing to use the material in the future, for a course at Oxford or elsewhere, you should look on the relevant official website for information about what content is to be covered, and the detailed conventions that apply.
Course materials
- Compilers, a course where we build compilers for various programming languages using OCaml.
- Digital Systems, a course about digital design and low-level programming in C and ARM assembly language.
- A Scala-based edition of a course on Object-Oriented Programming.
- An Oberon-based edition (the only worthwhile one) of a course on Imperative Programming.
- A course on Programming Languages based on interpreters written in Haskell.
- Notes for a course on Category Theory for Functional Programming.
- An earlier course on elementary design of Digital Hardware.
- A course on Operating Systems.
Project ideas
- A separate page has a list of projects that I most recently offered to supervise.
- Another page has some older project ideas. Some of these have been done and the results are publicly available; others don't seem so relevant now as when I first suggested them.
Books
Note: These books are slowly moving to GitHub, and PDF versions where available can be downloaded from there.
- Understanding Z.
- Z Reference Manual.
- An introduction to logic programming through Prolog. The GitHub repository contains a PDF copy of the book, and sources for building the picoProlog interpreter.
- A new project: Bare metal micro:bit – 21 experiments in low-level programming.
Papers
- Faster Coroutine Pipelines, presented at ICFP'17.
Talks
- Thomas Harriot and the Mercator Map, Oriel College, 30th November 2024.
- Parallel Parsing Processes Revisited, S-REPLS 10, September 2018.
- Bringing declarative programming to Life, Computing At School conference, Birmingham, 18th June 2016.
Software
- The Fuzz typechecker for Z.
- The Oxford Oberon-2 compiler OBC.
- GeomLab.
- Oxenv, a virtual appliance for VirtualBox with software to support Oxford teaching in Computer Science.
Miscellany
- Pages related to letterpress printing.
- Notes about experiments with hardware hacking.
- A rag-bag of mixed amusements and diversions.
- A page of random links to curiosa of the internet.
- Various tutorial notes written about specific problems.
- Some tech tips of variable accuracy.