St Andrews Functional Programming Group

Who are we?

We are the functional programming group at the University of St Andrews. Functional programming involves writing programs using pure functions. Unlike conventional programming (including much object-oriented programming), side-effects are completely eradicated. This allows a very clean, very high-level, very concise programming model.

Functional programs are

Quick to write.

Easy to reason about.

Easy to modify and debug.

Easy to make parallel.

Previous work at St Andrews has focused on Parallel Implementation and Functional Persistence. Our parallel implementation work uses the Glasgow Parallel Haskell dialect of the non-strict functional language Haskell that has been developed in collaboration with researchers at Glasgow, Heriot-Watt and the Open University. Work on functional persistence has been done in collaboration with researchers from UCL and Universidade da Coruña, Spain.

News and Events

The latest St Andrews Functional Programming Group posts from the School of Computer Science blog.

Dr. Vladimir Janjic – Efficient Dynamic Mapping of Parallel Applications to NUMA Architectures by Reinforcement Learning

Event details

  • When: 7th December 2017 12:00 - 12:00
  • Where: Honey 103 - GFB
  • Format: Talk

Title: Efficient Dynamic Mapping of Parallel Applications to NUMA Architectures by Reinforcement Learning


Abstract: We present a dynamic framework for mapping threads and data of parallel applications to computational cores/memory nodes of parallel non-uniform memory architecture (NUMA) systems. We use a feedback-based mechanism where the performance of each thread is collected and used to drive the reinforcement-learning policy of assigning affinities of threads/data to CPU cores/memory nodes. The proposed framework can address different optimisation criteria, such as maximum processing speed and minimum speed variance. We demonstrate that we can achieve an improvement of 12% in execution time compared to the default Linux operating system scheduling/mapping of threads under varying availability of resources (e.g. when multiple applications are running on the same system).

Model Checking and Cache Coherence Protocols – Dr. Ruth Hoffmann

Event details

  • When: 30th November 2017 12:00 - 13:00
  • Where: Cole 1.33b
  • Format: Talk