Compilerbau Organisatorisches und Leistungskriterien...

25
CB – SS 2020 – Organisatorisches 15.05.20 1 Compilerbau Organisatorisches und Leistungskriterien Sommersemester 2020 Burkhard Messer HTW Berlin FB 4 Wirtschaftsinformatik Version 2

Transcript of Compilerbau Organisatorisches und Leistungskriterien...

Page 1: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

CB – SS 2020 – Organisatorisches 15.05.20 1

CompilerbauOrganisatorisches und Leistungskriterien

Sommersemester 2020

Burkhard Messer

HTW BerlinFB 4 Wirtschaftsinformatik Version 2

Page 2: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

2CB – SS 2020 – Organisatorisches

Organisatorisches

� Burkhard Messer, TA C 830, Tel. 5019-2511

� E-Mail: [email protected] Regeln für E-Mail beachten: Es kann nicht sichergestellt werden, dass E-Mails ankommen.

� Web: http://wi.f4.htw-berlin.de/users/messer/

� Sprechstunde: Donnerstag, 14:15 bis 15:15 Uhr, TA C 830 (Treskow Allee) – nicht im digitalen Semester.

Die Änderung zur Version 2 betrifft die Möglichkeit statt einerPräsenzklausur eine eKlausur als Teil der Prüfungsleistung zunehmen.

Page 3: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

3CB – SS 2020 – Organisatorisches

Fachgebiet Compilerbau

� Compilerbau (wie auch Betriebssysteme) werden nur noch selten gelehrt.

� Beide Gebiete beinhalten aber Techniken, die in anderen Bereichen notwendig sind:– Parsieren von Datenaustausch-Formaten: XML, JSON

– Im Web: Ajax mit JavaScript-Tests der Responses

– Application Firewalls für Webservices, SQL-Filter

– Realisierung von Shells, z.B. bash, rexx oder Powershell

– Reguläre Ausdrücke

– Domain Specific Languages (DSL)

Page 4: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

4CB – SS 2020 – Organisatorisches

Ziele der Veranstaltung I

Das wesentliche Ziel der Veranstaltung besteht darin,dass Sie einen Compiler für eine kleine, aber benutzbareSprache realisieren.

Page 5: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

5CB – SS 2020 – Organisatorisches

Ziele der Veranstaltung II

Nach der Veranstaltung

… kennen Sie die Architektur von Compilern,

… wissen Sie, wie LL(1)-Grammatiken aussehen,

… kennen Sie Zwischensprachen,

… kennen Sie das Generieren von Code,

… kennen Sie einen Interpreter für eine Byte-Code-Maschine.

Es werden keine Inhalte aus dem Reich der Theoretischen Informatikbehandelt, sondern nur die praktischen Aspekte.

Page 6: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

6CB – SS 2020 – Organisatorisches

Aufbau der Veranstaltung

� 1. Teil: Realisierung des Compilers für Plong– Lexikalische Analyse

– LL(1)-Parser

– Abstrakter Syntaxbaum

– Codegenerierung für eine virtuelle Maschine

– Virtuelle Maschine

� 2. Teil: Compilertechniken– Speicherverwaltung, Garbage Collection

– Reflexion, Annotationen

– Generics/Typenparameter

– Aspekte

– Pointer (smart, optional, weak etc.)

– (etwas) Extensible Languages

– (etwas) Bootstrapping

– (etwas) Optimierung

Page 7: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

7WIS – SS 2020 – Organisatorisches

Bewertung I - Möglichkeiten

Studierende

Variante B Variante C

Page 8: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

8CB – SS 2020 – Organisatorisches

Bewertung II – Variante B

� Die Veranstaltung besteht aus zwei Teilen:– Vorlesung mit Klausur (max. 16 Punkte)

– Übungen mit bewerteten Lösungen (max. 24 Punkte)

� Die Zensur wird anhand der Summe der Punkte beider Teile zum Zeitpunkt der Prüfungsdurchführung berechnet.

� Zum Bestehen der Veranstaltung sind mindestens 20 Punkte erforderlich, d.h. bei voller Punktzahl der Übungen braucht zum Bestehen der andere Teil nicht erbracht zu werden.

Page 9: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

9WIS – SS 2020 – Organisatorisches

� Die Veranstaltung besteht aus zwei Teilen:– Vorlesung ohne Klausur

– Übungen mit bewerteten Lösungen (max. 40 Punkte)

