Einführung in die Praktische Informatik (IPI)
Undergraduate module (8 LP), taught in German, offered every winter semester (including WS 2025/26 and WS 2026/27). The official module description follows.
| Merkmal | Angabe |
|---|---|
| LV-Nr. | Vorlesung 1100211000, Übung 1100211001 |
| Kürzel | IPI |
| Leistungspunkte | 8 LP |
| Dauer | ein Semester |
| Angebotsturnus | jedes Wintersemester |
| Format | Vorlesung 4 SWS + Übung 2 SWS |
| Arbeitsaufwand | 240 h; davon 90 h Präsenzstudium, 15 h Prüfungsvorbereitung, 135 h Selbststudium und Bearbeitung der Übungsaufgaben (eventuell in Gruppen) |
| Verwendbarkeit | B.Sc. Informatik, B.Sc. Mathematik |
| Sprache | Deutsch |
| Lehrende | wechselnd |
| Prüfungsschema | 1+3 |
| Teilnahmevoraussetzungen | keine |
| Lernziele | Die Studierenden beherrschen die Grundlagen des systematischen Programmierens und Testens, sowohl in konzeptioneller Sicht als auch in einfachen praktischen Einsatzszenarien. Sie können datengesteuerte Algorithmen entwerfen, sie in einer Programmierumgebung und -sprache mithilfe leistungsstarker und erweiterbarer Code-Editoren formulieren und auf Rechnern testen und ausführen lassen. Sie beherrschen die Grundkonzepte moderner höherer Programmiersprachen und können sie zur Programmentwicklung auf Rechnern einsetzen. Die Studierenden kennen grundlegende funktionale, prozedurale und objekt-orientierte Strukturen zur Ausführung von Programmen sowie die Grundlagen algorithmischer Komplexität und einfacher (Sortier-)Algorithmen. |
| Lerninhalte | • Grundlagen der Informatik: Begriffe, Aufbau und Funktionsweise von Computern sowie Einführung in algorithmisches Denken, Programme und Programmiersprachen • Einführung in eine Programmiersprache und deren Einsatzgebiete • Verständnis von Werten, Datentypen, Variablen und Ausdrücken sowie deren Verwendung in Programmen • Definition und Anwendung von Funktionen zur Strukturierung von Programmen • Nutzung von Bedingungen und bedingten Ausführungen zur Steuerung von Programmabläufen • Arbeiten mit Sequenzen (z. B. Listen, Tupel, Strings) und deren Verarbeitung • Entwurf und Implementierung von Schleifen, insbesondere for-Schleifen, unter Einsatz von Hilfsfunktionen und Akkumulatoren • Modellierung von Daten mittels Objekten und Datenklassen • Verwendung von Alternativen und Pattern Matching zur strukturierten Fallunterscheidung • Einführung in Baumstrukturen und Suchbäume sowie deren algorithmische Verarbeitung • Umgang mit veränderlichen Datenstrukturen und deren Auswirkungen auf Programme • Grundlagen der objektorientierten Programmierung (OOP) und deren Konzepte • Vertiefung von OOP-Konzepten: Aggregation, Properties, Invarianten, Datenkapselung und Operatorüberladung • Nutzung von Dictionaries und Mengen zur effizienten Datenorganisation • Verständnis und Anwendung von Rekursion zur Lösung komplexer Probleme • Einsatz von Ausnahmen zur Fehlerbehandlung sowie Verwendung von Generatoren und Iteratoren; Einführung in Backtracking-Verfahren • Grundbegriffe der theoretischen Informatik: Turingmaschinen, Berechenbarkeit, Komplexität und grundlegende Sortierverfahren • Einführung in die funktionale Programmierung und deren zentrale Konzepte • Modellierung von Zuständen mittels Automaten sowie Einsatz abstrakter und generischer Klassen • Anwendung von Lambda-Notation und Komprehensionen zur kompakten Darstellung von Operationen • Nutzung von Entwicklungswerkzeugen und Plattformen: Docker, GitHub, Visual Studio Code sowie AI-basierte Coding Assistants |
| Vergabe der LP und Modulendnote | Das Modul wird mit einer benoteten Klausur abgeschlossen. Die Modulendnote wird durch die Note der Klausur festgelegt. Für die Vergabe der LP gilt die Regelung aus dem Kapitel Prüfungsmodalitäten. |
| Nützliche Literatur | Wird von der bzw. dem Lehrenden bekannt gegeben. |