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.