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
- Logical constraints on investments The compliance module of
Simcorp's Dimension software allows an investment manager to describe
constraints on investment portfolios; for instance that at most half
the investment must be unlisted shares. These constraints are input
through a user interface. The purpose of this project is design a
domain-specific language that can express these constraints, including
concrete and abstract syntax, lexer, parser, prettyprinter, and an
informal or formal description of the language semantics. Among
relevant extensions one can mention a constraint evaluator
(interpreter), constraint optimizer, constraint compiler (eg
compilation to C# expression trees), and more.
This project is in collaboration with Simcorp, a worldwide supplier of
software for investment management. It has 1250 employees and
international head quarters just a short walk from ITU.
- Modern collection library C6 for .NET: Extend and complete
the
C6 collection library, a
successor for the C5 collection classes; a project started by Mikkel
Riise Lund (here is
a link
to Mikkel's thesis report). This project involves library
design, algorithm and data structure implementation, Code Contracts
(design by contract), extensive unit tests, and high-quality
documention.
- Design, implement and test concurrent versions of
the C5 collection classes for
.NET
- Parallel programming projects related to
the Popular Parallel
Programming (P3) research project:
- Static
dataflow partitioning algorithms
- Dynamic scheduling algorithms on .NET
- Using vector (SSE, AVX) .NET intrinsics for spreadsheets
- Supercomputing with Excel and .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.
- Multicore programming via dataflow computing Implement a
version of the Sisal dataflow
language that takes good advantage of multicore shared-memory
machines, through the use of high-level intermediate languages such as
Java or C#, their libraries, and their runtime platforms (JVM or
.NET).
- 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.
- 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: Spreadsheet Implementation
Technology, MIT Press 2014. 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
Sestoft:
Spreadsheet Implementation Technology, MIT Press 2014, 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.
- 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 2018-02-06