For background information on the topic as a whole, scroll to the end of this page.
AVAILABLE PROJECT PROPOSALS
If you are interested in the general topic, or if have your own project idea related to the topic, please contact us directly. Also open ideas for high performance algorithms / data structures are welcome. We have a focus on efficient implementations and empirical evaluation of algorithms.
Alternatively, you can also work on one of the following concrete project proposals:
BACKGROUND
One branch of theoretical computer science is the analysis of algorithms, protocols, hardware circuits and software. We want to analyse a system such as a piece of software or a hardware circuit for desirable properties, or to automatically generate ("synthesize") systems with desirable properties. Examples of these properties are functional correctness, the absence of forbidden states or deadlocks, or reactivity properties such as that a system is responsive, or that a system can always restart.
To advance this goal, we study algorithms that analyse systems. For example, many properties for reactive systems are specified in the language LTL and ultimately LTL model checking and synthesis is translated (via algorithms) to a parity game. We then solve the parity game and the outcome answers questions such as:
- Does a system fulfill the specification? If not, what is a counterexample?
- Can a system, with an additional synthesized controller, fulfill the specification?
- How many possible (reachable) system states are there?
Concrete questions that can be solved with these methods are:
- Does a coffee machine always respond correctly when you ask for coffee?
- Do traffic lights ever enter a forbidden state, causing a collision?
- If a car stops in front of a traffic light, will the light turn green eventually?
The core challenge in this area is called state space explosion: in order to analyse a system, we usually need to consider exponentially or even double exponentially many different situations. This motivates a lot of research into new algorithms to reduce the number of different situations, often by inventing tricks to analyse similar states simultaneously, or by limiting a system to only "relevant" paths, and abstracting away from paths that don't seem relevant.
In the formal methods and tools group at the UT, we mostly work with binary decision diagrams and with parity games. However, we are also interested in studying abstraction techniques such as IC3, guided refinement, partial order reduction, and so forth. Another goal is to ensure high performance of algorithms, by smart engineering/coding. There are competitions between scientists and it would be nice if we can win them by using smart algorithms that are fast!
Prerequisites
- Programming experience recommended
- An affinity with algorithms and logical reasoning
Related Modules in the Bachelor TCS
- Discrete Structures and Algorithms (automata and graph algorithms)
- Software Systems (implementing software)



