<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>IMPL 2026 Summer on Software Technology</title>
    <link>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/</link>
    <description>Recent content in IMPL 2026 Summer on Software Technology</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PC1: Better Syncthing with CRDTs</title>
      <link>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pc1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pc1/</guid>
      <description>Many people want to have their files available on multiple devices and want seamless file synchronization across them. For various reasons, they might not want to rely on centralized cloud services and want to have their files available while offline. This introduces distributed systems challenges like concurrent edits. In this project, you will build a decentralized, peer-to-peer file synchronization tool similar to Syncthing. To guarantee that all devices eventually agree on the same version of the files, you will rely on techniques used by Conflict-free Replicated Data Types (CRDTs).</description>
    </item>
    <item>
      <title>PD1: Syntax, Semantics and Typesystems in Lean</title>
      <link>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pd1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pd1/</guid>
      <description>Lean is a modern, functional, dependently-typed programming language that allows both to write efficient code (with a foreign function interface to C), but at the same time can serve as a proof assistant, via the proofs-are-programs principle.&#xA;We can start with the functional programming, start with a toy arithmetic expression DSL and an interpreter. We could grow the language. We could learn to use of monads and monad transformers to represents effects, look into the difference between first-order and higher-order representations of syntax and their benefits and drawbacks, try out well-typed and well-scoped syntax.</description>
    </item>
    <item>
      <title>PF1: Local Sync for Local-first</title>
      <link>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pf1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pf1/</guid>
      <description>The premise of Local-first software is that data is stored on the device, but can be synchronized between devices in any way, from cloud sync to &amp;ldquo;sneaker net&amp;rdquo;. In practice, most sync solutions default to internet-based connectivity, either cloud-based or peer-to-peer. While this works, local-first solutions should be more ambitions:&#xA;The idea of this topic is to build a proof-of-concept for a peer discovery and sync framework that actively makes use of local connectivity - be that LAN, WiFi Direct, Bluetooth (Low Energy), UWB, or something else.</description>
    </item>
    <item>
      <title>PF2: Making FOSS apps Local-first</title>
      <link>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pf2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pf2/</guid>
      <description>Local-first software emphasizes user agency and privacy as a core principle, while still supporting features we expect from modern apps, like great performance and real-time collaboration. In local-first apps, the &amp;ldquo;cloud&amp;rdquo; is entirely optional, which means that your data only belongs to you, and no-one can restrict your access to that data.&#xA;We are researching how to make local-first apps better, and what it actually takes to go from traditional cloud-based applications to local-first ones.</description>
    </item>
    <item>
      <title>PF3: Improving Awareness for Git-based Collaboration</title>
      <link>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pf3/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pf3/</guid>
      <description>Git is a popular tool for collaborating on source code asynchronously, but it requires significant external tooling for more intensive collaboration (e.g. GitHub). But even with that tooling, keeping track of what different collaborators are doing across multiple repositories is challenging and requires active effort.&#xA;The idea of this topic is to add tooling around Git that can reveal what collaborators are doing across the code base(s), without requiring manual effort and while preserving privacy as best as possible.</description>
    </item>
    <item>
      <title>PJ1: Implementing Compositional Distributed Protocols with Replicated Data Types in Scala</title>
      <link>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pj1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pj1/</guid>
      <description>Protocol replicated data types (PRDTs) are a novel approach for implementing distributed protocols using replicated data types (RDTs). The core idea is to use RDTs as a way to track protocol knowledge that is replicated between the different peers. Whenever a peer makes progress on the protocol, they add new facts to this knowledge store which will eventually reach other peers. The replicated knowledge grows monotonically and once discovered facts are never removed again.</description>
    </item>
    <item>
      <title>PS1: Choreographic Actors</title>
      <link>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/ps1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/ps1/</guid>
      <description>Actor programming is a concurrency model where independent entities called &amp;ldquo;actors&amp;rdquo; communicate by passing messages and are found in languages such as Erlang and Elixir. Multiparty session types specify communication protocols among multiple participants, ensuring that all follow a shared protocol and ruling out errors like deadlocks or message mismatches at compile time. Maty is the first actor language design supporting both static multiparty session typing and the full power of actors taking part in multiple sessions.</description>
    </item>
    <item>
      <title>PT1: Formalizing Programming Languages in Lean</title>
      <link>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pt1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.st.informatik.tu-darmstadt.de/teaching/impl/26summer/pt1/</guid>
      <description>Lean is a modern, functional, dependently-typed programming language that allows both to write efficient code (with a foreign function interface to C), but at the same time can serve as a proof assistant, via the proofs-are-programs principle.&#xA;In this project, you will implement the semantics (e.g. interpreter or operational semantics) and type systems of very simple languages and prove properties about them.&#xA;For this, you will use Lean, which is both a programming language and a theorem prover.</description>
    </item>
  </channel>
</rss>
