• KY16 9SS

    United Kingdom

Accepting Postgraduate Research Students

PhD projects

Programming languages; refactoring; semantics; programming transformation; energy analysis; parallel programming; heterogeneous computing

Personal profile

Profile Keywords

Programming languages; refactoring; semantics; programming transformation; energy analysis; parallel programming; heterogeneous computing

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. 

 

Research overview

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.

Teaching activity

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

Expertise related to UN Sustainable Development Goals

In 2015, UN member states agreed to 17 global Sustainable Development Goals (SDGs) to end poverty, protect the planet and ensure prosperity for all. This person’s work contributes towards the following SDG(s):

  • SDG 7 - Affordable and Clean Energy

Education/Academic qualification

Doctor of Philosophy, Tool Support for Refactoring Haskell Programs, UNIVERSITY OF KENT

Award Date: 1 Jan 2010

Keywords

  • QA75 Electronic computers. Computer science
  • Refactoring
  • Parallel Computing
  • Low-Energy Computing
  • Programming Languages
  • Verification
  • Types

Fingerprint

Dive into the research topics where Christopher Mark Brown is active. These topic labels come from the works of this person. Together they form a unique fingerprint.
  • 1 Similar Profiles

Collaborations and top research areas from the last five years

Recent external collaboration on country/territory level. Dive into details by clicking on the dots or