Dr Christopher Brown

Dr Christopher Brown

Lecturer

Researcher profile

Phone
+44 (0)1334 46 1629
Email
cmb21@st-andrews.ac.uk

 

Biography

I am a lecturer with a background in refactoring and parallel programming. My research is about making it as easy as possible for software developers to write parallel programs; making their software faster, safer and more sustainable. 

I am currently Principal Investigator on the EPSRC Energise project, researching into new techniques to refactor and schedule parallel C software for energy optimisation. 

I was previously Principle Investigator on the EU Teamplay project, looking into providing new techniques for developers to specify energy, time and security specifications in C programs for embedded systems.

Prior to that, I worked as a research assistant at St Andrews, contributing to a number of EU grants on refactoring and parallelism (ParaPhrase, Rephrase). I also have commercial experience, being CTO-Elect on a potential spin-out venture from St Andrews, through a Scottish Enterprise funded project to commercialise our refactoring tools. This resulted in ParaFormance: a tool suite for C and C++ software to enable developers to write multi-core code. I am very interested in new commercial exploitation, so please contact me if you are interested. 

I am a member of the Programming Languages group. 

Teaching

Undergraduate Modules:

  • CS3050 Logic and Reasoning (Autumn 2022-)
  • CS4201: Programming Language Design and Implementation (Autumn 2019- )
  • CS4204: Concurrency and Multi-Core Architectures (Spring 2019- )
  • CS3104: Operating Systems (Autumn 2021)

Postgraduate Modules:

  • CS5031: Software Engineering Practice (Spring 2023 - )

Research areas

My publications can be found on PUREGoogle Scholar and Research Gate.

Twitter: @chrismarkbrown

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
    • Parallelism safety
    • Removal of legacy concurrency
  • Refactoring
    • 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:

  • EPSRC: 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.
  • TeamPlayTeamPlay - 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.

Open-Source Software:

  • Skel: Skel is a parallel programming library for Erlang that implements common parallel patterns and skeletons.
  • ParaFormance: 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.

Selected publications

 

See more publications