Mr Neil Brown
Research Student
|
|
|
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
- Communicating Haskell Processes (Research Group, June 2008, with notes). This is a research group talk on some aspects of my Haskell concurrency library. It's not the best introduction to the library, but it does explain some of the underlying details.
- Communicating Haskell Processes (AngloHaskell 2008, August 2008, with notes). This talk serves as an introduction to the programming model/methodology underlying the library.
- Communicating Haskell Processes (CPA 2008, September 2008). This talk focuses on the Haskell features (and new CHP features) that could be of interest to other concurrent programmers.
Conjunction
- How to Make Your Process Invisible, a.k.a. The Dialing Philosophers (CPA 2008, September 2008, with notes). A talk that made more sense if you were there, explaining how conjunction can be used to seamlessly interject a process between two others without breaking the synchronisation.
- Conjunctive Choice (CoSMoS project meeting, October 2008). A short talk using an example of movement rules for "sticky" platelets (taken literally in the slides) to show how conjunction can be used.
- Implementing Choice Using Transactional Memory (MM-NET Workshop, October 2008, with notes). A talk using an example of agent movement to explain disjunctive and conjunctive choice, and then going on to give an overview of how this is implemented using Transactional Memory.
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
- Representation and Implementation of CSP, VCR and Structural Traces (CPA 2008, September 2008). A paper describing the theory and implementation surrounding the tracing mechanisms in my CHP library.
- Poster on Implicit Mobility. This is as-yet unpublished work, describing my work on implicit mobility. Some of the graphics have suffered slightly during the conversion to PDF, but it should still be very readable.
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).