Lecturer in Computer Science at the University of St Andrews, Scotland
Lecturer in Computer Science
Dr Christopher Brown
Jack Cole building
School of Computer Science
University of St Andrews
Tel: +44 (0) 1334 461624
Email: cmb21 \at st-andrews.ac.uk
15/06/2021: Our Paper, Proof-Carrying Refactorings: Sound Refactoring for Haskell via Dependent Types has been accepted to WPTE 21! With Adam Barwell and Susmit Sarkar.
11/06/2021: Our Paper, Restoration of Legacy Parallelism: Transforming Pthreads into Farm and Pipeline Patterns, is now published in the International Journal of Parallel Programming! DOI: 10.1007/s10766-021-00716-z. This is joint with Vladimir Janjic and Adam Barwell (at Imperial).
May 2021: I gave a talk summarising some of the work from the EU Teamplay project on the Contract Specification Language system for reasoning about non-functional properties using dependent types at the Teamplay Workshop (https://event.sdu.dk/teamplay-workshop). Slides available here.
May 2021: I gave a talk at the Teamplay workshop (https://event.sdu.dk/teamplay-workshop) about using refactoring and dependent types to make C programs more secure, via a technique using semi-interleaved ladders. Slides available here.
- 27/04/21: Our paper Restoration of Legacy Parallelism: Transforming Pthreads into Farm and Pipeline Patterns has been accepted into the International Journal of Parallel programming! Watch this space!
- We will hold a 2 day event in May to disseminate our work on the ongoing EU Teamplay project. Registration and tentative programme: https://event.sdu.dk/teamplay-workshop
My publications can be found on PURE, Google Scholar and Research Gate.
My main area of research is in Programming Languages: refactoring, parallelism, semantics, compilers. I am a member of the Programming Languages Group at St Andrews.
- Parallel Programming
Parallel programming, tools, languages, compilers, run-time systems, libraries, algorithms, schedulers, GPUs, energy-aware parallelism...
Semantics and verification of parallel programs
Parallel pattern (and skeleton) libraries
Removal of legacy concurrency
Transforming sequential programs into parallel versions
Proving correctness and general soundness of refactoring and program transformation, using verification techniques such as dependent types
Building refactoring tools to help developers write parallel programs
Optimising programs for energy efficiency, using compiler and refactoring techniques
- Programming Languages
- Compilers, static semantics, code generation, instruction selection
- Non-functional properties such as energy-efficiency
- Semantics of programming languages
- Correctness, verification and general soundness of compilers
Current projects and activities:
Energise: Refactorings and Skeletons for Energy-Aware Applications on High-Performance Embedded Systems (EPSRC)
EPSRC project. April 2021 - March 2024.
The Energise project aims to develop new, formally-motivated, refactorings and transformations that reduce energy consumption for embedded multi-core devices.
This includes implementing refactorings for target languages such as C; proving general soundness of the refactorings using e.g. dependent types; developing new programming abstractions (skeletons) for abstracting common energy-reducing programming patterns; running experiments; writing proofs of correctness, etc.
TeamPlay - Time, Energy and security Analysis for Multi/Many-core heterogenous PLAtforms (EU - Horizon 2020)
EU Horizon 2020 project. January 2018 - June 2021.
The TeamPlay project aims to develop new, formally-motivated, techniques that will allow execution time, energy usage, security, and other important non-functional properties of parallel software to be treated effectively, and as first- class citizens. We will build this into a toolbox for developing highly parallel software for low-energy systems, as required by the internet of things, cyber-physical systems etc.
Skel is a parallel programming library for Erlang that implements common parallel patterns and skeletons.
A refactoring tool suite for developing parallel applications in C and C++.
- CSL: Contract Specification Language is a library implented in Idris to allow developers to reason about non-functional properties of their C and C++ applications.
Postgraduate Research and Students
I am currently working with:
- Amaal Alhejaily on refactoring for reducing energy consumption.
- Yasir Alguwaifi on researching into meta-heuristic and MOO techniques for energy profiling in multi-cores.
I am very keen to find research students who will work me on any of these topics:
If you are interested in studying for a PhD or postgraduate study, please get in touch.
- refactoring multi-core
- refactoring for energy-aware systems
- energy-aware patterns and skeletons
- non-functional properties of time, energy and security
- program transformation
- formal reasoning of refactoring systems and/or parallel programming
- dependent types and refactoring
- formal semantics of programming languages
- parallel programming
CS4201: Programming Language Design and Implementation (Autumn 2019- )
CS4204: Concurrency and Multi-Core Architectures (Spring 2019- )
- I am Second Level Coordinator for Computer Science. Email: second-coord-cs at st-andrews.ac.uk
Christopher Brown (cmb21 at st-andrews.ac.uk)