Programmanalyse
Dozent:innen: Univ.-Prof. Dr. Sebastian Erdweg; Sven KeidelKurzname: 08.079.732
Kurs-Nr.: 08.079.732
Kurstyp: Vorlesung/Übung
Voraussetzungen / Organisatorisches
Vorlesung "Programmiersprachen". Gute Programmierkenntnisse.Digitale Lehre
Wie Sie wissen wird das kommende Semester bis auf Weiteres ausschließlich digital stattfinden können. Für die Veranstaltung Programmanalyse haben wir uns folgendes Vorgehen vorgenommen:- Es wird keine Vorlesungen geben. Anstelle der Vorlesungen haben wir Literatur zum Selbststudium bestimmt, dass Sie mit unserer Hilfe bearbeiten werden. Wir verwenden primär zwei Bücher. Beide Bücher sind eventuell auch als E-Book verfügbar, am besten suchen Sie selbst danach.
- "Types and Programming Languages" von Benjamin C. Pierce. Dieses Buch wird uns für ca. 10 Wochen beschäftigen, eine Anschaffung lohnt sich.
- "Principles of Program Analysis" von Flemming Nielson, Hanne R. Nielson, und Chris Hankin. Dieses Buch werden wir in geringerem Umfang am Ende Vorlesung nutzen, eine Anschaffung lohnt sich nur für Interessierte.
- Mittwochs um 12:00 Uhr, Fokus: Reading Assignment
- Freitags um 13:00 Uhr, Fokus: Exercise Assignment
- sowie Montags um 13:00 Uhr, Fokus: Exercise Assignment
Zur Kommunikation verwenden wir ausschließlich Microsoft Teams. Bitte installieren Sie sich die App und melden Sie sich mit Ihrer Uni-Mainz Emailadresse an. Dann verwenden Sie den Code "ptu8dhw" um dem Team "ProgAnalysis Course" beizutreten (https://support.microsoft.com/en-us/office/use-a-link-or-code-to-join-a-team-c957af50-df15-46e3-b5c4-067547b64548). Nutzen Sie die aktuelle Woche um sich mit Teams vertraut zu machen und testen Sie Ihr Videokonferenz-Setup mit Kommilitonen. Gerne können Sie sich mit Ihren Kommilitonen im Kanal "random" austauschen.
Empfohlene Literatur
- Fachartikel, die im Laufe der Veranstaltung bekanntgegeben werden
- "Types and Programming Languages" von Benjamin C. Pierce
- "Principles of Program Analysis" von Flemming Nielson, Hanne R. Nielson, and Chris Hankin
Inhalt
Programmanalysen sind ein fundamentales Werkzeug der Softwareentwicklung und treten in vielfältiger Form in der Praxis auf. Man kann dabei grob drei Einsatzgebiete von Programmanalysen unterscheiden:- Zum Bug Finding verwendet man Analysen, die Fehlerquellen in einem Program auffinden bzw. die Abstinenz solcher Fehler validieren. Zum Beispiel: type checking, bounds checking, information flow.
- Für Compiler Optimierungen verwendet man Analysen, die Eigenschaften eines Programms berechnen, welche Optimierungen ermöglichen. Zum Beispiel: reaching definitions, constant propagation.
- Für Editor Support verwendet man Analysen, die Informationen über ein Programm ableiten um damit Tools zu speisen, die Entwickler beim Programmieren unterstützen. Zum Beispiel: Code completion, Refactorings.
Die Entwurfsmöglichkeiten für Programmanalysen sind entsprechend vielfältig und es haben sich verschiedene Analysetechniken etablieren können. Das Ziel der Veranstaltung "Programmanalysen" ist das Studierende die Grundlagen des Entwurfs von Programmanalysen erlernen, für ein gegebenes Einsatzgebiet geeignete Analysetechniken auswählen können, und einfache Programmanalysen selbst entwickeln und bewerten können. Dazu werden wir eine Auswahl der folgenden Themen besprechen:
- Code smells
- Program semantics
- Dynamic analysis
- Type systems
- Control-flow graphs and data-flow analyses
- Abstract interpretation
- Soundness, Recall, and Precision
Termine
Datum (Wochentag) | Zeit | Ort |
---|---|---|
22.04.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
29.04.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
06.05.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
13.05.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
20.05.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
27.05.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
03.06.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
10.06.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
17.06.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
24.06.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
01.07.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |
08.07.2020 (Mittwoch) | 12:00 - 14:00 | 05 426 2413 - Neubau Physik/Mathematik |