M.C. Escher - Metamorphosis II Me!

Dr. Tristan Allwood

I have now left the Department of Computing.

After 12 amazing years I left the Department of Computing in 2015.

Formely a First Year Teaching Fellow in the Department of Computing, Imperial College, London

First Year

The First Year Noticeboard can be found online.

First Year Tweets (informal communication, behind the scenes updates and ocassionally important reminders) ara available via @DoCFirstYear.


I lectured Introductory Java Programming, and also some one-off lectures on tooling, including Git.

CO120.2, Part I: Introduction to Java, Autumn 2011-2014

Git for Group Work

Introduction to the First Year Laboratories

Lecture Recording

I have some notes on lecture recording in DoC available.

Research Interests

My PhD was supervised by Prof. Susan Eisenbach. Prof. Sophia Drossopoulou also provided secondary supervision.

My research interests have gravitated around Haskell programming, with a theme of Random Test Generation.

My publications are available online, from the ACM and from the dblp.

I am part of the SLURP research group. The calendar for our meetings is available online.

Irulan: Random Black Box Testing for Haskell

Automatic Crash finder / black box testing for Haskell using the GHC API. Lecturer Cristian Cadar also mentored me on this project.

Finding the Needle: Stack Traces for GHC

I undertook a 3 month internship at Microsoft Research, Cambridge, under Simon Peyton Jones. During this time I developed a prototype stack-trace facility for GHC.

CLASE: Cursor Library for a Structured Editor

I started trying to make a structured editor for an extended lambda calculus. As part of that project, I developed a practically useful zipper-like library/tooling that used interesting GHC features (Type Families, GADTs).

Tickling Java With a Feather

I Used FeatherWeight Java to define a space of programs and act as a type checking oracle. I then generated FJ programs and using them to check a Java compiler agrees with the FJ type checker.

This work was then built upon by a Prize winning student group project.

Haskell 'Games'

At the start of my PhD, myself and Matthew Sackman looked at, and prototyped some OpenGL games/hacks using Haskell.

Previous Teaching

Advanced Haskell

Optional autumn term programming lectures for 1st years during the first term. Topics over the last couple of years have included:

Advanced Java Lectures

I have previously taught and assisted teaching these optional Spring term lectures for first years. Topics included:

Undergraduate Projects


4th Year MEng Project Report. About pluggable, iterative type checking for dynamic programming languages.


3rd Year MEng Group Project Report. Prize-winning project about a user friendly graphical system shell written in Java.


I am the maintainer and co-developer of the current version of the programming language Kenya.

I was awarded the Computing Departmental Graduate Teaching Assistant award in 2010 for the advanced Haskell and Java courses I helped organise. The citation.

Previous website (with various Java applets on it)

M.C. Escher - Metamorphose