Looking for Bachelor or Master projects, or a Master thesis? Below are some project ideas.
Looking for a Ph.D. semester project? Email George.

Our projects are about investigating new ways to build systems and analyze them.
Don’t worry if you don’t know some of the concepts we mention, as long as you’re willing to learn.

The following list is for Spring 2020.
If you’re interested, or if you have any questions, e-mail us at projects@dslab.org.

Components of a formally verified stack

The Vigor project from DSLAB can verify a network function, the framework it uses, the network card driver, and a bare-bones operating system.
However, there remain unverified components, both in the runtime code and in the toolchain: UEFI, the bootloader, the C compiler…

In this project, you will:

  • Pick one component of the stack
  • Investigate existing verification techniques related to this component
  • Either verify the existing component, or find an already-verified component to replace it

You will learn:

  • Low-level hardware or software details
  • Verification techniques

Writing network drivers in high-level languages

Network drivers are currently written in low-level languages such as C. This is because programmers believe low-level languages allow them to write more performant code.
Circumstantial evidence suggests this is true, but we would like to disprove this commonly held belief.

In this project, you will:

  • Pick a high-level language of your choice;
  • Implement a minimal network driver using this language (a few hundred lines of code);
  • Measure the driver’s performance;
  • Investigate performance differences between your driver and a reference C implementation;
  • Explain why your driver can or cannot match the performance of C code.

You will learn:

  • Benchmarking and profiling
  • Low-level software details

Evaluating code quality

It is easy to evaluate the correctness of code with tests, but code also needs to be of high quality.
For instance, formatting should be consistent.
Evaluating code quality is currently a manual process, which takes time and introduces the possibility of human error.
We would like to evaluate code quality automatically, for instance for exams in the Software Engineering class.

In this project, you will:

  • Investigate how to automatically evaluate the code quality of a small Java codebase
  • Implement a code quality evaluation tool

You will learn:

  • Static analysis techniques

Your own idea

Do you have a project idea related to DSLAB’s interests, such as dependability or practical formal verification?
Feel free to contact us!

In this project, you will:

  • Work on your own idea with our guidance
  • Discover something new, small or large

You will learn:

  • Something you don’t know already