On this page, you can find some ideas for Master thesis projects that I have an interest in supervising. These are just ideas, and often the final project description shaped to fit with the specific interests of the student. The common denominator for most of my projects is that they contain elements from:

Computer science

Mathematics

If you have a background in mathematics, the thesis will often lean more towards the mathematical aspects, and similarly if your background is in computer science the thesis will have more elements from computer science.

The idea behind a masters thesis is that you learn during your thesis work, which means that you will use your existing knowledge together with what you learn during your thesis to do your research.

On-demand flood risk calculation

Today, flood simulations are often run by the authorities manually, and quality controlled by an expert. However, there are a lot of rivers that are too small to be controlled by the authorities. In this project, you will create an online system that integrates data from the Norwegian Mapping Authority, rain data from the Norwegian Meteorological Institute with a flood simulator to create flood simulations on-demand

In this project you will learn about:

Flood simulations

Web programming and cloud computing

GIS systems

Python, javascript, C++

Integration of complex systems

Machine learning for ocean current simulation

The shallow water equations can be used to model the ocean, but these are a simplification of the actual physical processes. However, by adding different source terms, such as bed friction, wind friction, and Coriolis forces, we may get a better model. In this project, you will be working with the interplay of machine learning and such physical models. The aim is to use shallow water models for the major physical driving forces, and machine learning techniques to approximate the different source terms.

In this project you will learn about:

Computational oceanography

Machine learning and artificial neural networks

NETCDF and storage formats

GIS systems

Python, javascript, C++

Integration of complex systems

Machine learning for air pollution in Oslo

Today, NILU has a set of air pollution sensors distributed across Oslo. However, these are only point measurements, so we do not really know what the pollution situation is other places than at the exact measurement stations. In this project, you will be using machine learning techniques to predict the short term pollution level. You will also integrate wind and other data from the Norwegian Meteorological Institute into the model for more accuracy. In addition, you will create interpolated views that can estimate the pollution throughout the city.

In this project you will learn about:

Air pollution

Web programming and cloud computing

Python, javascript, C++

Integration of complex systems

Machine learning for autotuning

Autotuning computer software automatically adjusts parameters to optimize execution speed on different computers and architectures. In this project, you will be using machine learning to train an artificial neural network to predict the best parameter configuration for different types of architectures for different applications.

This project can be made more mathematical and more computer science heavy, depending on the background of the student.

In this project you will learn about:

Machine learning

Artificial intelligence

Hyperbolic conservation laws

GPU computing

Python

GPU Computing: Numba vs CUDA

Numba is a high performance compiler for Python that can automatically run code on the GPU. However, this kind of automatic magic may hide expensive data transfers and optimizations that you can make in e.g., CUDA. In this project, you will work with numerical simulations in CUDA, and see how these can be efficiently implemented using Numba.

In this project you will learn about:

GPU computing

Numba and CUDA

Python

Numerical simulation

Scientific visualization using Vulkan

Scientific visualization is an important topic: Numerical simulations often create gigabytes of data in terms of numbers. These numbers need to be interpreted, and that's where scientific visualization comes in. In this project, you will create a cross platform Python library for efficient scientific visualization of data from numerical simulations.

In this project you will learn about:

Scientific visualization

Vulkan and OpenGL

C++ and Python

Calling C++ from Python

Data assimilation on a cluster

Data assimilation is the process of getting measurements into a simulation. For example, if you know the water elevation at a certain point in a simulation from a measurement, you want your simulation model to also have that measured water elevation. This process can be formulated mathematically and is often referred to as data assimilation. In this project, you will experiment with the Sequential Importance Resampling particle filter on a cluster using MPI for ocean simulations.

In this project you will learn about:

Shallow water systems (ocean systems)

MPI computing

Particle filters

Data assimilation

Massively parallel simulations on clusters of GPUs using Python

Traditionally, high-performance codes have been written in C++. However, our experiments show that Python can be just as efficient for certain problems. In this project, you will be making a large-scale simulator for numerical simulation of conservation laws based on existing code.

In this project you will learn about:

MPI computing on clusters

Domain decomposition

Numerical simulation

Parallel computing

Pyton and C++

Uncertainty quantification

Numerical simulations are not exact, but estimates of how something such as a flood will evolve. In this project you will use techniques referred to as uncertainty quantification to determine where the simulation results can be trusted, and where the results are quite uncertain.

In this project you will learn about:

Uncertainty quantification

Multilevel Monte carlo sampling

GPU comuputing / MPI computing

High-order numerical schemes on GPUs for pollution transport

When simulating the ocean, it is important to have accurate and fast models. In this project, you will be working with simplified models and explore how the order of the numerical scheme affects the simulation result for pollution transport. In particular, you will be looking at WENO-type schemes and see how these can be implemented efficiently on GPUs.

In this project you will learn about:

Partial differential equations

Pollution transport

Dimensionally split schemes

High-order schemes

GPU computing

Python

Multi-layer ocean simulations on the GPU

The ocean can be modeled as a set of layers, where a layer of "light" water lies ontop of a "heavier" layer of water. In the simplest case you have two layers, but there are also mathematical formulations for n layers. In this project, you will be working with efficient implementation of multi-layer shallow water simulations on the GPU.