Internship Topics 2013

  1. Java bytecode rewriting
    Positions: 1
    Lab: CARV
    Description: Learn to use a bytecode parser and rewriting tool to automate program transformations for class files. Implement an example transformation (Java Futures).
  2. LLVM Tasks
    Positions: 2
    Lab: CARV
    Description: Work with the LLVM compiler and virtual machine to implement a task-parallel programming model. Link LLVM runtime with BDDT for task creation and scheduling.
  3. Testing server
    Positions: 1
    Lab: CARV
    Description: Develop and set up a building and testing server that synchronizes with a code repository and performs nightly or on-commit builds and tests.

Diploma Thesis Projects 2012-2013

  1. Task-parallel Fault Tolerance
    Extend the BDDT runtime system with fault-tolerance. Define a realistic fault model for permanent and transient faults on existing multicore computers. Extend the BDDT runtime system with support for local and global checkpointing and recovery from both transient and permanent errors. Measure the overhead of fault tolerance on task-parallel programs.
  2. Runtime Dependencies in Recursively Parallel Programs
    Implement a runtime analysis for dependencies among recursively-parallel tasks, and extend an existing runtime system (e.g., Cilk) with a dependency-aware scheduler.
  3. Static analysis in Eclipse
    Learn the architecture of the Eclipse IDE (for either Java or C programming), including the AST and analysis frameworks, and write an Eclipse interface for an existing static analysis engine.
  4. Parallelization of static analyses
    Modularize and parallelize an existing static analysis engine. Factorize the Locksmith pointer analysis engine.

Internship Topics 2012

  1. A fault-tolerant task parallel runtime
    Positions: 1
    Lab: CARV
    Description: Understand the BDDT runtime and add support for checkpointing of computations, and restoring to an earlier point on fault.

Diploma Thesis Projects 2011-2012

  1. Cyclone compiler
    Learn Cyclone and work on the Cyclone compiler. Add task parallelism to the Cyclone language, and link produced C code with existing task-parallel and region-based runtime systems. Test your compiler extensions with small benchmarks.
  2. Mechanized theorem proving
    Learn the Coq proof assistant and encode a simple language's abstract syntax, type system and semantics. Use Coq to prove simple properties about the system.