Compilerbau SS 20

ACHTUNG: Der zusätzliche Praktikums-Termin ist am 28.07.2020 von 08:00-13:00 Uhr.

Die Teilnahme ist freiwillig.

ACHTUNG: Die Abgabe für die zweite Hausübung ist ab jetzt offen.

Bitte beachten Sie die unten genannte Deadline.

ACHTUNG: Bitte beachten Sie die unten genannten Hinweise zur Klausur.

Ausnahmsweise, wegen Corona:

Alte Klausuren, ohne Garantie auf Vollständigkeit oder Richtigkeit

Organisation

Solange Vorlesung und Praktika als Nicht-Präsenz-Veranstaltungen gehalten werden, gilt Folgendes:

1. Statt der Vorlesung montags studieren Sie das "Manuskript Geisse", das meine Vorlage zum Tafelanschrieb in früher gehaltenen Compilerbau-Veranstaltungen war. Damit Sie das doch knapp gehaltene Manuskript gut verstehen können, empfehle ich jeweils das vorherige Durcharbeiten von bestimmten Abschnitten aus dem "Skript Jäger/Meyer". Details siehe unten. Statt der Vorlesung donnerstags wird eine wöchentliche Online-Fragestunde (ab 8:00 Uhr) eingerichtet, bei der Sie Fragen zu den Themen der Vorlesung stellen können.

2. Die Praktika werden zu den im Stundenplan angegebenen Terminen online angeboten. Es stehen Tutoren zur Beantwortung von Fragen zu den Praktikumsaufgaben zur Verfügung. Diese Aufgaben sollten in Gruppen von jeweils zwei Studierenden bearbeitet werden. Einzelbearbeitung ist möglich; grössere Gruppen als zwei Personen werden aber nicht akzeptiert. Das Praktikum zielt auf die Implementierung eines eigenen kleinen Compilers ab, wobei gewisse Teile der Implementierung vorgegeben sind. Die zu übersetzende Sprache ist SPL (Simple Programming Language), die Zielsprache ECO32-Assembler. Die Implementierung kann in Java oder C erfolgen. Die Praktikumsunterlagen finden Sie hier.

3. Es gibt zu ausgewählten Themen Übungsaufgaben, die Sie bearbeiten sollten. Wann Sie das tun, bleibt Ihnen überlassen. Fragen dazu werden ebenfalls in den Praktika beantwortet.

4. Zulassungsvoraussetzung zur Klausur ist die Abgabe von zwei akzeptierten Hausübungen (das sind einfach Zwischenstände der Entwicklung des o.g. Compilers). Die Abgabe erfolgt elektronisch. Sie können bis zur Deadline beliebig oft abgeben und bekommen eine direkte Rückmeldung über den Erfolg. Bei der Hausübung 1 werden 100% gefordert, bei der Hausübung 2 werden 80% bestandene Tests gefordert. Die Note im Kurs wird alleine durch das Klausurergebnis bestimmt. Zur Klausur dürfen Sie ein handgeschriebenes Blatt DIN A4 (d.h. beidseitig beschrieben) mit eigenen Notizen benutzen. Andere Hilfsmittel sind nicht erlaubt.

5. Wie immer ist das Kopieren von Code anderer Gruppen (auch in Auszügen!) Betrug und wird mit dem Ausschluss aller beteiligten Gruppen von der Klausur geahndet. Auch das Benutzen von Lösungen aus vorhergehenden Semestern oder aus dem Netz sind verboten! Weitere Konsequenzen siehe hier.

Online-Zugang

Als Online-Plattform dient BigBlueButton, eine offene Konferenz-Software, die mit einem aktuellen HTML5-Browser bedient werden kann. Die Zugangsadresse ist Compilerbau SS20. Sie müssen sich über LDAP mit Ihrem THM-Account anmelden.

Bitte beachten Sie unbedingt folgende Regeln:

1. Schalten Sie die Kamera aus! Wir benötigen den Video-Stream nicht, und er kostet unnötig Bandbreite.

2. Bitte respektieren Sie die Obergrenze von 60 Teilnehmern in der wöchentlichen Fragestunde! Sollte es notwendig sein, richte ich eine weitere Fragestunde zu einem anderen Termin ein.

3. Bitte respektieren Sie die Obergrenze von jeweils 30 Teilnehmern in den Praktika! Wenn im Raum mehr Teilnehmer anwesend sein sollten, wählen Sie einen anderen Termin und versuchen Sie es dann erneut. Es sind insgesamt drei Praktika vorgesehen, so dass Sie einen passenden und nicht überfüllten Raum finden können sollten. Gegebenenfalls lege ich weitere Termine für zusätzliche Praktika fest.