� Die Zensur wird anhand der Punkte zum Zeitpunkt der Prüfungsdurchführung berechnet.

� Zum Bestehen der Veranstaltung sind mindestens 20 Punkte erforderlich.

Zur Prüfung für den gewünschten Zeitraum anmelden!

Page 10: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

10WIS – SS 2020 – Organisatorisches

Bewertung IV – Variante B oder C?

� Variante B wird nur dann gewählt, wenn die Hochschulleitung sich gegen Klausuren in der HTW entschieden hat. Realistischer Zeitpunkt der Entscheidung: Mai-Juni

� Klausuren über das Internet wird es nicht geben.

� Wenn B wegfällt, ersetzen die Übungen K1.. den Teil, der durch die Klausur abgedeckt ist.

� Diese Übungen werden bis zum Datum der Prüfung akzeptiert und gehen in die Zensur ein.

� Es besteht keine Wahl der Studierenden zwischen den beiden Varianten, d.h. sie gilt immer für alle.

Page 11: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

11CB – SS 2020 – Organisatorisches

Bewertung V – Die Aufgabenblätter

Nr. Thema B C

1 Sprache Plong 3 3

2 Scanner 8 8

3 LL(1)-Parser 7 7

4 Abstrakter Syntaxbaum 6 6

K1 Interpreter EM1 6

K2 Codegenerierung 6

K3 Optimierung 4

Die Punktezahl entspricht dem Schwierigkeitsgrad der Lösung.Die Aufgaben müssen in der obigen Reihenfolge gemacht werden,da sie aufeinander aufbauen.

Es kann sein, dass sich während der Veranstaltung heraus stellt,dass es so nicht geht; dann gibt es Änderungen, die vom Umfangher dem hier entsprechen.

Page 12: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

12CB – SS 2020 – Organisatorisches

Bewertung VI – die Zensur

Von Bis Zensur

38 40 1.0

36 37 1.3

34 35 1.7

32 33 2.0

30 31 2.3

28 29 2.7

26 27 3.0

24 25 3.3

22 23 3.7

20 21 4.0

0 19 5.0

Punkte

Die Punkte werden zum Zeitpunktder Prüfung zusammengezählt.

Ein nachträgliches Nachreichenist nicht möglich.

Page 13: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

13CB – SS 2020 – Organisatorisches

Bewertung VII – Abgabe der Lösungen

� 1. Prüfungszeitraum (1. PZR):– Der letzte Termin ist der Tag der Klausur.

– Später abgegebene Lösungen auch per Email werden für den 1. Prüfungszeitraum nicht berücksichtigt.

� 2. Prüfungszeitraum (2. PZR):– Der späteste Abgabetermin ist der Klausurtermin des 2.

Prüfungszeitraums

– Später abgegebene Lösungen auch per Email werden für diese Veranstaltung nicht berücksichtigt.

� Bei jeder Abgabe einer Lösung müssen alle Namen der Gruppenmitglieder angegeben werden.

� Nachträgliche Änderungen (rückwirkend) der Gruppe sind nicht zulässig.

� Solange keine Übungen stattfinden können, werden alle Lösungen per Email abgegeben.

Page 14: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

14CB – SS 2020 – Organisatorisches

Gruppenarbeit I

� Gruppenarbeit ist bis zu max. 3 Personen zulässig.

� Miteinander reden ist nicht nur erlaubt, sondern erwünscht.

� Aber: Abschreiben ist nicht zulässig!

Wenn jemand eine fremde Kopie als seine eigene abgibt,so werden Original und alle Kopien nicht gewertet.

Also: Entwickeln Sie Ihre Lösung.

Page 15: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

15CB – SS 2020 – Organisatorisches

Gruppenarbeit II

� https://fm4.orf.at/stories/3000611/?utm_source=pocket-newtab

� https://www.projekte.hu-berlin.de/de/gnuHU/anleitungen/digitale-konferenzen

� https://www.un-hack-bar.de/2020/03/25/social-life-2-0-wir-stellen-euch-unsere-infrastruktur-zur-verfuegung/

� https://c3w.at/services/

Einige Links zu freien Werkzeugen

Page 16: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

16CB – SS 2020 – Organisatorisches

Zur Variante B

� Klausur am Ende des Semesters, voraussichtlich Anfang Juli 2020 bzw. Ende September 2020

