We offer various topics connected with Internet of Things, virtualization and cloud, embedded and distributed systems, middleware, operating systems, performance engineering, verification and testing, model-driven development, etc. The best is to contact us. We will create a topic specifically to your skills and interests.

Similarly, if you have your own idea that is related to our focus or courses we teach, do not hesitate to contact us too!

To give you an idea about possible topics, you can find several ready-made ones below. They can be also adjusted to your interests.

(Foundations of) Smart Collaborative Disassembler

Team software project (4-5 team members)

The goal is to build an advanced disassembler that could be used in a collaborative fashion, i.e., with multiple users disassembling the same binary at the same time. The project should lay foundation for supporting multiple processors and binary formats, but is only required to provide support for one or two. Besides collaborative disassembly, the main focus would be designing an internal representation that would enable static analysis, limited symbolic execution, and also allow the user to reorganize and move instructions between basic blocks within the confines of the data flow graph.

A Tool for Systematic Literature Reviews

Team software project (4-5 team members)

The goal is to design and develop a tool supporting systematic literature reviews (SLR).

The required features of the tool are as follows.

  • automated download and categorization of scientific documents (papers, articles,…)
  • support for different
    • review protocols
    • types of documents
    • sources
    • categorization criteria
    • automated analyzes
  • a workflow for a manual concurrent annotation of documents by multiple users
  • a connection to Zotero (http://zotero.org/)
    • storing and searching documents

An extension of JetBrains MPS

Team software project (4-5 team members)

The goal is to extend the JetBrains MPS platform to support additional programming languages and implement new features, extensions, plug-ins.

Target: software project (4-5 team members)

Custom Web Services for Czech Snooker

Team software project (4-5 team members)

Snooker is quite popular cue sport all around the World. The Czech Republic has it’s own proper snooker association which organizes tournaments, communicates with clubs, etc. Their management system is very old, uncomfortable to use and has almost no features, which means that most of the things have to be handled manually, using emails or other means of communications. The goal of this assignment is to design and develop a custom made, robust web system that would be used by people of the Czech Snooker.

This system is supposed to be standalone web application that runs on dedicated server (i.e. no cloud) which has following requirements

  • Informational web page with content management system
  • Web application for managing tournaments
    • Creation, entry in calendar
    • Players assignment into groups
    • Online management of multiple matches
    • Options to send facebook posts regarding the tournament with automatic link generation.
    • Tournament reports
  • Web application for managing referees
    • Assignment of referees to tournaments (and matches)
    • Tracking work hours of referees
  • Online ranking system for players
    • Results of tournaments
    • Ranking position
  • Finance tracking (not accounting system)
    • Club reservations
    • Player starting fees
  • Other miscellaneous features (based on requirements of the Czech Snooker)
    • Generating printable PDF with match reports
    • Exporting calendar with tournaments

Decision procedure for Linear Integer Arithmetic for modern SMT solver

Master thesis

SMT solvers are software tools for deciding about satisfiability of formulas in first-order logics. They are powerful reasoning engines successfully used in applications such as verification of software. Linear Integer Arithmetic is a popular language for modelling verification problems, providing a good trade-off between precision and solvability.

The goal of the thesis is to implement a decision procedure for Linear Integer Arithmetic according to latest research results in the OpenSMT solver [1], and evaluate its performance, preferably using benchmarks from [2].

  1. OpenSMT: https://github.com/usi-verification-and-security/opensmt/
  2. SMT-LIB: http://smtlib.cs.uiowa.edu
  3. SMT-COMP: https://smt-comp.github.io/2019/

Dynamic Paired Application Profiling

Bc. thesis, Master thesis or Individual software project

The goal of this assignment is to develop a tool and a method for identifying performance regressions in the runtime environment (Java Virtual Machine, Just-In-Time Compiler) as opposed to regressions in applications themselves.

  • The same application would be run under different versions of the runtime environment
  • Selected (possibly random) methods would be dynamically instrumented in both copies
  • Measurement comparison would reveal performance differences

Low power smart sensor network

Bc. thesis or Individual software project

The goal is to design and develop a system for collecting data from a set of distributed smart sensors. The sensors communicate with a central station via a low power network (LPWAN), e.g. LORA. The central station processes the collected data, stores them localy and/or remotely (in a cloud). Additionally, the central station can control the sensors.

The sensors can monitor for example temperature/humidity of the air or temperature/humidity of the soil or height of a set of unmanned aerial vehicles or …

Modern JVM Benchmark Suite


Java Virtual Machine can execute a spectrum of languages supported by modern dynamic compilers (C, R, JS, Ruby and so on). The goal of the assignment is to build a suite of benchmarks to support further virtual machine and compiler development.

  • The benchmarks should be selected from a range of practical workloads
  • The assignment should examine major workload features and estimate workload space coverage
  • Compiler optimizations triggered by individual workloads should be included in the coverage metrics

Modular Weaver for DiSL

Bc. thesis or Individual software project

DiSL is a bytecode instrumentation framework utilizing a domain-specific language for instrumentation hosted in Java. At the heart of DiSL is a weaver which inserts user-defined snippets of Java code into the base program. The existing weaver in the DiSL framework is rather monolithic, hindering maintenance and development of new features. The goal of the project is to modularize the DiSL weaver into multiple self-contained transformations that are applied on the Java bytecode in a predefined order.

Modularization of Dynamic Analyses

Master thesis

Dynamic program analysis tools based on code instrumentation serve many important software engineering tasks. However, constructing new analysis tools is difficult, because existing frameworks offer little or no support to the programmer beyond the incidental task of instrumentation. The goal of this project is to develop an extension of the DiSL instrumentation framework that would support composing dynamic analyses in a modular fashion so that tasks related to maintenance of analysis state could be separated and reused.

This topic can also be an extension of the Modular Weaver for DiSL project.

Profiling in Limited Execution Context


When profiling applications, we can pick methods that are either close to the root or close to the leaves of the call tree.

  • Functions high in the call tree
    • Are called less frequently, take a long time to complete, have large code
    • It is difficult to identify reasons for performance regressions in such methods
  • Functions low in the call tree
    • Are called from too many other locations
    • Performance regressions are easily recognized but not clear what caller is impacted

The goal of this assignment is to develop an instrumentation approach capable of measuring a method only in a particular call path, or even only on a particular object instance.

Regression Benchmark Visualization Console


Build a regression benchmark visualization console that will provide interactive access to measurement data from the Graal regression benchmarking project.

Smart plant pot

Bc. thesis or Individual software project

The goal is to design and develop a smart plant pot. The required features of the pot are as follows.

  • The pot monitors humidity and temperature of the soil and humidity and temperature of the air.
  • The pot reports measurements to a central storage (cloud).
  • A plant owner monitors current status and history of measurements.
  • The pot sends alerts when temperature/humidity are “out of limits”.
  • The limits are set automatically based on the growing plant
    • The user sets a kind of the plant; the pot downloads limits from a cloud
  • Possible extensions
    • Adding an illumination sensor
    • Supporting a set of pots
    • Supporting sharing of the air sensors (i.e., a set of pots on the same window sill shares the air sensors)