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).
Students are strongly encouraged to form groups of two (or even
three) because group projects are much more likely to work out well
and complete on time.
See also the Check list for
projects.
Possible projects
- Design, implement and test concurrent versions of
the C5 collection classes for
.NET
- Testing and coverage analysis of concurrent software using
for instance Java
Pathfinder, Microsoft CHESS, Findbugs, ThreadSafe and similar
tools.
- Spreadsheet with interval arithmetics based on
our Funcalc
spreadsheet implementation (in C#), where interval arithmetics can
be used to give guarantees on the accuracy of a computed result.
One can extend the project with autodifferentiation of spreadsheet
functions, and interval-based search procedures, equation solving
and more. A relevant text is
Tucker:
Validated numerics, Princeton University Press 2010.
- Type system for sheet-defined functions in spreadsheets.
The goal of this project is to define and implement a type system
for sheet-defined functions as implemented in Funcalc. Funcalc is
described in the book Sestoft: Spreadsheet Implementation
Technology, MIT Press 2014. The purpose is to improve both safety and
performance of sheet-defined functions, by avoiding the overhead of
boxing values at function calls. Some promising work in this
direction was done by Poul Broennum in a previous project.
- 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.
- 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.
Peter Sestoft (sestoft@itu.dk)
Last update 2024-11-06