Project Suggestions

Below is a list of suggestions for 7.5-ECTS projects related to functional programming and functional design. The suggestions are just that, so feel free to contact any of the teachers if you would like to do a variation on one of the suggestions, or perhaps something entirely different.

Contact information

Contact Søren Debois (debois (at) itu.dk), Troels Damgaard (tcd (at) itu.dk) or Lars Birkedal (birkedal (at) itu.dk) if you are interested in writing a project.


Search Engine

Implement a search engine in SML. In particular, express compound searches ("evil empire OR nuclear weapon") by function composition. (Thus, you will be build a so-called combinator library for constructing complicated searches.)

Type Inference for Java

Implement a type inference engine for a subset of Java in SML.

Chess-playing computer program

Design and implement, in SML, a chess-playing computer program. This is easier than you think - in particular, you need no chess skills whatsoever!

Web Server

Design and implement, in SML, a web-server. (That is, an HTTP-server.) Determine experimentally how your server holds up to, say, the Apache server.

Gate-level circuit simulator

Design and implement, in SML, a system for simulating electronic circuits at the gate-level. Demonstrate the viability of your system by simulating, say, a simple single-cycle implementation of a subset of the MIPS processor specification.

Model Checking

When engineers design mission-critical hardware systems, e.g., rockets for space flight, they may use computer programs called model checkers to verify that their systems behave. A model checker is a program which is given a system description and some behaviour, e.g., "the inner and outer hatches in the airlock are both open"; the model checker then checks if the system can ever have that behaviour. (In the airlock-example, we would hope not.)

There are really two problems in constructing a model checker:

  1. Generally, how do we specify a system and its behaviour?
  2. How do we do the actual checking efficiently?

The project: Implement a model checker in SML. To keep the project of a manageable size (and to introduce you to some really cool advances in computer science) we'll provide you with partial answers to one or both of the above questions.

NB! This is somewhat ambitious.

SML Kernel Programming

The SML of New Jersey system has a facility for SML functions calling and being called by C functions. This opens up the possibility of writing selected low-level kernel routines in SML.

The project: Select some small, isolated part of the Linux kernel, say, the TCP/IP-stack or the scheduler, and replace it with an SML-implementation. Determine experimentally how your implementation holds up to the official one.

NB! This is ambitious.

See also

The following pages contain a number of proposals from various research groups here at ITU:

Proposals of the Bigraphical Programming Language project

Proposals of the Programming Language Technology group

Author: Søren Debois (debois (at) itu.dk)