Programmerzeugungssysteme

Programmerzeugungssysteme


Modul Programmerzeugungssysteme (ab JG11), 5 CP ECTS

Vorlesung/ Übung / Seminaristischer Unterricht im WT, 2. Studienjahr, 6 TWS, Prüfung 90 Min.

Beginn: Dienstag 10.01.2017, 14:45, Geb. 33/1101

Dienstag, 14:45 - 16:15 , Geb. 33/1101
Mittwoch, 09:45 - 11:15 , Geb. 33/0231 (Achtung anders als im Stundenplan)
Donnerstag, 12:00 - 13:30 , Geb. 33/1331, Vorlesung am 23.02. entfällt!

Inhalt

Es werden umfassende Kenntnisse über Funktion und Struktur von Meta-Programmen wie Compiler, Lader, Binder; Interpreter und Programm-Generatoren vermittelt. Die Studierenden erhalten eine grundlegende Einführung in den Compilerbau (reguläre Sprachen, Grammatik, Parsertechniken, Frontend-Backend-Struktur, Compiler-Compiler, lokale und globale Optimierungsmethoden) und lernen anhand eines C-Compilers die praktische Umsetzung eines Compilers kennen. Daneben wird aufgezeigt, wie größere Softwaresysteme strukturiert, Programm-Generatoren und andere Werkzeuge für die Softwareentwicklung eingesetzt werden..

Qualifikationsziele

Die Studierenden erwerben Kenntnis der Abläufe und Ergebnisse beim Übersetzen
und Abarbeiten höherer Programmiersprachen. Sie können formale Sprachen für
unterschiedliche Aufgabenstellungen entwerfen und deren Leistung sowie  Grenzen beurteilen. Sie kennen die typischen Konzepte (wie z.B. reguläre Ausdrücke, Parsertechniken) für das Einlesen und Transformieren komplexer Daten und  können diese anwenden. Mit Hilfe von Programm-Generatoren sind sie in der Lage, Übersetzer und Interpreter für einfache Sprachen zu entwickeln..

Voraussetzungen

Die Vorlesung setzt eine Reihe von Kenntnissen aus den vorangegangenen Lehrveranstaltungen voraus. Neben dem Verständnis der Inhalte werden im Speziellen folgende Themen als bekannt angenommen und können daher auch (implizit) mit geprüft werden:

  • Grundlagen der Informatik: Zahlensysteme und Notationen, Eigenschaften von Algorithmen, Formale Sprachen (insb. EBNF), Eigenschaften von Programmiersprachen, Zustandsdiagramme & Automaten, Verständnis für die Verarbeitung einer CPU.
  • Grundlagen der Programmierung: Fähigkeit, funktional und prozedural zu programmieren. Eigenschaften funktionaler/ imperativer/ objektorientierter Programmierung, Anwendung von Compiler und Interpreter, Präfix-/ Infix-/ Postfixnotation, Rekursion, Datenstrukturen, Listen, Schnittstellen und API-Spezifikationen

  • Maschinenorientiertes Programmieren: Fähigkeit, C-Programme zu schreiben und zu lesen. Literale und Datentypen in C, Deklaration und Definition von Funktionen, Funktionsaufruf, Compiler und Linker, dynamische Datenstrukturen wie Listen und Bäume, Zugriff auf Dateien, scanf(), printf() und Escape-Sequenzen.

Unterlagen werden auf dem Dokumentenserver (unintern) bereitgestellt.