Student projects

The projects listed below are dedicated towards masters (MS) and bachelor (BS) students. Please contact us if you are interested in any of these projects.

Interpreter Design and Implementation

Description: Design and implement an interpreter for a functional, lazy programming language with high-level vectorized operations. The interpreter will work on a multi-level stack-based intermediate representation called RIR.

Interest: low-level C++ programming.

Reading list:

Super Optimization

Description: Study how to improve the performance of the code of a language implementation, such as an interpreter core loop, with the use of a stochastic optimizer. A stochastic optimizer, such as STOKE, uses random search to generate extremely efficient versions of short code snippets.

Interest: assembly language, language implementation

Reading list:

Debugging Vectorized Code

Description: Add support for debugging a vector language to an interpreter. This work can be extended with integration to an IDE. Support for breakpoints and watchpoint.

Interest: C++ programming

Reading list:

Record & Replay Debugging

Description: Implement a debugger for the RIR interpreter that is able to record and replay executions deterministically with minimal overhead.

Interest: C++ programming

Reading list:

Design of a Regression Benchmark Framework

Description: Engineer a framework for running regression benchmarks, and visualize the results on each commit of a system. Track performance and memory footprint, as well as other health indicators.

Interest: Scripting, System programming, JavaScript

Semantics Specification

Description: Write down the formal semantics of a subset of the R language using a lightweight semantic specification tool such as Redex. Define the semantics of features such as objects and lazy evaluation. Implement a test suite that validates the correctness of the semantics.

Interest: programming languages

Reading list:

Executable Semantics

Description: Starting with a semantics written in the Redex toolkit, convert that semantics to an abstract syntax tree interpreter in the Truffle/Graal format. Evaluate the performance of the original interpreter and the Truffle variant.

Interest: Java, programming language semantics

Reading list: