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:
- To give students a chance to familiarize themselves with the C#
programming language and the .Net class libraries, including the new
version 2.0 features. To achieve this goal, students must write a
substantial piece of software in C# 2.0, document it, and to some
extent compare with Java or some other language they know.
- To learn the basics for how to implement a
compiler/interpretor/system for a small domain specific language.
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
- Profiler
- Debugger
- Graphical program stepper
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:
- Read PDF files (also files not produced by the library itself).
- Write and update PDF files (PDF allows incremental updating).
- Data structures for generating PDF.
Author: Ken Friis Larsen
(ken@friislarsen.net)
Last modified: April 4, 2006