## Master projects

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

In this project you will learn about:

- Multi-layer shallow water
- Python
- GPU computing