I am currently responsible for two courses at Cambridge: first year (IA) Operating Systems and the M.Phil in Advanced Computer Science and Part III course, R01 Advanced Topics in Computer Systems. The former is a standard lecture course, the latter is a reading-based course where students read, review and present assigned papers.
Projects
I am happy to consider supervising final year and Masters’ projects related to my research interests. Current topics include edge computing, open banking data analysis and visualisation, operating systems for personal computers, as well as anything related to Human-Data Interaction.
Past projects I have supervised (final year undergraduate unless otherwise indicated) include:
2022–2023
- William Pan. Augmenting DeepDish with Face Blur.
2019–2020
- Anik Roy. A probabilistic programming language in OCaml.
2018–2019
- Aaron Hutton. Self-Archiving Website on MirageOS.
- Harri Bell-Thomas. Peer-to-Peer Social Networking atop Kademlia Distributed Hash Tables.
- Andrew Jeffery. XMPP Server on MirageOS.
- Chris Jensen. Diffing the DAG: Finding the minimum edit script of an acyclic graph.
- Huiyao Zheng. A ZeroMQ implementation for MirageOS.
- Tom Strudwick. Developing an application for data analysis of complex insect behaviours.
- Al Amjad Tawfiq Isstaif (M.Phil). Request Reconstruction in MirageOS Unikernels.
2017–2018
- Chris Jones. Achieving Distributed Consensus with Paxos.
- Sonny Sun. A Tor relay on MirageOS.
- Harry Graham. Deep Learning Techniques for Credit Card Fraud Detection.
- Junwei Yuan. BGPv4 on MirageOS.
- Tudor Tiplea (Part III). Supporting Browser-based Machine Learning: Distributed Data Processing at the Network’s Edge.
- Royson Lee (M.Phil). Adaptable Asynchrony: Improving Adaptive Stochastic Optimisation in Deep Learning.
2016–2017
- Joel Jakubovic. An XMPP Server Implementation in OCaml.
- Marius Latinis. Bus Arrival Time Prediction.
- Hrafn Erikson (M.Phil). Request modelling in Mirage OS unikernels with Raven.
- Ben Catterall (Part III). Probabilistic Synchronous Parallel: a barrier control method for distributed machine learning.
2015–2016
- Gabriela Sklencarova. Functional Network Stacks with MirageOS and Irmin.
- Rupert Horlick. Encrypted Keyword Search Using Path ORAM on MirageOS.
- Daniel Karaj. Unikernels for Bus Data Serving.
- Alex Rakowski. TCP Stack Spoofing with MirageOS.
- Sean Saville. Simulating Scheduling Algorithms.
- Daniel Spencer. Secure Auditable Logging with Dog.
2014–2015
- Ke Chen. Topology aware TCP bottleneck detection.
- Samuel Williams. Erlang on Xen.
Teaching @ Nottingham
While at the University of Nottingham I taught on the following modules:
- G52GRP Software Engineering Group Projects
- G53ID* Undergraduate Final Year Projects
- G54ACC Advanced Computer Communications (convened)
- G54GRP Horizon DTC Group Project
- G54CCS Connected Computing at Scale (convened)
- G64P* MSc Projects (IT, MIT, HCI)
Links
Finally, a collection of links to material that I have found interesting, useful or amusing, related (however tangentially) to Computer Science. Please note that these take you away from my pages and so I am not responsible for their content. If you happen to spot that any are broken, please do let me know.
- misc
- coding
- maths
- systems
- Twenty terrible reasons for lecturing
- On the cruelty of really teaching computing science
- A Tour through the Visualization Zoo
- 6.006: Introduction to Algorithms (MIT)
- An entrance exam, MIT, 1869
- Mathematics, the most misunderstood subject. Quite relevant to computer science (and probably other similarly “academic” subjects too).
- A Mathematician’s Apology, G.H. Hardy
- How to Write More Clearly, Think More Clearly, and Learn Complex Material More Easily
- Seven selected Information Visualization papers
- Colo(u)r wheels and from that, for more detail Light and the eye
- The Euler Archive
- How To Criticize Computer Scientists
- From NAND to Tetris
- Knuth’s Computer Musings
- 24/192 music downloads
- Natural Language Processing for the Working Programmer
- Security Engineering, Ross Anderson
- Hacking the Xbox, Andrew “bunnie” Huang
- Formal Methods, Andrew Butterfield, TCD
- Denotational Semantics: A Methodology for Language Development, David Schmidt, Kansas State University (book)
Tutorials
Python
JavaScript
Functional Programming
Objective-C
Probability and Statisics
Machine Learning
Graph Theory
Calculus
Networking
Operating Systems
Hardware
Databases