Mr Neil Brown

Research Student

Photo of NC Brown
  • Tel:     +44 (0)1227 827841
  • Fax:     +44 (0)1227 762811
  • Email: nccb2@kent.ac.uk
  • Room H4.3 Darwin
    School of Computing
    University of Kent, CT2 7NF

Publications

My publications are available from the Computer Science department publications repository.

Generally a more up-to-date list of my publications can be found on my personal homepage. Here are some links to sets of slides for presentations I have given (or co-given!):

Communicating Haskell Processes (CHP) library

Conjunction

Tock

  • Tock: Every compilation begins with a single pass; the first of two talks on the Tock compiler given Nov/Dec 2007. This one focuses on nanopass compilation in Haskell, our use of generics in Tock and work on implementing extensible pattern-matching using generics. We have now solved the issue mentioned with generics and parametric types on slide 15.
  • Tock: A nanopass presentation; the second of the two talks on the Tock compiler given Nov/Dec 2007. Discusses compiling occam, our Parsec-based parser, work using generics to navigate and modify tree structures, our backend code-generation using function tables (and how we test them) and some reflections on using Haskell.
  • Tock: Beginning With Omega (with notes). A presentation I gave to explain the Omega Test, a technique for solving linear equations (used here to check for array index disjointness in occam). The Omega Test is not my work, but hopefully this paper does a decent job of explaining it, and also discusses how to transform program code into equations to feed into the Omega Test.

Other

PhD Project Summary

My PhD is nominally centered around investigating interesting concurrent language features (and combinations thereof). I want to investigate topics such as language features to support the termination of concurrent process networks (such as poison), interesting implementation ideas (such as hidden, or implicit, mobility) and various others.

In order to support this research I work on the Tock compiler, which is written entirely in Haskell. So my days are currently spent full-time writing Haskell code, and some interesting research has emerged from this.

Research Interests

I am a member of the following research groups:

Concurrency

I am interested in programming languages and tools for concurrent programming, specifically process-oriented programming. I developed and now maintain C++CSP, a process-oriented programming library for C++. My experiences with implemented process-oriented programming in a language not designed for it have led me to consider a new language Rain, which I plan to work on during my PhD.

My interests lie with desktop/server computing rather than embedded programming. The advent of multi-core desktop CPUs at reasonable prices mean that research into safe and easy concurrent programming is becoming more relevant. My aim is that my research will help programmers develop concurrent programs more easily, and with less bugs, than the typical imperative threaded programming approach (with its mess of locks and race hazards).

Haskell

While working on Tock, a compiler written in Haskell, I have become interested in very practical techniques for doing interesting things in Haskell. We make lots of use of generics (using GHC's Data.Generics module, also known as Scrap Your Boilerplate or SYB), and I keep finding more uses for them.

Other interesting things we use include: monad transformers, vararg typeclass tricks, QuickCheck, Parsec, and a whole lot of dollars. I am interested in anything that can make Tock simpler, more reliable/robust, more capable or faster (roughly in that order of precedence).