Student Projects

Are you interested in a semester/master project at LAMP? Here are potential projects that we have thought of. However, feel free to contact us about your own ideas as well.

Most of the following projects are related to Dotty, which is the next-generation Scala compiler, developed in the lab, and slated to become Scala 3.

Reimplement macros of Chisel3 in Dotty

Type: master semester project, master thesis project
Major: computer science, communication systems, data science
Supervisor: Fengyun LiuNicolas Stucki
Students: 1

Chisel3 [1] is a hardware construction language embedded in Scala. It has been used to design RISC-V chips [2]. The project Chisel3 uses a large amount of Scala 2 macros. Dotty has introduced a new macro system [3], which is supposed to be safer and more friendly to meta-programmers. The goal of the project is to reimplement the macros in Dotty and port Chisel3 to Dotty.

[1] https://github.com/freechipsproject/chisel3
[2] https://boom-core.org/
[3] http://dotty.epfl.ch/docs/reference/other-new-features/tasty-reflect.html

A Tasty Interpreter for Scala

Type: master thesis project
Major: computer science, communication systems, data science
Supervisor: Sébastien Doeraene
Students: 1

The goal of the project is to implement an interpreter for Scala based on Tasty. Tasty [1] is the standard immediate representation of Scala programs. Most Scala programs depend on classes defined in JDK, a challenge is how to deal with those dependencies. To alleviate the interop problem, we will develop the interpreter on top of Scala.js [2], which has an implementation of the most commonly used classes of JDK in Scala, and whose interop semantics with JavaScript is well-defined. The evaluation of the project will be whether the interpreter can successfully interpret all the run tests in the Dotty compiler.

[1] Tasty format
[2] https://www.scala-js.org/

Evaluating and Improving performance of generic tuples code generation

Type: bachelor semester project, master semester project, master thesis project
Major: computer science, communication systems, data science
Supervisor: Nicolas Stucki
Students: 1

High-performance computing can be achieved by generating programs specialized for a given set of parameters. Examples of tools doing that are Lightweight Modular Staging [1] and Spark [2]. In Dotty, runtime code generation is built-in and provided via the “principled meta-programming” facility [3]. The goal of this project is to compare this staging mechanism with the aforementioned tools. The axes of comparison would be both the performance and the expressivity.

Evaluating the runtime code generation system of Dotty

Type: Master semester or thesis project
Major: computer science, communication systems, data science
Supervisor: Julien Richard-Foy, Nicolas Stucki
Students: 1

Scala 2 had tuple classes from 1 to 22, in Dotty we dropped this limit and added some library level code optimizations. We currently have some optimizations that look into the type of the tuples to know their size an generate more specialized code for operation on small tuples smaller. Both the code specialization and the execution of said code should run as fast as possible.

The aim of this project is to create performance test that shows how long it took to compile and how fast the generated code runs. Then try different combinations of the optimizations to find the optimal solution.