Systemnahe Programmierung in Rust

ferris

Prof. Dr. Hubert Högl, Hubert.Hoegl@tha.de

Wintersemester 2025/2026

Einführung in die Programmiersprache Rust mit Anwendungen aus der Systemprogrammierung.

Die Veranstaltung hat 5 SWS / 6 CP. Nach der neuen SPO ist diese Veanstaltung kein Pflichtfach mehr, sondern ein FWP-Fach. Auch Studierende der Technischen Informatik können das Fach als Wahlfach belegen.

Beginn ab Freitag den 10. Oktober 2025, W3.03, 8:15 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=9801

Website vom Tutor Johannes Knoll https://tha.de/homes/knolljo/rust (cool!)

Übungsaufgaben (es gibt jede Woche ein neues Übungsblatt, bis Weihnachten sind es 10 Stück) https://gitlab.com/hhoegl-tha/snp-rs/aufgaben

Quizzes

Folien

Beispielcode https://gitlab.com/hhoegl-tha/snp-rs/snpws

Im Wintersemester 2021/2022 hatte ich den ersten Rust Kurs, siehe die Seite SysProgRust21. Es gab damals auch eine Evaluierung.

Vergangene Projekte:

Ü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 vermutlich 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.

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.rs anlegen:

    fn main() {
       println!("Hallo, Welt");
    }
    

    Kompilieren mit rustc main.rs. Ausführen mit ./main. Formatieren mit rustfmt main.rs.

Wochenplan

#1 10.10.25
#2 17.10.25
  • The Book, Kap. 4 (Ownership), 5 (Structs)

#3 24.10.25
  • The Book, Kap. 6 (Enums and Pattern Matching), 8 (Common Collections)

#4 31.10.25
#5 07.11.25
  • The Book, Kap. 10 (Generic Types, Traits, Lifetimes), Kap. 11 (Automated Tests)

#6 14.11.25
#7 21.11.25
  • The Book, Kap. 13 (Iterators and Closures)

#8 28.11.25
#9 05.12.25

todo

#10 12.12.25

todo

#11 19.12.25

todo

Literaturangaben

Für Anfänger geeignet

  1. Steve Klabnick, Carol Nichols, The Rust Book, 2018 (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 Quizze: https://rust-book.cs.brown.edu

  2. Carlo Milanesi, Beginning Rust: Get Started with Rust 2021 Edition, Apress 2021.

    Dieses Buch kann man entweder unter folgendem Link online lesen

    https://learning.oreilly.com/library/view/beginning-rust-get/9781484272084

    oder im PDF/EPUB Format vom Springer Link herunterladen:

    https://link-springer-com.ezproxy.hs-augsburg.de/book/10.1007/978-1-4842-7208-4

  3. Dumindu Madunuwan, Learning Rust, 2021 (freier Text) https://learning-rust.github.io

  4. 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.

  5. 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

Für Fortgeschrittene

  1. 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

  1. Jim Blandy, Jason Orendorff, Leonora F.S. Tindall, Programming Rust (siehe oben).

  2. Ken Youens-Clark, Command-line Rust, Apress 2022

    https://learning.oreilly.com/library/view/command-line-rust/9781098109424

    Code: https://github.com/kyclark/command-line-rust

  3. Prabhu Eshwarla, Practical System Programming for Rust Developers, Packt, Dec 2020.

    https://learning.oreilly.com/library/view/practical-system-programming/9781800560963

  4. Tim McNamara, Rust in Action, Manning Publications, 2021.

    https://learning.oreilly.com/library/view/rust-in-action/9781617294556

Embedded Programmierung (Hallo TI-Studis!)

  1. 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.

  2. 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)

  1. Carlo Milanesi, Creative Projects for Rust Programmers, Packt 2020.

    https://learning.oreilly.com/library/view/creative-projects-for/9781789346220

  2. Shing Lyu, Practical Rust Projects: Building Game, Physical Computing, and Machine Learning Applications, Apress 2020. Das Buch kann im PDF Format beim Springer Link (https://link-springer-com.ezproxy.hs-augsburg.de) heruntergeladen werden.

    https://learning.oreilly.com/library/view/practical-rust-projects/9781484255995

    Z.B. Kapitel 5, Physical Computing in Rust, ein simples Experiment für Raspberry Pi 3 mit LED und Taster auf einem Steckbrett.

  3. Shing Lyu, Practical Rust Web Projects: Building Cloud and Web-Based Applications, Apress 2021.

    https://learning.oreilly.com/library/view/practical-rust-web/9781484265895

  4. Ken Youens-Clark, Command-Line Rust, O’Reilly 2022.

    https://learning.oreilly.com/library/view/command-line-rust/9781098109424

  5. Rust Language exercises on Exercism

    https://exercism.org/tracks/rust/exercises

Sonstige Hilfen

  1. Rust by Example, https://doc.rust-lang.org/rust-by-example

  2. Rust Cookbook, https://rust-lang-nursery.github.io/rust-cookbook

  3. Rustlings, https://github.com/rust-lang/rustlings

  4. Rust by Practice, https://practice.course.rs

  5. 100 Exercises to learn Rust, https://rust-exercises.com, https://rust-exercises.com/100-exercises