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++.

Selected publications

  • Structural refactorings for exploring dependently typed programming

    Barwell, A. D., Brown, C. M., Chang, M. S., Theocharis, C. & Thompson, S., 2024, (Accepted/In press) Structural refactorings for exploring dependently typed programming. Springer

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

  • Towards specification-guarded refactoring

    Brown, C. M., Barwell, A. D. & Sarkar, S., 2024, Logic-based program synthesis and transformation: 34th International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR 2024). Springer, (Lecture notes in computer science).

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

  • Open access

    The TeamPlay project: analysing and optimising time, energy, and security for cyber-physical systems

    Rouxel, B., Brown, C. M., Ebeid, E., Eder, K., Falk, H., Grelck, C., Holst, J., Jadhav, S., Marquer, Y., Martinez De Alejandro, M., Nikov, K., Sahafi, A., Schultz, U., Seewald, A., Vassalos, V., Wegener, S. & Zendra, O., 2 Jun 2023, Proceedings the 2023 design, automation & test in Europe conference & exhibition (DATE 2023): 17 - 19 April 2023, Antwerp, Belgium. Piscataway, NJ: EDAA/IEEE, 6 p. 10137198. (Proceedings (Design, automation, and test in Europe conference and exhibition)).

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

  • Open access

    COMPROF and COMPLACE: shared-memory communication profiling and automated thread placement via dynamic binary instrumentation

    Kirkpatrick, R., Brown, C. M. & Janjic, V., 15 Nov 2022, (Accepted/In press) 2022 IEEE 29th International Conference on High-Performance Computing, Data, and Analytics (HiPC 2022). Sur, C. & Bayyapu, N. (eds.). Piscataway, NJ: Institute of Electrical and Electronics Engineers Inc., p. 236-245 10 p. (IEEE International Conference on High Performance Computing, Data, and Analytics).

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

  • Open access

    Semi-automatic ladderisation: improving code security through rewriting and dependent types

    Brown, C., Barwell, A. D., Marquer, Y., Zendra, O., Richmond, T. & Gu, C., 17 Jan 2022, PEPM 2022: Proceedings of the 2022 ACM SIGPLAN International Workshop on Partial Evaluation and Program Manipulation. Ariola, Z. M. & Cong, Y. (eds.). New York: ACM, 13 p.

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

  • Towards a refactoring tool for dependently-typed programs (Extended abstract)

    Brown, C. M., Barwell, A., Thompson, S., Sarkar, S. & Brady, E. C., 31 Jul 2022. 8 p.

    Research output: Contribution to conferencePaperpeer-review

  • Open access

    Proving renaming for Haskell via dependent types: a case-study in refactoring soundness

    Barwell, A. D., Brown, C. M. & Sarkar, S., 18 Jul 2021, 8th International workshop on rewriting techniques for program transformations and evaluation (WPTE 2021). 10 p.

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

  • Open access

    Restoration of legacy parallelism: transforming pthreads into farm and pipeline patterns

    Janjic, V., Brown, C. M. & Barwell, A., 11 Jun 2021, In: International Journal of Parallel Programming. First Online, 25 p.

    Research output: Contribution to journalArticlepeer-review

  • Open access

    A hybrid approach to parallel pattern discovery in C++

    Brown, C. M., Janjic, V., Barwell, A. D., Thomson, J. D., Castañeda Lozano, R., Cole, M., Franke, B., Garcia-Sanchez, J. D., Del Rio Astorga, D. & MacKenzie, K., 14 May 2020, 2020 28th Euromicro International Conference on Parallel, Distributed and Network-Based Processing (PDP). IEEE Computer Society, 5 p. 9092377. (Proceedings - Euromicro Workshop on Parallel and Distributed Processing).

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

  • Open access

    A trustworthy framework for resource-aware embedded programming

    Barwell, A. D. & Brown, C. M., 11 Feb 2020, (Accepted/In press) Proceedings of International Symposium on Implementation and Application of Functional Languages (IFL'19). Stutterheim, J. & Chin, W. N. (eds.). ACM

    Research output: Chapter in Book/Report/Conference proceedingConference contribution

 

See more publications