Ideas for IT University projects and theses
Below are some ideas for Master's theses, bachelor projects and other
projects for students at the IT University of Copenhagen. Contact
Peter Sestoft (sestoft@itu.dk).
See also the Check list for
projects.
Possible projects
- Computations on GPGPUs (graphics cards)
Modern graphics cards are ultrafast computers, also called GPGPUs
(general-purpose graphics processing units). They can perform
certains computations 10 to 300 times faster than a typical CPU.
Programming them requires special techniques and libraries
(Nvidia
CUDA, OpenCL, or similar). In this project, you must implement
some numeric computations, typically linear algebra, measure their
performance, and tune them for optimal speed.
- Test Suite for Scala Compiler or Standard Libraries
The Scala team is somewhat lacking in test cases for the Scala
compiler and standard libraries, especially the collections classes.
Decide on a particular area (such as collections classes), write a
comprehensive collection of tests, and work with the Scala developers
at EPFL and Typesafe to get them included in the Scala source
code. You'll have a chance to learn about higher-kinded generics,
property-based testing a la Quickcheck, and advanced object-oriented
and functional programming, in addition to building your skills in
collaborating with a geographically distributed development team.
- Parallelization of spreadsheet computations
Investigate parallelization of heavy spreadsheet computations, such as
scientific or financial simulations. In particular, exploit multicore
servers through the .NET 4.0 Task Parallel Library and the spreadsheet
implementation described
in (Sestoft
2012). This can be done on a scale from simple-minded (one task
"future" per cell that needs to be computed) to very sophisticated
(use the support graph structure in
ITU-TR-2011-142)
to statically parallelize independent computations.
An alternative is to use general-purpose graphics processors
(GPGPU). One may
use Nvidia
CUDA, OpenCL, the Accelerator v2 framework from Microsoft
Research,
GPU.NET or similar. In any
case, GPGPU-based parallel programming has recently become far more
practical thanks to much improved libraries.
- Proof of snapshot tree correctness in separation logic
We have four different implementations of snapshotable search trees
(as in the C5 collection library). The goal of this thesis project
is to prove all of them correct with respect to the same interface
specification, written in separation logic. This thesis project is
closely tied to the Tomeso research project (Lars Birkedal, Peter
Sestoft and others).
- Code contracts for the C5 collection library
Code Contracts and PEX are new tools from Microsoft Research for
design by contract: specification and checking of preconditions,
postconditions and invariants in C# code, as well as automated
development of unit test cases. The tools support efficient creation
of correct and robust software and are likely to be extremely
important in the future. In this project you learn about the concepts
and the tools through developing code contracts for
the C5 collection library for
.NET, an implementation of advanced data structures in C#.
This project is related to the
Tomeso project.
- Web browser cookies and privacy
Since 25 May 2011 new
European rules for user tracking on websites have been in
force, also in Denmark, but there is much confusion over what
owners of websites should do to follow these rules. This project
would combine investigation and interpretation of the rules
(eg. how do other European countries implement them) with technical
and empirical studies of current use of cookies (eg. borger.dk,
dr.dk, google.dk), how content management system providers
(eg. Sitecore) and other third parties (eg. Google Analytics)
choose to implement (or not) the rules, and much more. Also, it
may be interesting to study to what extent web users understand the
technical, legal and privacy problems involved. (Possible external
co-supervisor Mikael Hertig).
- Visualization of large RNA molecules
Creating a fast, user-friendly program for visualization of large
RNA secondary structures. Performance (ability to handle large
amounts of data) and user-friendliness are equally important. There
is a possibility for interdisciplinary cooperation with biologists
to solve this real-world problem in a way that is practically useful
for them. More details of basic requirements and intial ideas for
extensions can be
found here.
- Code generation in a framework for computer games
A computer games company in Copenhagen has developed a framework
that allows automatic generation of parts of computer games from
specifications (models) written by the game developer. The
framework is based on C#, .Net and Visual Studio. The company is
interested in student projects to further elaborate and investigate
this technology. For more details, contact me, and we will set up a
meeting with the company.
- Collaborative spreadsheets
Use Silverlight or AJAX or Google Web Toolkit or Java to design and
develop a collaborative spreadsheet that can be run from the desktop
or in a browser.
- Lokaleplanlægningssystem
Systemet skal kunne administrere auditorier og øvelokaler for en
større læreanstalt, der har fast ugeskema i
undervisningsperioderne. Skal ikke nødvendigvis automatisk
producere en `optimal' plan, men skal give god støtte til manuel
flytten rundt, påpege konflikter, gøre det nemt at vurdere eller
afprøve alternative allokeringer. Der er mange udfordringer i
dette projekt, ikke mindst analyse af behov, og design og
realisering af en rigtig god brugergrænseflade til visualisering af
lokalebehov og lokalebookinger. Det er nødvendigt at have
fremragende evner inden for brugergrænsefladedesign såvel som
programmering med Java Swing, Javascript, SVG, Windows Forms eller
Windows Presentation Foundation, samt god forståelse af
databasedesign.
- Code duplication discovery in Microsoft Dynamics AX applications
Investigate the syntax of X++, which is the internal language of
Microsoft Dynamics AX, and create a new parser front-end (using Coco/R
and C#) for the advanced code duplication discovery tool developed by
Michael Schou Christensen. Then experimentally validate the resulting
duplication discovery tool on substantial code samples provided by
Microsoft Development Center Copenhagen under a non-disclosure
agreement. There is considerable scope for extension of this project,
such as development of tools for subsequent refactoring, and tools for
visualization of clones.
- Visualization of code duplication
In a 2007 MSc project, Michael Schou Christensen has developed a very
fast tool to discover duplicated or near-duplicated code in large C#
code bases. The same technology may be used for other languages and
possibly even on metadata in a software system. Also, there are
unsolved challenges in visualising or summarizing analysis results
that involve thousands of source files and millions of source code
lines. Possible collaboration with Microsoft Development Center
Copenhagen.
- Generation of specialized collection libraries
The C5 generic collection
library is a comprehensive library for C#/.Net 2.0 that provides
very rich functionality such as sublist views, update events,
hash-indexed lists, persistent trees, cached hashcodes and much more.
One drawback of this rich functionality is that user programs pay (in
terms of memory requirements) also for the advanced features that they
do not use. The purpose of this project is to investigate the
automatic generation/selection of only the relevant components
(classes, methods and fields) for any particular use of the library,
to minimize memory consumption and make the library as fast as
possible.
- Applications of run-time code generation in Java or C#.
The Java or JVM platform from Sun Microsystems/Oracle and the C# or
Common Language Runtime/.Net platform from Microsoft provide good
support for generation and fast execution of bytecode by a running
program. This opens new implementation possibilities for
serialization/deserialization, communication protocols, encryption,
image transformation and image analysis algorithms.
- Web-based user interface for RNA alignment editor SARSE is an interactive editor for RNA
alignments. The user interface is written in Java but it uses a large
number of external applications written in C. The goal of this
project is to make a web-based version of SARSE, where the clients run
the user interface in a web browser, and the external applications run
on a server, so no setup is required on the client side. The project
may involve some changes to the user interface, but chiefly it
requires you to design, implement, test and document the communication
protocol between the client and server, and the server setup. This
setup should support an extensible set of external programs.
- Projekter der involverer bioinformatik
For eksempel: Grafisk brugergrænseflade til RNA db tools.
Ønskelig forudsætning: biologisk baggrund og et bioinformatikkursus
ved KVL, KU eller DTU. I samarbejde med Jan Gorodkin, KVL, og Bjarne
Knudsen, Florida.
Peter Sestoft (sestoft@itu.dk)
Last update 2012-02-27