Suggested size: Master's Thesis project; workload: 30% theoretical/70% practical.
Add SOAP-capabilities to SMLserver (client-side and server-side).
The goal of this project is to add support for SOAP-based Web services in the
Standard ML programming language. There are two aspects of
this project. First, support for accessing Web services from
Standard ML programs (e.g., from SMLserver scriptlets) is
needed. Second, support for writing Web services in the
programming language Standard ML and publicising such Web
services are open to investigation.
People: Martin Elsman (contact); ME
HN (possible supervisors).
Prerequisites: Knowledge about Standard ML and XML.
Keywords:
web services;
SOAP;
Standard ML;
functional programming;
SMLserver;
Suggested size: Master's Thesis project; workload: 30% theoretical/70% practical.
Implement the POSIX part of the SML Basis Library and
construct test case that show that the implementation follows
the spec.
On the basis of the Standard ML Basis
Library specification, the goal of this project is to
implement and create test cases for the Posix part of the
library. The library should be implemented in the framework of
the ML Kit
compiler, although compatibility with other compilers (such
as Moscow
ML) is important.
People: Martin Elsman (contact); ME (possible supervisor).
Prerequisites: Knowledge about Standard ML and C.
Keywords:
POSIX;
library code;
Standard ML;
Suggested size: Master's Thesis project; workload: 70% theoretical/30% practical.
Design (theoretically) and implement (practically) a thread library
for a region-based compiler.
The goal of this project is to design and implement a thread
library for the ML Kit, a Standard ML compiler, which uses a
non-traditional mechanism for memory management, called region
inference. The thread-library should be implemented on top of
Posix threads (pthreads).
People: Martin Elsman (contact); ME (possible supervisor).
Prerequisites: Knowledge about compilers, programming language
semantics, Standard ML, and C.
Keywords:
threads;
POSIX threads;
library design;
library code;
region-based memory management;
Standard ML;
Suggested size: Master's Thesis project; workload: 50% theoretical/50% practical.
Extend a region memory profiler to construct profiles of memory
usage distinguishing different data types.
This project is about extending the region memory profiler of
the ML Kit to construct
profiles of memory usage that
distinguish memory used for different data types.
People: Martin Elsman (contact); ME
HN (possible supervisors).
Prerequisites: Knowledge about semantics, Standard ML, and C.
Keywords:
profiling;
region-based memory management;
Standard ML;
runtime support;
Suggested size: 4-week project; workload: 30% theoretical/70% practical.
Implement a database-backed Web site on top of SMLserver.
Implement a database-backed Web site on top of SMLserver, an
efficient Web server platform for Standard ML programs. If you
know Standard ML and you have ideas about a database-backed
Web site, don't hesitate to suggest a project.
People: Martin Elsman (contact); ME (possible supervisor).
Prerequisites: Knowledge about Standard ML, HTML, and databases.
Keywords:
web publishing;
databases;
Standard ML;
Suggested size: 4-week project; workload: 40% theoretical/60% practical.
Write a parser for XML in SML that checks
wellformedness constraints.
The goal of this project is to write a Standard ML program
that takes a text representation of an XML document and
translates it into a document represented by an abstract XML
tree (i.e., a Standard ML datatype value). One way of
addressing the problem is to use Standard ML parser
combinators. The project should also address the various XML
well-formedness conditions (e.g., an attribute is added to an
element at most once), which may be implemented by
post-processing of the abstract XML tree.
People: Martin Elsman (contact); ME
HN (possible supervisors).
Prerequisites:
Functional Design and Programming (FDP) or similar
Keywords:
XML;
parsing;
parser combinators;
Standard ML;
Suggested size: 4-week project; workload: 50% theoretical/50% practical.
Write a validator for XML in SML that checks validity based on
the document DTD.
The goal of this project is to write a Standard ML program
that takes an abstract representation of an XML document and
investigates if the document is valid according to some
arbitrary DTD. The program should perform the validity
checking by first constructing a state machine (corresponding
to the DTD) and then check if the document is satisfied by
the state machine.
People: Martin Elsman (contact); ME
HN (possible supervisors).
Prerequisites:
Programming Languages, Interpreters, and Compilers (PFOO) or similar
Keywords:
XML;
DTD;
parsing;
validity;
parser combinators;
Standard ML;
Suggested size: 4-week project; workload: 30% theoretical/70% practical.
Write an interface that exposes an XML Store as a traditional
file system.
This project is aimed at providing a file system
interface for mounting local or remote XML Stores. This makes
it possible to provide a distributed file system
interface to a distributed, mobile XML Store and provides
backwards compatibility for applications operating using
standard file I/O.
People: Henning Niss (contact); HN (possible supervisor).
Prerequisites: Knowledge of C and systems programming.
Keywords:
file systems;
distributed file systems;
XML Store;
Plan-X;
Suggested size: 4-week project; workload: 30% theoretical/70% practical.
Write a distributed application using XML Store as the external
storage facility.
Implement a distributed application using XML Store as the external
storage facility. If you have a suggestion for a specific application
don't hesistate to suggest it. The exact nature of it is not as
important as the fact that it should be distributed.
Example applications: an email system, a collaborative document
sharing system, and backup
and calendar systems
(as suggested in separate project proposals).
People: Henning Niss (contact); HN (possible supervisor).
Prerequisites: Knowledge about Java and XML.
Keywords:
distributed systems;
middleware support;
XML Store;
Suggested size: 4-week project; workload: 30% theoretical/70% practical.
Design and implement a backup system that uses XML Store as the
"backup medium".
By aggresively using sharing (whenever two documents are
the same, only store one copy) XML Store provides for an interesting
backup platform allowing for full backups with small (external)
storage requirements. The goal of this project is to use XML Store to
implement a backup system. To do this, one needs to design a
representation of the state of the file system as an XML tree,
implement the construction of such trees, and subsequently the
logic to actually store the result in an XML Store.
People: Henning Niss (contact); HN (possible supervisor).
Prerequisites: Knowledge about Java and XML.
Keywords:
backup system;
XML Store;
Suggested size: depends on students; workload: 30% theoretical/70% practical.
Design and implement a distributed calendar system using XML
Store for storing calendars.
Due to its distributed / peer-to-peer nature, XML Store is
well-suited for distributed collaboration. The goal of this
project is to construct a distributed calendar system where
XML Store is used as the calendar backend. The size of the
project can range from a relatively simple implementation of
the basic idea to a large project concerned with both the
design of an appropriate architecture and extensions of
XML Store to support the design.
People: Henning Niss (contact); HN (possible supervisor).
Prerequisites: Knowledge about Java and XML.
Keywords:
calendar;
distributed collaboration;
XML Store;
Suggested size: Master's Thesis project; workload: 70% theoretical/30% practical.
Design an XML representation of computation state that allows
for checkpointing using XML Store.
The aim of checkpointing is to capture the execution state and
store it for latter perusal. This can, for example, be
realized representing code as semi-structured data and using
CPS transformations to reify the computation state as a
continuation argument. The focus of this project is to design
and implement a library for adding checkpointing instructions
to a distributed, mobile programming language.
People: Henning Niss (contact); HN (possible supervisor).
Prerequisites: Knowledge of programming language semantics and implementation, and XML.
Keywords:
checkpointing;
execution state;
CPS;
XML Store;
Plan-X;
Suggested size: Master's Thesis project; workload: 60% theoretical/40% practical.
Design an XML representation of code and extend XML Store
with a method for executing such code (remotely).
The aim of this project is to allow an XML Store to store not
only data in the traditional sense of the word, but also
program code. Having represented code as semi-structured data,
the XML Store can be extended with an operation for executing
the stored program. Focus in on designing the representation
and implementing the proposed extended XML Store.
People: Henning Niss (contact); HN (possible supervisor).
Prerequisites: Knowledge about programming language semantics and XML.
Keywords:
semi-structured data;
XML Store;
Plan-X;
visitor pattern;
Suggested size: 4-week project; workload: 30% theoretical/70% practical.
Develop an XML language for location and context information.
Develop an XML language for location and context information.
Write a distributed location service based on the core LaCoMoCo location server,
that continuously stores location data
in the XML Store, and supports querying the history (traces) of objects.
People: Thomas Hildebrandt (contact); HN
TH (possible supervisors).
Prerequisites: Knowledge of Java, XML and location models (as taught in the
Location Based Mobile Applications course).
Keywords:
location services;
context-dependency;
XML Store;
Plan-X;
Suggested size: depends on students; workload: 40% theoretical/60% practical.
Use Proof-Carrying Code to design, implement, and verify the
safety of a network packet filter for Linux.
Proof-carrying code
is a framework that provides for safe execution of untrusted code.
Packet filters is a way for an operating system to allow applications
to specify which network packets they are interested in; for this to
be safe the kernel typically includes a small interpreter for a safe
domain-specific programming language. The aim of this project is to
use proof-carrying code in the Linux kernel to allow applications to
supply not only the packet filter in native machine code, but also a proof that the filter is
safe (according to some safety policy). The intention is, furthermore,
to design more advanced safety policies and proofs (than the
existing PCC packet-filters have used) to establish, for example,
termination of the filter.
People: Henning Niss (contact); HN (possible supervisor).
Prerequisites: Knowledge of programming language semantics, C, and systems programming.
Keywords:
packet filters;
proof-carrying code;
safe execution of untrusted code;
Linux kernel;
Suggested size: 12-week project; workload: 50% theoretical/50% practical.
Extend and implement termination-guaranteeing binding-time analysis
for partial evaluation to handle partially static data.
Glenstrup and Jones showed how to construct a binding-time
analysis that produces a binding-time division that guarantees
termination of partial evaluation for a first-order functional
language with simple binding-times.
The objective of this project is to
- gain knowledge of how static program analyses can be constructed
to yield useful and safe answers to termination questions.
- gain experience with implementing moderately complex programs for
analysing programs.
People: Arne J. Glenstrup (contact); AJG (possible supervisor).
Prerequisites: Knowledge about partial evaluation or program transformation,
programming language semantics, static program analysis,
and functional programming.
Keywords:
termination;
partial evaluation;
functional programming;
static program analysis;
Suggested size: 12-week project; workload: 40% theoretical/60% practical.
Develop a constraint-based implementation of a termination-guaranteeing binding-time analysis for partial evaluation for a functional language.
Glenstrup and Jones showed how to construct a binding-time analysis that produces a binding-time division that guarantees termination of partial evaluation for a first-order functional language. The analysis is an iterative, graph-based algorithm.
The objective of this project is to
- gain knowledge of how static program analyses can be constructed to yield useful and safe answers to termination questions.
- gain knowledge of constraint-based analyses.
- gain experience with implementing moderately complex programs for analysing programs.
People: Arne J. Glenstrup (contact); AJG (possible supervisor).
Prerequisites: Some knowledge about partial evaluation or program transformation,
programming language semantics, static program analysis,
and functional programming.
Keywords:
termination;
partial evaluation;
functional programming;
static program analysis;
constraint-based analysis;
Suggested size: 12-week project; workload: 40% theoretical/60% practical.
Design and implement termination-guaranteeing binding-time analysis for on-line partial evaluation of a functional language, and study its effects on the speed and specialisation power of on-line partial evaluation.
Glenstrup and Jones showed how to construct a binding-time analysis that produces a binding-time division that guarantees termination of off-line partial evaluation for a first-order functional language. Traditionally, on-line partial evaluation does not use static analyses for achieving termination.
The objective of this project is to
- gain knowledge of how static program analyses can be constructed to yield useful and safe answers to termination questions.
- gain experience with implementing moderately complex programs for analysing programs.
People: Arne J. Glenstrup (contact); AJG (possible supervisor).
Prerequisites: Some knowledge about partial evaluation or program
transformation, programming language semantics, static program
analysis, and functional programming.
Keywords:
termination;
partial evaluation;
functional programming;
static program analysis;
Suggested size: 12-week project; workload: 40% theoretical/60% practical.
Design and implement termination-guaranteeing binding-time analysis for partial evaluation of a subset of an imperative language, e.g. C.
Glenstrup and Jones showed how to construct a binding-time analysis that produces a binding-time division that guarantees termination of partial evaluation for a first-order functional language.
The objective of this project is to
- gain knowledge of how static program analyses can be constructed to yield useful and safe answers to termination questions.
- gain experience with implementing moderately complex programs for analysing programs.
People: Arne J. Glenstrup (contact); AJG (possible supervisor).
Prerequisites: Some knowledge about partial evaluation or program transformation,
programming language semantics, static program analysis,
and programming.
Keywords:
termination;
partial evaluation;
imperative programs;
static program analysis;
Suggested size: 4-week project; workload: ?% theoretical/?% practical.
Safer and better programs in the next version of Java.
Study generic types in Java 1.5, implement a library that
uses generics (e.g. generic collection classes), and write a short
introduction to generics.
People: Peter Sestoft (contact); PS (possible supervisor).
Prerequisites:
Keywords:
Suggested size: Master's Thesis project; workload: ?% theoretical/?% practical.
Analysis and description of X++, a domain-specific
programming language used in the Axapta system.
People: Peter Sestoft (contact); ME
PS (possible supervisors).
Prerequisites: Good programming languages skills, some knowledge
of C++, and the course Programming Languages, Compilers, and
Interpreters.
Keywords:
;
Suggested size: Master's Thesis project; workload: ?% theoretical/?% practical.
Develop a compiler from part of X++ to CIL,
the intermediate language of
Microsoft .Net.
Identify a subset of the X++ language and create a compiler
from that subset to CIL, the intermediate language of
Microsoft .Net, as well as supporting classes (written in C#).
People: Peter Sestoft (contact); ME
PS (possible supervisors).
Prerequisites: Good programming languages skills, some knowledge
of C++, and the course Programming Languages, Compilers, and
Interpreters.
Keywords:
;
Suggested size: Master's Thesis project; workload: ?% theoretical/?% practical.
Brugervenlig Web-præsentation af Danmarks habitat- og
fuglebeskyttelsesregistreringer.
Brugervenlig Web-præsentation af Danmarks habitat- og
fuglebeskyttelsesregistreringer. Formålet er at udvikle en
måde at præsentere disse registreringer, gerne som Web-løsning.
People: Peter Sestoft (contact); PS (possible supervisor).
Prerequisites:
Keywords:
;
Suggested size: Master's Thesis project; workload: ?% theoretical/?% practical.
For instance: graphical
user interface to RNA db tools (developed by Jan Gorodkin, KVL,
and Bjarne Knudsen, Florida).
People: Peter Sestoft (contact); PS (possible supervisor).
Prerequisites: Some biological
background and/or a course in bioinformatics.
Keywords:
;
Martin Elsman (ME)
I'm associate professor at The IT University of Copenhagen
(ITU), where I conduct research in the areas of type-based
program analyses, implementation of higher-order programming
languages, and programming languages for the internet.
Web:
http://www.itu.dk/people/mael/
Henning Niss (HN)
I am an assistant professor at The IT University of Copenhagen
(since January 2003). My research interests are programming
language technology in general, with special emphasis on
language-based support for distributed and mobile applications
and type-based program analyses for region-based memory
management.
Web:
http://www.itu.dk/people/hniss/
Arne J. Glenstrup (AJG)
I have been an assistant professor at the IT University of
Copenhagen since June 2003. My research interests are
programming language technology in general, including
language-based support for distributed and mobile
applications, partial evaluation, and termination analysis.
Web:
http://www.itu.dk/people/panic/
Thomas Hildebrandt (TH)
Associate professor in the Theory Department.
Web:
http://www.itu.dk/people/hilde/
Peter Sestoft (PS)
Professor in the Department of Innovation.
Web:
http://www.dina.kvl.dk/~sestoft/