Hauptinhalt
Dieser Eintrag ist aus dem Sommersemester 2018 und möglicherweise veraltet. Es konnte kein aktuelles Äquivalent gefunden werden.
CS 524 — Programmverifikation und -synthese
(engl. Program Verification and Synthesis)
Niveaustufe, Verpflichtungsgrad | Vertiefungsmodul, Wahlpflichtmodul |
Lehr- und Lernformen, Arbeitsaufwand |
Vorlesung (4 SWS), Übung (2 SWS), 270 Stunden (90 Std. Präsenzzeit, 180 Std. Selbststudium) |
Leistungspunkte, Voraussetzungen zum Erwerb |
9 LP Studienleistung(en): Erreichen von mindestens 50 Prozent der Punkte aus den wöchentlich zu bearbeitenden Übungsaufgaben und mündliche Präsentation der Lösung von mindestens zwei der Übungsaufgaben. Prüfungsleistung: Klausur oder mündliche Prüfung |
Sprache, Benotung |
Deutsch,Die Benotung erfolgt mit 0 bis 15 Punkten gemäß der Prüfungsordnung für den Studiengang M.Sc. Informatik. |
Dauer des Moduls, Häufigkeit |
Ein Semester, Alle 3-4 Semester |
Modulverantwortliche(r) | Prof. Dr. H.-Peter Gumm |
Inhalt
Praktische Verifikation und Synthese von Scala-Programmen mit „Leon“
und deren Theoretische Hintergründe:
- Hoare Kalkül, Verifikationsbedingungen, weakest preconditions
- Entscheidungsverfahren ( Lineare Arithmetik, Abstrakte Datentypen, Quantorenelimination)
- Kombination von Entscheidungsverfahren
(Satisfiability modulo theories und Z3)
- Lambda Kalkül und Kombinatorische Logik
- Lambda Ausdrücke in Scala und Java 8
- Prädikatenlogik höherer Stufe (Higher Order Logik)
- Modellierung und Verifikation funktionaler Sprachen (Leon)
- Programmsynthese aus Spezifikationen
Qualifikationsziele
- Einsatz und Anwendung aktueller Forschungswerkzeuge,
- selbstständige Erkundung neuer Einsatzgebiete,
- Kenntnisse in der Verifikation und Synthese von Software,
- Erarbeitung der theoretischen Hintergründe,
- Kenntnisse in Anwendung und Grenzen von Entscheidungsverfahren,
- Kenntnisse in Theorie und Anwendung des Lambda-Kalküls,
- Umgang mit Logik höherer Stufe.
Voraussetzungen
Keine. Empfohlen werden die Kompetenzen, die in den Modulen Logik, Objektorientierte Programmierung, Algorithmen und Datenstrukturen vermittelt werden, sowie Grundkenntnisse im funktionalen Programmieren (z.B. in Scala, Haskell oder Python).
Verwendbarkeit
Das Modul kann im FB12 verwendet werden im Studiengang bzw. in den Studiengängen
- B.Sc. Informatik
- M.Sc. Informatik
- M.Sc. Mathematik
- M.Sc. Wirtschaftsmathematik
Im Studiengang M.Sc. Informatik kann das Modul im Studienbereich Vertiefungsbereich Informatik absolviert werden.
Das Modul kann auch in anderen Studiengängen absolviert werden (Exportmodul).
Die Wahlmöglichkeit des Moduls ist dadurch beschränkt, dass es der Theoretischen Informatik zugeordnet ist.
Literatur
- N. Bjørner et. al.: Program Verification as Satisfiability Modulo Theories
- R. Blanc et al.: An Overview of the Leon Verification System
- M. Gordon: Programming Language Theory and its Implementation. Prentice Hall
- H.P. Gumm: Generating algebraic laws from Imperative Programs TCS 217 (1999).
- S. Hetzl: Higher-Order Logic (logic.at/staff/hetzl/teaching/hol_2013.pdf)
- V. Kuncak et al.: Leon Dokumentation: leon.epfl.ch/doc/
- MicroSoft Research: Z3-guide (rise4fun.com/Z3/tutorial/guide)
- P. Suter et al.: Satisfiability modulo recursive programs
Bitte beachten Sie:
Diese Seite beschreibt ein Modul gemäß dem im Sommersemester 2018 aktuellsten gültigen Modulhandbuch. Die meisten für ein Modul gültigen Regeln werden nicht durch die Prüfungsordnung festgelegt, und können daher von Semester zu Semester aktualisiert werden. Folgende Versionen liegen im Online-Modulhandbuch vor:
- WiSe 2016/17
- SoSe 2018
- WiSe 2018/19
- WiSe 2019/20
- WiSe 2020/21
- SoSe 2021
- WiSe 2021/22
- WiSe 2022/23
- WiSe 2023/24 (kein Äquivalent)
Das Modulhandbuch enthält alle Module, unabhängig vom aktuellen Veranstaltungsangebot, vergleichen Sie dazu bitte das aktuelle Vorlesungsverzeichnis in Marvin.
Die Angaben im Online-Modulhandbuch wurden automatisch erstellt. Rechtsverbindlich sind die Angaben der Prüfungsordnung. Wenn Ihnen Unstimmigkeiten oder Fehler auffallen, sind wir für Hinweise dankbar.