4. Benutzen Sie ein Headset! Mit den eingebauten Mikrofonen gibt es ganz häufig akustische Rückkopplungen, die ein vernünftiges Gespräch (dann leider auch für andere!) unmöglich machen.

5. Schalten Sie ihr Mikrofon nur ein, wenn Sie auch reden! Anderenfalls hören alle Ihre Freundin lachen und den Hamster husten... ;-) Im Ernst: Nebengeräusche stören die Kommunikation ernorm und lassen sich durch das Stummschalten des Mikros leicht vermeiden.

6. Seien Sie bitte höflich und haben Sie ein wenig Geduld! Die Situation ist für uns alle neu und nicht ganz einfach, aber mit ein bisschen gutem Willen sicher zu bewältigen.

Zeitlicher Ablauf

Die Termine hinter den Einzelthemen dienen zu Ihrer Orientierung. Termingerecht abgegeben werden müssen nur die beiden Hausübungen. Die erste Hausübung besteht aus der Lösung zur Praktikumsaufgabe 3, die zweite Hausübung aus der Lösung zur Praktikumsaufgabe 6.

1. Einführung
Zeitraum: 20.04. - 26.04.
Manuskript Geisse: Kap. 1 (Seiten 4-8)
Skript Jäger/Meyer: Seiten 7-11
Praktikum: Sichten der Unterlagen, Studieren der SPL-Definition, Entscheidung zur Implementierungssprache

2. Lexikalische Analyse 1
Zeitraum: 27.04. - 03.05.
Manuskript Geisse: Kap. 2 (Seiten 9-14)
Skript Jäger/Meyer: Seiten 39, 50-64, 75-80
Praktikum: Praktikumsaufgabe 1

3. Lexikalische Analyse 2
Zeitraum: 04.05. - 10.05.
Manuskript Geisse: Kap. 2 (Seiten 14-16)
Skript Jäger/Meyer: Seiten 65-73
Praktikum: Praktikumsaufgabe 1

4. Syntaktische Analyse 1
Zeitraum: 11.05. - 17.05.
Manuskript Geisse: Kap. 3 (Seiten 17-22)
Skript Jäger/Meyer: Seiten 40-49, 81-103
Praktikum: Praktikumsaufgabe 2

5. Syntaktische Analyse 2
Zeitraum: 18.05. - 24.05.
Manuskript Geisse: Kap. 3 (Seiten 23-26)
Skript Jäger/Meyer: Seiten 104-109
Praktikum: Praktikumsaufgabe 2

6. Syntaktische Analyse 3
Zeitraum: 25.05. - 31.05.
Manuskript Geisse: Kap. 3 (Seiten 26-31)
Skript Jäger/Meyer: Seiten 110-120
Praktikum: Praktikumsaufgabe 2

7. Abstrakte Syntax
Zeitraum: 01.06. - 17.06.
Manuskript Geisse: Kap. 4 (Seiten 32-36)
Skript Jäger/Meyer: Seiten 132-145
Praktikum: Praktikumsaufgabe 3

Deadline 1. Hausübung: 17.06.2020, 18:00 Uhr

8. Semantische Analyse 1
Zeitraum: 18.06. - 24.06.
Manuskript Geisse: Kap. 5 (Seiten 37-41)
Skript Jäger/Meyer: Seiten 146-149
Praktikum: Praktikumsaufgabe 4

9. Semantische Analyse 2
Zeitraum: 25.06. - 30.06.
Manuskript Geisse: Kap. 5 (Seiten 41-46)
Skript Jäger/Meyer: ---
Praktikum: Praktikumsaufgabe 4

10. Laufzeitorganisation
Zeitraum: 01.07. - 07.07.
Manuskript Geisse: Kap. 6 (Seiten 47-51)
Skript Jäger/Meyer: 150-154
Praktikum: Praktikumsaufgabe 5

11. Codegenerierung 1
Zeitraum: 08.07. - 14.07.
Manuskript Geisse: Kap. 7 (Seiten 52-56)
Skript Jäger/Meyer: ---
Praktikum: Praktikumsaufgabe 6

12. Codegenerierung 2
Zeitraum: 15.07. - 19.07.
Manuskript Geisse: Kap. 7 (Seiten 57-59)
Skript Jäger/Meyer: ---
Praktikum: Praktikumsaufgabe 6

Deadline 2. Hausübung: 07.08.2020, 23:59 Uhr