Systemnahe Programmierung in Rust¶
Prof. Dr. Hubert Högl, Hubert.Hoegl@tha.de
Wintersemester 2026/2027
Einführung in die Programmiersprache Rust mit Anwendungen aus der Systemprogrammierung.
Nach der neuen SPO ist diese Veranstaltung kein Pflichtfach mehr, sondern ein FWP-Fach. Auch Studierende der Technischen Informatik können das Fach als Wahlfach belegen.
Beginn ab Freitag den 2. Oktober 2026, W3.21, 8:45 Uhr.
Die Veranstaltung hat 5 SWS und bringt 6 CP. Der Gesamtaufwand von 180 Std. teilt sich auf in 75 Std. Präsenzzeit und 105 Std. Selbststudium (inkl. Übungen und Vorbereitung auf die Prüfung).
Moodle (bitte selber als TeilnehmerIn eintragen): https://moodle.hs-augsburg.de/course/view.php?id=10986
Übungsaufgaben (es gibt jede Woche ein neues Übungsblatt, bis Weihnachten sind es 10 Stück):
https://gitlab.com/hhoegl-tha/snp-rs/aufgaben.
Quiz
Auch unter dem Link vom Tutor finden Sie den interaktiven Quiz aus dem Experimental Rust Book.
Beispielcode
Vergangene Projekte:
WS25/26 TODO
Übungen¶
In diesem Semester möchte ich die Übungen anders organisieren als in den letzten Semestern. Da ich oft schlechte Erfahrungen mit der Organisation der Übungen in Gruppen gemacht habe sollen alle die wöchentlichen Übungsblätter einzeln bearbeiten.
Allgemein gilt für die Übungen: Versuchen Sie die Aufgaben selbst zu lösen. Wenn Sie Codestücke im Internet finden und verwenden, dann kennzeichnen Sie die Stellen in ihrem Programm z.B. durch einen Kommentar mit dem Link, an dem Sie den Code gefunden haben. Auch wenn Sie mit ChatGPT Code erzeugt haben, müssen Sie das kennzeichnen. Es muss immer klar sein, welchen Code Sie geschrieben haben und welcher Code nicht von Ihnen stammt. Ausserdem müssen Sie den gefundenen Code verstehen und erklären können.
Projekte¶
Zusätzlich sollen zur Übung noch kleine Projekte gemacht werden. Diese fliessen als „Bonuspunkte“ mit bis zu 25% in die Bewertung der Prüfung ein. Bei den Projekten ist die Idee, dass sie sich selbst in Gruppen organisieren oder einzeln arbeiten, wie sie möchten.
Prüfung¶
Zum Semesterende wird es eine Prüfung geben, die Online über Moodle stattfinden wird. Wie schon gesagt, durch gute Lösungen bei den Übungen und durch ein paar kleine Projekte kann man bis zu 25% Bonuspunkte für die Klausur erzielen.
Meine Arbeitsumgebung¶
Ich verwende zum Vorführen in der Veranstaltung (und auch sonst)
Mint Linux (https://linuxmint.com), das direkt auf dem Notebook installiert ist.
Eine Terminal-Fenster in dem der
zellijTerminal Multiplexer läuft (https://zellij.dev) - odertmuxals Alternative. Das Hauptfenster ist in zwei „Panes“ geteilt. In der Linken läuft der Helix Editor (https://helix-editor.com), in der Rechten ist die Bash Shell zum Aufrufen voncargo. Dieses Setup ist sehr übersichtlich und eignet sich dadurch auch gut um auf älteren Beamern im Hörsaal projeziert zu werden.
Ansonsten verwende ich noch viele weitere Rust Tools (die vorher Genannten sind auch in Rust geschrieben), die wichtigsten für die tägliche Arbeit sind
fd (Dateien finden) - https://github.com/sharkdp/fd
rg (Text in Dateien finden) - https://github.com/BurntSushi/ripgrep
Eine Liste mit vielen weiteren Rust-Tools finden Sie unter https://tha.de/homes/hhoegl/home/RustTools.html.
Installation¶
Anleitung zur Installation der Rust Werkzeuge: https://www.rust-lang.org/tools/install
Linux: einfach
Windows: Ich rate zu WSL2, also im Endeffekt auch hier Linux
Man kann bequem auf der Kommandozeile arbeiten, ein simpler Editor genügt. Ein Shell-zentriertes Arbeiten ist zu bevorzugen, da man damit auch besser lernt, mit Kommandozeilenwerkzeugen umzugehen.
Integrierte Entwicklungsumgebung (IDE): brauchen wir eigentlich nicht, da das Wichtigste beim Programmieren in Rust die Ausgaben (Fehlermeldungen, Warnungen, Tipps) des Rust Compilers sind. Diese kann man sehr gut auf der Kommandozeile lesen. Ich habe auch schon davon gehört, dass IDEs diese Fehlermeldungen nicht mehr so schön zugänglich machen, was natürlich kontraproduktiv wäre. Sie können aber natürlich trotzdem eine der üblichen IDEs wie VSCode verwenden.
Test der Installation mit einem Beispielprogramm. Modul
main.rsanlegen:fn main() { println!("Hallo, Welt"); }
Kompilieren mit
rustc main.rs. Ausführen mit./main. Formatieren mitrustfmt main.rs.
Wochenplan¶
#1 02.10.26 : Bis nächste Woche
Arbeitsumgebung einrichten (Linux, WSL2)
Rust installieren: https://www.rust-lang.org/tools/install
The Book, Kap. 1 (Getting Started), 2 (Guessing Game), 3 (Common Concepts)
Übungsblatt 1 (bis Donnerstag in einer Woche, 12 Uhr)
Ideen für Miniprojekte sammeln
#2 09.10.26 : Bis nächste Woche
#3 16.10.26 : Bis nächste Woche
Übungsblatt 3
Literaturangaben¶
Die Links auf learning.oreilly... funktionieren nicht mehr, da die Hochschule
den Dienst Ende 2024 nicht mehr verlängert hat.
Einige der Bücher finden Sie auf unserer Nextcloud. Der Link steht im Moodle Kurs.
Für Anfänger geeignet
Steve Klabnick, Carol Nichols, The Rust Book, 2022 (auch kurz „The Book“ genannt).
Dieses freie Buch werden wir als verbindlichen Text in der Veranstaltung verwenden. Man kann das Buch auch sehr gut auf dem Smartphone lesen.
https://doc.rust-lang.org/book
Es gibt auch eine deutsche Übersetzung unter https://rust-lang-de.github.io/rustbook-de.
Davon gibt es auch eine Variante die sich Experimental Rust Book nennt. Dieses Buch geht bei manchen Themen viel weiter in die Tiefe als es das originale Rust Book tut. Zum Beispiel in Kapitel 4 (Ownership), ausserdem gibt es interaktive Quiz: https://rust-book.cs.brown.edu
Carlo Milanesi, Beginning Rust: Get Started with Rust 2021 Edition, 2nd edition, Apress 2022.
https://link-springer-com.ezproxy.hs-augsburg.de/book/10.1007/978-1-4842-7208-4
Dumindu Madunuwan, Learning Rust, 2026. Freies Kursmaterial das aktiv weiterentwickelt wird - auch mit praktischen Anwendungsbeispielen („Laboratory“).
David MacLeod, Easy Rust (freier Text), https://dhghomon.github.io/easy_rust
Aus dem freien Buch ist nun ein Buch vom gleichen Autor entstanden, Learn Rust in a Month of Lunches im Manning Verlag.
Malte Luttermann, Programmierung sicherer Systeme mit Rust, Amazon Media, 2020 (Taschenbuch, 253 Seiten, 13,95 Euro). Das Buch ist eine sehr leicht verständliche Einführung in Rust, enthält aber deutlich weniger Stoff als das freie The Rust Book. Es reicht daher nicht für unsere Veranstaltung.
https://www.amazon.de/Programmierung-sicherer-Systeme-mit-Rust/dp/B086PQXH3N
David Drysdale, Effective Rust, April 2024.
Für Fortgeschrittene
Jim Blandy, Jason Orendorff, Leonora F.S. Tindall, Programming Rust, 2nd Edition, 2021 (655 pages). Sehr gründliche Einführung in Rust, die aber den Anfänger überfordert. Das Buch wendet sich auch an Leute, die bereits mit Systemprogrammierung zu tun hatten.
https://learning.oreilly.com/library/view/programming-rust-2nd/9781492052586
Systemprogrammierung
Jim Blandy, Jason Orendorff, Leonora F.S. Tindall, Programming Rust (siehe oben).
Ken Youens-Clark, Command-line Rust, Apress 2022
https://learning.oreilly.com/library/view/command-line-rust/9781098109424
Prabhu Eshwarla, Practical System Programming for Rust Developers, Packt, Dec 2020.
https://learning.oreilly.com/library/view/practical-system-programming/9781800560963
Tim McNamara, Rust in Action, Manning Publications, 2021.
https://learning.oreilly.com/library/view/rust-in-action/9781617294556
Embedded Programmierung (Hallo TI-Studis!)
The Embedded Rust Book
https://docs.rust-embedded.org/book
Die Beispiele im Buch laufen auf dem STM32F3 Discovery Board. Ich habe mehrere solche Boards im Rechnertechnik-Labor G2.16.
Discovery Book (mit praktischen Übungen auf Mikrocontrollern)
Es gibt zwei Varianten dieses Buches, die man unter https://docs.rust-embedded.org/discovery/index.html findet. Die ältere Variante ist für das F3 Discovery Board von ST Micro, die jüngere Variante ist für das BBC micro:bit Board V1 oder V2.
Sammlungen von Projekten (mal hinein schauen für Miniprojekt-Anregungen)
Carlo Milanesi, Creative Projects for Rust Programmers, Packt 2020. (leider zur Zeit nicht frei zugänglich)
Shing Lyu, Practical Rust Projects: Building Game, Physical Computing, and Machine Learning Applications, Apress 2020. Das Buch kann im PDF Format beim Springer Link heruntergeladen werden.
https://link-springer-com.ezproxy.hs-augsburg.de/book/10.1007/978-1-4842-9331-7
Z.B. Kapitel 5, Physical Computing in Rust, ein simples Experiment für Raspberry Pi 3 mit LED und Taster auf einem Steckbrett.
Shing Lyu, Practical Rust Web Projects: Building Cloud and Web-Based Applications, Apress 2021 (download von Springer möglich).
https://link-springer-com.ezproxy.hs-augsburg.de/book/10.1007/978-1-4842-6589-5
Ken Youens-Clark, Command-Line Rust, O’Reilly 2022.
https://learning.oreilly.com/library/view/command-line-rust/9781098109424
Rust Language exercises on Exercism
Projektideen¶
Wie gesagt, nur Ideen, Sie können auch ihre eigenen Ideen in die Praxis umsetzen.
Einige der Bücher in den Literaturangaben enthalten viele Projektideen.
Ein Python Erweiterungsmodul in Rust schreiben (ix.11.2022-Python-Module-mit-Rust.pdf, nur mit THA Login)
In den Artikeln der Serie „Snapshot“ von Mike Schilli im Linux Magazin wird immer ein kurzes Programm in Go entwickelt, das eine kleine praktische Aufgabenstellung löst. Die Programme eignen sich sehr gut, um sie in Rust neu zu schreiben. Hier sind einige Beispiele:
Gedächtnisstütze mit Go programmieren
https://www.linux-magazin.de/ausgaben/2026/11/snapshotGo trägt historische Wetterdaten von Städten auf der Landkarte ein https://www.linux-magazin.de/ausgaben/2026/10/snapshot
Go-Programm bereitet Fotos zum Teilen im Web vor
https://www.linux-magazin.de/ausgaben/2024/11/snapshotKörpergewicht im Blick mit CGI-Skript und Go
https://www.linux-magazin.de/ausgaben/2023/11/snapshotTerminal-UI in Go schafft Platz auf Festplatten
https://www.linux-magazin.de/ausgaben/2023/7/snapshot/Passwort Manager in Go (Age)
https://www.linux-magazin.de/ausgaben/2022/12/snapshot
Man kann einfach Jahr und Monat im URL austauschen, es sollte jedes Monat ein anderes Thema behandelt werden. Auch dieser Link liefert eine Auswahl: https://www.linux-magazin.de/tag/schilli
Aus der Serie „Planet Rust“ im Linux Magazin Teil 9: Einen Chatbot in Rust bauen (verwendet ChatGPT) LM-09-2024-Planet-Rust-9-Chatbot.pdf
Die C Programme aus der Betriebssystemvorlesung vom Sommer 24 nach Rust übertragen (siehe weiter unten).
Im Betriebssystemkurs vom Sommer 2024 gab es viele kleine C Programme. Es wäre eine schöne Übung (auch gerne als Miniprojekt), manche davon nach Rust zu übertragen. Folgende Datei enthält alle Dateinamen (VPN nötig):
https://hhoegl.informatik.hs-augsburg.de/rust/Betriebssysteme-SS2024-C-Beispiele.txt
Im Archiv https://hhoegl.informatik.hs-augsburg.de/rust/Betriebssysteme.zip finden Sie alle diese Programme.
Empfehlung für den Anfang:
Praktikum0_Code-Beispiele/_5_ptr_ptr.cPraktikum0_Code-Beispiele/_6_ptr_func0.cPraktikum0_Code-Beispiele/_7_ptr_func.cPraktikum0_Code-Beispiele/_8_main_params.c
WASM mit Rust (ix.2024.09.102_107.Web-Apps-mit-Rust-und-Webassembly.pdf)
Joseph F. Nusairat, Rust for the IoT. Building Internet of Things Apps with Rust and Raspberry Pi, z.B. Kapitel 9, Raspberry Pi Sense Hat.
https://link-springer-com.ezproxy.hs-augsburg.de/book/10.1007/978-1-4842-5860-6
Tutorials im Netz¶
Meine Liste der besten Tutorials/Beispielsammlungen für Rust:
Rust by Example, https://doc.rust-lang.org/rust-by-example
Rust Cookbook (stellt Crates vor), https://rust-lang-nursery.github.io/rust-cookbook
Rustlings, https://github.com/rust-lang/rustlings
Rust by Practice, https://practice.course.rs
100 Exercises to learn Rust (von Mainmatter, Luca Palmieri)
Comprehensive Rust https://google.github.io/comprehensive-rust/index.html
Notizen¶
Projekt-Template mit
cargo generateMein Tutor J. Knoll vom WS23/24 hat zwei Projekt-Templates angelegt, die sie unter den folgenden Links finden:
Die Idee hinter den Templates ist, dass man sofort daraus ein initiales Projekt erzeugen kann. Zunächst muss man cargo um das Kommando
generateerweitern mitcargo install cargo-generate. Dann gibt man z.B. folgende Kommandozeile ein:$ cargo generate --git https://gitlab.com/hhoegl-tha/snp-rs/simple-cli-template.git 🤷 Project Name: neues_projekt 🔧 Destination: /home/hhoegl/neues_projekt ... 🔧 project-name: neues_projekt ... 🔧 Generating template ... [1/7] Done: Cargo.toml [2/7] Done: LICENSE [3/7] Done: README.md [4/7] Done: src/cli.rs [5/7] Done: src/lib.rs [6/7] Done: src/main.rs [7/7] Done: src 🔧 Moving generated files into: `/home/hhoegl/neues_projekt`... 🔧 Initializing a fresh Git repository ✨ Done! New project created /home/hhoegl/neues_projektDamit wurde das Projekt
neues_projektangelegt. Natürlich nun hineinschauen, um zu sehen was es macht. Das gleiche auch mit dem zweiten Template ausprobieren! Sie können sich gerne selber Templates für Ihre Projekte anlegen.