Ideas for student-projects

Here are some ideas for possible projects. Most of these are in full-blown scale for master projects (specialer). But some could be split into smaller parts which could be done as a four or twelve week project.

In general I'm interested in supervising projects that involves programming language technology or functional programming.

Before you start your project, make sure that you have read Peter Sestoft's check-list for master students (in danish).

Feel free to send me an email at ken@friislarsen.net if you want to discuss some of the project ideas on this page or have an idea for a project yourself.

Game Engine In Managed Code

The upcomming XNA Framework makes it possible to make games for the XBox-360 in managed code, e.g., C#. The purpose of this project is to make a nice stuctured game engine for the XNA Framework.

Parser combinator library for C#

Design and implement a parser combinator library for C#. Perhaps use runtime code generation.

Implementation of an XML Store peer in C#

The goal of Plan-X project is to develop a software platform for value-oriented programming supporting transparency of distibution and mobility of data and applications. One of the component in the platform is called XML Store for storing XML data.

The aim of this student project is to implement an XML Store peer in C#.

4-week project.

DirectX and F#

The programming language F# is a pragmatically-oriented variant of ML family.F# programs run on top of the .NET Framework.

Design and implement a nice F# interface to DirectX.

Perhaps use this interface to write a small game in F#.

Machine generation of "hand-written" recursive decent parsers

Design and implement a recursive decent parser generator. The generator should generate recursive decent parsers that looks "hand-written".

4-week project cluster: C# and domain specific language

The goals of the project cluster is twofold:

Peer-to-peer file-sharing

Implement a peer-to-peer file-sharing system in on top of a peer-to-peer middleware solution such as: Pastry, Tapestry, Chord, or Kademlia.

You can implement the middleware yourself or use an of-the-shelf implementation.

Project manager for Moscow ML

Currently Moscow ML relies on the external program make for managing compilation of programming projects (systems where the source code is split in more than one file). This dependency on make is sometimes troublesome, because make is not always easily available on all the platforms that Moscow ML runs on, and make can be confusing for new students.

The project is to implement a dedicated project manager for Moscow ML. Possibly, one that makes it easy to have a centralised web-repository for SML libraries.

Integrated Program Environment (IDE) for Standard ML

Design and implement an IDE for SML that can be used (at least) for teaching in the course Functional Design and Programming.

Possible base-platforms for the IDE:

Generalised LR parser generator

Design and implement a Generalised LR parser generator for SML. Generalised LR works with any context-free grammar, whereas LR parsers (such as Bison/YACC) require grammars to be LALR(1).

Just In Time (JIT) back-end for Moscow ML

Use GNU Lightning to make a JIT back-end for Moscow ML.

Misc. programming tools for Moscow ML

Vector graphics library

Make an SML library for manipulating vector graphics independent of output format. Possible output formats: Encapsulated PostScript (eps), Portable Document Format (PDF), Scalable Vector Graphics (SVG), Windows Metafile Format (WMF), Enhanced Metafile Format (EMF), and MetaFont and MetaPost.

Portable Document Format (PDF) manipulation library

Make an SML library for manipulating PDF files. That is, the library should facilitate:
Author: Ken Friis Larsen (ken@friislarsen.net)
Last modified: April 4, 2006