Geplante Veranstaltungen zum Schwerpunkt Softwaretechnik und Programmiersprachen
Hier geben wir einen Überblick welche Veranstaltungen in den nächsten Semestern geplant sind.
Geplant sind folgende Verantaltungen:
Bachelor | ||
---|---|---|
Halbmodul | Einführung in die Logische Programmierung | Jedes WS |
Halbmodul | Compilerbau | Jedes WS |
Halbmodul | Von NAND zu Tetris | Jedes SS |
Master | ||
---|---|---|
Halbmodul | Funktionale Programmierung | Jedes WS |
Halbmodul | Sicherheitskritische Systeme | Jedes WS |
Halbmodul | Modelchecking | Jedes SS |
Halbmodul | Dynamische Programmiersprachen | Jedes SS |
Halbmodul | Vertiefung Logische Programmierung | Jedes SS (ausser Herr Leuschel gibt Info 4) |
Halbmodul | Seminar Blockchain | SS 2019 |
Einführung in die logische Programmierung
Einführung in die logische Programmierung
Inhalt
In der imperativen Programmierung werden Programme durch Sequenzen von Instruktionen dargestellt. In der logischen Programmierung beschreibt man statt einer Lösung für ein Problem in Form eines Algorithmus das Problem durch Fakten und Regeln und der Computer findet selbständig eine Lösung. Das eröffnet einen völlig neuen und radikal unterschiedlichen Blickwinkel auf das Programmieren der auch bei der alltäglichen Entwicklung mit C oder Java sehr nützlich ist.
Die Vorlesung behandelt die Themen
- Aussagenlogik, Pradikatenlogik
- Resolution
- Programmieren mit Horn Klauseln
- Grundlagen von Prolog
Angebot & Modus
Bachelor Halbmodul, jeweils im Wintersemester.
Voraussetzungen
Informatik 1 und 2
Compilerbau
Compilerbau
Inhalt
Techniken des Compilerbaus werden nicht nur bei der Entwicklung von neuen Programmiersprachen benötigt, sondern überall dort, wo Texte von einem Computer verarbeitet werden sollen. Sei es das Einlesen einer verschachtelten Konfigurationsdatei oder eines mathematischen Ausdrucks von der Kommandozeile. In diesem Kurs werden die Grundlagen des Compilerbaus vermittelt und praktisch vertieft.
Die Vorlesung behandelt die Themen
- Lexikale Analyse
- Syntaxanalyse
- Semantische Analyse
- Code-Generierung
- Benutzen von Werkzeugen zur automatischen Erzeugung von Compilern
Angebot & Modus
Bachelor Halbmodul, jeweils im Wintersemester.
Voraussetzungen
Informatik 1 und 2
Von NAND zu Tetris
Von NAND zu Tetris
Inhalt
Diese Veranstaltung bietet eine Reise durch verschiedene Gebiete der Informatik um dabei ein Gesamtbild über die prinzipielle Funktionsweise von Computern vermitteln. Ausgehend von dem NAND-Gatter werden alle wichtigen Hardware-Komponenten eines Computers in einer Simulation nachgebaut, ALU, CPU, RAM, etc. Für die im Rahmen der Vorlesung entwickelte CPU und die dazugehörige Maschinensprache werden schrittweise eine Assemblersprache, eine virtuelle Maschine und eine Programmiersprache sowie der dazugehörige Compiler entwickelt. Mit all diesen Werkzeugen werden schließlich ein einfaches Betriebssystem und Anwendungsprogramme entwickelt.
Die Vorlesung wird begleitet von Übungen. Die eigenständige praktische Anwendung des Gelernten soll im Fokus der Veranstaltung liegen. Die Studenten entwickeln in den Übungen die diversen in der Vorlesung vorgestellten Komponenten moderner Computer.
Angebot & Modus
Bachelor Halbmodu, jeweils im Sommersemester.
Voraussetzungen
Informatik 1 und 2
Dynamische Programmiersprachen
Dynamische Programmiersprachen
Inhalt
Diese Vorlesung vermittelt typische Konzepte und Eigenschaften dynamischer Programmiersprachen, z.B. Typisierung und Duck-Typing, Metaprogrammierung u.A. In der zweiten Hälfte des Semesters wird vermittelt, wie ein Interpreter für eine dynamische Programmiersprache implementiert wird, um die zuvor behandelten Konzepte zu unterstützen.
In den praktischen Übungen sollen die Studierenden diverse Probleme mit Hilfe der Eigenschaften einer dynamischen Programmiersprache lösen, um ein tieferes Verständnis dieser Konzepte zu erlangen. In der zweiten Semesterhälfte besteht die Aufgabenstellung in der Übung darin, selbständig einen Interpreter für eine vorgegebene dynamische Programmiersprache zu schreiben.
Im Rahmen eines Semesterabschluss-Projekts soll eine Erweiterung für die in den Übungen entwickelte Programmiersprache entworfen und umgesetzt werden.
Angebot & Modus
Master Halbmodul, jeweils im Sommersemester.
Voraussetzungen
Informatik 1 bis 4
Funktionale Programmierung
Funktionale Programmierung
Funktionale Programmierung hat in den letzten Jahren deutlich an Fahrt aufgenommen. Sprachen wie Haskell, Scala, Clojure, OCaml und F# gewinnen immer mehr an Bedeutung und auch Java soll in Version 8 mit Closures endlich Syntax für anonyme Funktionen bekommen.
Ausgehend von den Problemen, mit denen wir in objektorientierten Sprachen permanent konfrontiert sind, wollen wir in dem Kurs neue Ansätze erarbeiten um so ein umfassenderes Verständnis von Programmierung zu erhalten. Wir werden uns damit befassen wie wir Programme in funktionalen Sprachen strukturieren und unbeabsichtigte Komplexität loswerden können. Ausserdem werden wir uns mit internen domänenspezifischen Sprachen beschäftigen. Die Sprache, die wir in dem Kurs verwenden werden ist Clojure, ein modernes Lisp, das auf der JVM läuft und viele aus softwaretechnischer Sicht interessante Konzepte umsetzt. Wir werden uns ebenfalls mit statischer Typisierung in der Programmiersprache Haskell und nebenläufiger Programmierung in Erlang befassen.
Angebot & Modus
Master Halbmodul, jeweils im Wintersemester.
Voraussetzungen
Informatik 1 bis 4
Modelchecking
Modelchecking
Inhalt
Das Ziel des Kurses ist das Erlernen der grundlegenden Prinzipien von Model Checking und die praktische Anwendung dieser Prinzipien auf einem Formalismus. Es werden folgende Themen im Kurs behandelt:
- Spezifikation und Modellieren von Hardware- und Software-Systemen
- Praktische Anwendung des ProB Tools mit der B-Methode
- Temporale Eigenschaften (Safety, Liveness und Fairness)
- Reguläre Sprachen und reguläre Eigenschaften, Model Checking von ω-regulären Eigenschaften (Nichtdeterministische und Deterministische Büchi Automaten (DBA/NBA))
- Lineare Temporale Logik und LTL-Model Checking
Angebot & Modus
Master Halbmodul, jeweils im Sommersemester.
Voraussetzungen
Informatik 1 bis 4
Sicherheitskritische Systeme
Sicherheitskritische Systeme
Inhalt
Sicherheitskritische Systeme gibt eine Einführung in die Entwicklung von Softwaresystemen mit Hilfe von formalen Methoden am konkreten Beispiel der B-Methode.
Angebot & Modus
Master Halbmodul, jeweils im Wintersemester.
Voraussetzungen
Informatik 1 bis 4
Vertiefung Logische Programmierung
Vertiefung Logische Programmierung
Inhalt
Die Vorlesung Vertiefung Logische Programmierung erweitert die aus Einführung in die logische Programmierung bekannten Konzepte.
Die Vorlesung behandelt die Themen
- (Nicht-Logische) Erweiterungen von Prolog: Cut, Dynamische Fakten
- DCG's, Parser in Prolog
- Meta-Programmierung
- Constraintprogrammierung, CHR
Angebot & Modus
Master Halbmodul, in jedem ungeraden Sommersemester (2013, 2015, 2017,...).
Voraussetzungen
Einführung in die Logische Programmierung sowie Informatik 1 bis 4
Blockchain
Blockchain
Inhalt
Mit einer Blockchain kann man ein dezentrales Buchführungssystem aufsetzen. Die Blockchain Technologie besitzt viele verschiedene praktische Anwendungen in sicherheitskritischen Systemen, die bekannteste ist wahrscheinlich die Kryptowährung Bitcoin. In diesem Modul werden folgende Inhalte abgedeckt:
-
Grundlagen der Blockchain Technologie
-
Formale Modellierung der Blockchain Technologie
-
Praktische Anwendungen der Blockchain (Fintech, Energiemarkt, Verwaltungsprozesse, Gesundheitswesen,...)
-
Smart Contracts
-
Praktische Experimente, prototypische Umsetzung einer eigenen Blockchain
-
Risiken
Angebot & Modus
Master Halbmodul, Seminar, erstmals im SS 2019. Falls erfolgreich wird die Veranstaltung in jedem Sommersemester angeboten.
Voraussetzungen
Informatik 1 bis 4