� Ein Präsenzklausur besteht voraussichtlich aus 10-12 Fragen, die aus den Fragebögen kommen. Eine eKlausur besteht aus Fragen, die sich an den Fragebögen orientieren.

� Durch die Klausur können maximal 16 Punkte erlangt werden.

� In der Klausur wird nicht programmiert, sondern das theoretische Wissen abgefragt.

� Tipp: Wer alle Übungen selbst gemacht hat, hat keine Probleme in der Klausur.

Die Klausuren finden natürlich entsprechendden Corona-Regelungen der Hochschule statt.

Page 17: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

17WIS – SS 2020 – Organisatorisches

Vorlesung über Videomitschnitte

� Die Vorlesung deckt den theoretischen Teil ab.

� Fragebögen (200-250 Fragen)– decken den notwendigen Teil der Theorie ab

– zeigen, was wichtig ist

– bringen Sie dazu, sich auch anderes anzusehen

� Auf Wunsch (Wahrscheinlich kein Video, Variante B): Besprechung der Fragen zu einem Vorlesungstermin, in der Regel 1 Woche vor der Klausur des 1. Prüfungszeitraums.– Zu dieser Fragestunde ist eine Vorbereitung Voraussetzung.

– Es gibt davon keine Mitschnitte.

Die Präsenzveranstaltungen finden natürlich entsprechendden Corona-Regelungen der Hochschule statt.

Page 18: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

18WIS – SS 2020 – Organisatorisches

Übungen I – Variante B und C

� Besprechung der Aufgabenblätter findet einmalig während der Übungen(??) statt.

� Die für die Übungen notwendige Software ist immer Open Source oder frei erhältlich. Daher können die Übungen auch zuhause am PC/Laptop gemacht werden.

Page 19: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

19WIS – SS 2020 – Organisatorisches

Übungen II – Variante B und C

� In den Laboren gibt es nur 20 Arbeitsplätze.

� Besprechung der Aufgabenblätter wird jeweils einmal wiederholt bzw. aufgezeichnet.

Tipp: Immer vorbereitet zum Übungstermin erscheinen.Nicht erst am PC mit dem Nachdenken beginnen.

Die Präsenzveranstaltungen finden natürlich entsprechendden Corona-Regelungen der Hochschule statt.

Page 20: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

20CB – SS 2020 – Organisatorisches

Übungen III

� Es wird in Java 13/14 programmiert.

� Der Compiler-Generator ist Coco/R. Falls dies nicht mit Java 13/14 geht, so wird dann Java8 benutzt.

� Für den Build-Prozess wird maven 3.6.* verwendet.

� Wer möchte kann mit git und einem der Projektserver arbeiten.

� Eclipse oder netbeans sollten benutzt werden müssen aber nicht. Der Dozent unterstützt netbeans 11.3, aber alles sollte auch mit eclipse laufen.

� Jedes Implement wird mit Unit-Tests getestet.

� Es wird das Test Driven Development-Verfahren angewendet.

� Die Tests werden vorgegeben, dazu gehört auch eine JUnit 5-Umgebung.

Falls es mit Coco/R geht:

Page 21: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

21CB – SS 2020 – Organisatorisches

Übungen IV

Erfahrungsgemäß ist der Programmieraufwand hoch.

Nehmen Sie sich Zeit für die Übungen.

Versuchen Sie gleichmäßig während des Semesters die Übungen zu machen.

Page 22: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

22CB – SS 2020 – Organisatorisches

Programmiersprache Plong – PL/0 NG I

Page 23: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

23CB – SS 2020 – Organisatorisches

Programmiersprache Plong – PL/0 NG II

Page 24: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

24CB – SS 2020 – Organisatorisches

Didaktik

� Alles, was lediglich gehört wurde, gilt als nicht gelernt.

� Alles, was selbst gemacht wurde, ist gelernt.

Dieses Zeichen weist auf eine "gefährliche"Möglichkeit hin – wer dies missachtet, erlebtwahrscheinlich unangenehme Abenteuer.

Dieses Zeichen heißt "Aufpassen!".

Page 25: Compilerbau Organisatorisches und Leistungskriterien …wi.f4.htw-berlin.de/users/messer/LV/AI-Compilerbau-SS20/... · 2020-05-15 · Es wird in Java 13/14 programmiert. Der Compiler-Generator

25CB – SS 2020 – Organisatorisches

Das war's dann wohl....