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.

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/

Webpack plugin for Scala.js (taken)

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

Webpack is an open-source JavaScript module bundler primarily for JavaScript, but it can transform front-end assets like HTML, CSS, and images if the corresponding loaders are included. The task of this project is to create the corresponding plugin for Scala.js

ScalaPB (Protobuf bindings) for Dotty with union types

Type: master semester project
Major
: computer science, communication systems, data science
Supervisor: Jamie Thompson
Students: 1

Starting with a ProtoBuf schema, generate Scala classes, types, and access methods to read and write messages according to the schema. Make use of Dotty’s new type features such as union types.

Protobuf with typeclass derivation

Type: master semester project
Major: computer science, communication systems, data science
Supervisor: Jamie Thompson
Students: 1

Starting from a class hierarchy, generate ProtoBuf serializers and deserializers automatically.

Coq formalisation of Celsius

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

Celsius is a calculus for safe initialization of objects which improves over the freedom model [1]. We have already established soundness proof for this calculus in pen and paper. This project is to implement a mechanised proof in Coq.

[1] Summers, Alexander J., and Peter Müller. “Freedom before commitment: a lightweight type system for object initialisation.” ACM SIGPLAN Notices. Vol. 46. No. 10. ACM, 2011.

Implement Coroutines in Dotty

Type: master semester project, master thesis project
Major
: computer science, communication systems, data science
Supervisor: Fengyun Liu & Aggelos Biboudis
Students: 1

This project is to implement coroutines [1,2] in Dotty. Dotty has a new meta-programming system based on solid principles. In this project you will learn advanced meta-programming skills for Scala 3.

[1] https://github.com/storm-enroute/coroutines
[2] Prokopec, Aleksandar, and Fengyun Liu. “Theory and practice of coroutines with snapshots.” 32nd European Conference on Object-Oriented Programming (ECOOP 2018). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2018.

Embed the Enriched Effect Calculus in Dotty with Quotes and Splices

Type: master semester project
Major: computer science, communication systems, data science
Supervisor: Jamie Thompson
Students: 1

The Enriched Effect Calculus, EEC, extends the simply-typed lambda calculus (with sums and products) with linear function types and monadic let-binding. This project will embed EEC into Scala through type checking of quotes using the rules of the calculus.

Prior work includes Mesa, a reference type-checker for a dialect of EEC, implemented in Scala.

Generate Tensorflow Graphs in Scala with ScalaPy à la Autograph

Type: master semester project
Major: computer science, communication systems, data science
Supervisor: Aggelos Biboudis & Fengyun Liu
Students: 1

While the graph-based style of writing TF models is the best nowadays, the imperative style is the one that most people seek. This is why PyTorch-like libraries are highly-competitive (that also come with high interpretive overhead) as well as the new eager mode of TensorFlow (that also comes with limited capabilities as opposed to the Graph-based). The Autograph solution comes with a transformation step of regular code into a generic representation without losing performance, without introducing interpretive overhead and getting the benefits of Graph-based systems directly. We will use quotes [1,3] and virtualization [4, 5,6,7] to port basic examples of the Autograph paper [2] using ScalaPy

  1. A Practical Unification of Multi-stage Programming and Macros
  2. AutoGraph: Imperative-style Coding with Graph-based Performance
  3. A Gentle Introduction to Multi-Stage programming
  4. Finally Tagless, Partially Evaluated
  5. The F# Computation Expression Zoo
  6. Recaf: Java Dialects as Libraries
  7. Scala-Virtualized: linguistic reuse for deep embeddings