# Student Projects

This page lists a series of suggested student projects within HIPERFIT. For more information about the possibilities, please talk to the appropriate contact persons.

### Bachelor Projects

### Project: Parallel Optimisation Methods for Futhark

This project aims at developing one or more numerical optimisation
methods for Futhark and at investigating
the possibilities for parallelising the methods and contexts in which
optimisation occurs. In general, when *f : R^n -> R* is a
high-dimensional function, finding the argument tuple that maximises
(or minimises) the function is considered an optimisation
problem. Depending on the properties of *f* (e.g., convexity) and
whether it is feasible to compute the derivative of *f* (with respect
to some location and some direction), different methods apply.

A project may involve identifying a real-world problem to solve (using an optimisation method), for instance within economics or engineering, and it will involve getting acquainted with using the data-parallel programming language Futhark, which makes it possible to run data-parallel applications efficiently on GPUs.

Possible optimisation routines worth considering include routines such as Nelder Mead and gradient descent.

Contact person: Martin Elsman (2021-06-16).

### Project: Solving Coupled Differential Equations in Futhark

Using Futhark’s higher-order parameterisation methods (e.g., higher-order functions and modules), this project aims at developing generic routines for solving sets of coupled differential equations in parallel (over sets of different parameter sets).

Methods of interest include Euler’s method, Heun’s method, and other, more involved, Runge-Kuta methods.

A project may involve identifying a real-world problem to solve, for instance within economics or engineering, and it will involve getting acquainted with using the data-parallel programming language Futhark, which makes it possible to run data-parallel applications efficiently on GPUs.

Contact person: Martin Elsman (2021-06-16).

### Project: Data-Parallel Interpretation of Numerical Code

Sometimes, it is beneficial to run in parallel (e.g., on a GPU) code that is represented as input data (e.g., instructions for a stack machine, perhaps generated by a Python program).

Using Futhark’s support for simple algebraic (non-recursive) datatypes, this project aims at investigating the possibility for parallel execution of sequences of stack machine instructions and to investigate possible uses of the technique.

Possible use cases include analysis of fractal images and recurrent equations.

A project may involve identifying a real-world problem to solve, for instance within economics or engineering, and it will involve getting acquainted with using the data-parallel programming language Futhark, which makes it possible to run data-parallel applications efficiently on GPUs.

Contact person: Martin Elsman (2021-06-16).

### Project: Memory-Region Aware Task-Parallel Programming in Standard ML

This project aims at investigating the use of MLKit (a Standard ML compiler that uses region-inference as the primary memory management strategy) for implementing a set of task-parallel algorithms.

Combining a memory discipline such as region-inference with routines for task-parallelism can be beneficial due to guarantees given by the memory discipline that data-races cannot appear. The MLKit compiler, developed at DIKU, has recently been augmented with preliminary support for writing task-parallel programs. This project aims at experimenting with and evaluating this compiler extension and perhaps compare its performance with the MPL compiler, a derivative of MLton.

A project may involve identifying a real-world problem to solve, for instance within economics or engineering, and it will involve getting acquainted with writing programs in Standard ML (much similar to writing F# or OCaml code).

Contact person: Martin Elsman (2021-06-16).

### Project: The HIPERFIT Portfolio Management Prototype

Please consult the project background information and the bachelor project teaser slides.

Contact persons: Danil Annenkov or Martin Elsman.

### Project: Optimization of a Haskell Automatic Differentiation Library

Esben Halvorsen describes in his MSc project Calculating Key Ratios for Financial Products using Automatic Differentiation and Monte Carlo Simulation, how to construct a Haskell framework for Automatic Differention (AD), which turns out to be useful for calculating “the greeks” (key ratios) for financial products. The framework has been implemented in Haskell and the project report outlines a series of possibilities for optimizations, including an improved representation of arrays. This project is about investigating the possibilities for optimization of the AD framework, possibly for pricing and calculating greeks on parallel hardware.

Supervisor: Martin Elsman