Zum Inhalt springenZur Suche springen

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
HalbmodulEinführung in die Logische ProgrammierungJedes WS
HalbmodulCompilerbauJedes WS
HalbmodulVon NAND zu TetrisJedes SS
Master
HalbmodulFunktionale ProgrammierungJedes WS
HalbmodulSicherheitskritische SystemeJedes WS
HalbmodulModelcheckingJedes SS
HalbmodulDynamische ProgrammiersprachenJedes SS
HalbmodulVertiefung Logische Programmierung

Jedes SS (ausser Herr Leuschel gibt Info 4)

HalbmodulSeminar BlockchainSS 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,...)

  • Kryptowährungen (Bitcoin, Ethereum, iota,...)

  • 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

Verantwortlichkeit: