Softwareentwicklungspraktikum: Rust Winter 2025/26
Overview
Software vulnerabilities are a major security risk, frequently exploited in cyber attacks that lead to data breaches and even bankruptcy of companies. Alarmingly, around 70% of all high-severity vulnerabilities stem from memory unsafety. Yet, most of the software we rely on (operating systems, web browsers, databases, IoT software, ...) is written in inherently memory-unsafe languages like C and C++. In response, many organizations are now transitioning to memory-safe programming languages for newly written code to mitigate these risks.
Rust is a modern systems programming language that offers memory safety without sacrificing performance. It enables fast, native execution and is suitable for the entire software stack - from low-level embedded systems to web services that scale to millions of concurrent users. Rust has topped Stack Overflow’s “most loved language” ranking for nine years in a row, critical components are rewritten in Rust in Firefox, Android and Ubuntu and major tech companies (Mozilla, Google, Amazon, Meta, ...) actively contribute to Rust and its ecosystem. However, Rust is also known for its steep learning curve - mainly due to its strict compiler and novel concepts like ownership and borrowing.
What You'll Learn
In this course, you’ll have the opportunity to:
- Learn about memory management techniques
- Gain practical experience working with Rust
- Develop a larger software project as part of a team
Course Structure
We'll spend the first seven weeks of the course discussing Rust's features and ideas, sometimes comparing it to C and/or Java. The plenum sessions are accompanied by hand-picked small programming exercises where you will actually learn how to write Rust. We conclude the year with an admission exercise, where you will gain experience in navigating a larger codebase. Finally, in the new year, you will develop a project of your choice in teams of four.
The oral exam consists of presenting your project and will be scheduled in the beginning of March.
Prerequisites
- Solid programming experience in at least one imperative language (e.g., successful completion of EiP with a good grade)
- No fear to use the terminal