# Dr. Tristan Allwood

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

Email me at tristan.allwood@imperial.ac.uk, tweet me on @TotallyToRA, read my blog, fork some of my code, or find me on linked in.

## First Year Coordinator

The First Year Noticeboard can be found online.

## 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.

- PhD Thesis describing Irulan: [pdf]
- Paper, Sources, More details: available online
- Irulan: Automatic Crash Testing using the GHC API: slides. AngloHaskelll, 7th August, '09

### 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.

- GHC Sources with Patch Applied: download (88mb) README.
- Patches, and papers and slides: available online. (See the README file).
- Finding the Needle: Stack Traces for GHC: paper video slides (.odp) slides (.pdf). Haskell Symposium, 3rd September '09.

### 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).

- Sources and all papers and slides: available online. (See the README file).
- Strengthening the Zipper: paper slides. LDTA, 28th March, '09.
- Cursor Library for a Structured Editor (Tool Demo): video paper. Haskell Symposium, 25th September '08
- CLASE: slides audio. AngloHaskell, 8th August, '08

### 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.

- REACTOR: online. Prize winning student group project that took this work further.
- Code and code coverage results: available online.
- Tickling Java With a Feather: paper slides LDTA, 5th April, '08

### Haskell 'Games'

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

- 'Games' in Haskell: video, slides. Matthew Sackman and myself speaking about our experiences of learning Haskell and OpenGL and trying to write games. London Haskell User Group, 20th September '07
- The Haskell Motorcycle Diaries: slides. Talk about Haskell and early demo of our Haskell game attempt. Imperial College's 'Games and Media Event' (GaME), 17th May, 2007

## 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:

- Using the GHC toolchain (GHC, GHCi, GHCi debugger, hpc)
- Interesting algorithms/problems and solutions in Haskell: Stern Brocot, memoized Fibonacci, 3 and 4 tower Hanoi
- Haskell idioms: Monoids, Functors, Monads
- Fingertrees
- Concurrency: STM
- A smidgin of OpenGL to write a simple game (e.g. breakout).

### Advanced Java Lectures

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

- Simple neural networks
- Ant swarm simulation
- Inner classes, anonymous classes
- Networking and Distribution with sockets, serializable and RMI
- Java 5 features: wildcards, wildcard bounds, generic type intersections, enums and varargs
- Annotations and Reflection

## Undergraduate Projects

### Fleece

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

### Kevlar

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

## Miscellaneous

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)