Topics (Summer 2024)

Please read the general course information first.

We list specific aspects that are of interest to one or more members of our research group. By selecting three of these as your desired seminar/project topics, you signal to us which aspects are most interesting to you.

Feel free to propose your own topics, or variants of existing topics, but note that we only offer topics that we believe we can actually supervise adequately.

See Flat Topic List for a list of all topics on a single page.

Distributed Programming Languages and Systems

Many application scenarios require some for of “distributed logic”: collaboration, communication, sharing data, accessing services, synchronization between multiple devices, etc.

However, designing distributed applications is often seen as too hard, thus applications are moved “to the cloud” at the cost of offline-capability, privacy, and performance.

Instead, we investigate programming language based methodologies to answer hard questions systematically. Typical questions include: How can we deal with conflicts that arise from merging changes from multiple peers? How can users relate their local copy of the data to the global state of the system? What features and guarantees do applications actually require?

Choose from these specific proposals, or suggest a topic of your own:

Application-Specific Conflict Resolution Seminar
Mergeable Replicated Data Types Project
On CRDTs in Byzantine Environments Seminar, Project
Testing Local-First Software Seminar, Project
Verification of Local-First Software Seminar, Project
Version Conflicts and Schema Evolution in Decentralized Systems Seminar, Project

Advanced Functional Programming

Programming language techniques beyond those present in mainstream languages are often useful to solve a wide range of problems in different domains. An important part of programming language design is the study of repeating patterns in the design of programming languages, a succinct and correct description of their behavior, further extension and generalization to make them more powerful, and then again the search for intuitive examples of their use.

Often advanced functional programming takes inspiration from logic and math.

Choose from these specific proposals, or suggest a topic of your own:

Application: Automated Programming Seminar, Project
Application: Choreographic Programming Seminar
Application: Differentiable Programming Seminar
Application: Incremental Programming Seminar
Application: Probabilistic Programming Seminar, Project
Technique: Programming with Effects Seminar
Technique: Programming with Modalities Seminar
Technique: Programs are Proofs Seminar
Technique: Streams and Corecursion Seminar, Project

Engineering COPL-style language interpreters

Our course, concepts of programming languages (not required for this topic, but certainly helpful), uses interpreters to study how specific foundational language features work.

However, a realistic language implementation requires much more than what we have discussed in our interpreters – not in terms of supported language concepts, but rather in terms of functionality expected of the implementation.

Engineering COPL-style language interpreters Project

For related topics, also take a look at the general course offers by our research group: Courses at STG

Specifically, in SS 2024 you may be interested in the Seminar on Artificial Intelligence for Coding Assistance