Dr Christopher Brown
Lecturer
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 PURE, Google 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.
- TeamPlay: 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.
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. SpringerResearch output: Chapter in Book/Report/Conference proceeding › Conference contribution
-
Open access
Towards specification-guarded refactoring
Barwell, A. D., Brown, C. M. & Sarkar, S., 7 Sept 2024, Logic-based program synthesis and transformation: 34th International symposium, LOPSTR 2024, Milan, Italy, September 9–10, 2024, Proceedings. Bowles, J. & Søndergaard, H. (eds.). Cham: Springer, p. 149–165 (Lecture notes in computer science; vol. 14919).Research output: Chapter in Book/Report/Conference proceeding › Conference contribution
-
Open access
pi-par: a dependently-typed parallel language with algorithmic skeletons
Brown, C. M., Barwell, A. D. & Sloan, F., 4 Jul 2024. 20 p.Research output: Contribution to conference › Paper › peer-review
-
Open access
COMPROF and COMPLACE: shared-memory communication profiling and automated thread placement via dynamic binary instrumentation
Kirkpatrick, R., Brown, C. M. & Janjic, V., 26 Apr 2023, 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 proceeding › Conference 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 proceeding › Conference 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 proceeding › Conference 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 conference › Paper › peer-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 proceeding › Conference 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 journal › Article › peer-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 proceeding › Conference contribution