Skip to content

Commit

Permalink
Org: prune syllabus and merge into main landing page (#27)
Browse files Browse the repository at this point in the history
  • Loading branch information
cagix authored Aug 29, 2023
1 parent b28fb19 commit 60f97fc
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 120 deletions.
35 changes: 35 additions & 0 deletions admin/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,38 @@ Team eintragen kann.

Wenn die Themen nicht ausreichen, finden wir gern noch mehr und/oder andere Themen.
Lediglich Thema 1 ist "gesetzt" und wird auf alle Fälle vergeben.


## Einordnung Lernziele

Die Lernziele der einzelnen Einheiten werden in einer Einstufung nach

> *Anderson, Krathwohl (eds)*: "A Taxonomy for Learning, Teaching, and Assessing: A Revision of
> Bloom's Taxonomy of Educational Objectives", Allyn & Bacon, 2001
angegeben.

Kennen (K1)
: Abruf von Informationen (Begriffe, Fakten, Prinzipien)
: (erkennen, nennen, bezeichnen, wiedergeben, kennen)

Verstehen (K2)
: Begründen und Erläutern von Aussagen zum Thema
: (beschreiben, zusammenfassen, vergleichen, klassifizieren, begründen, erklären)

Anwenden (K3)
: Übertragung von erworbenem Wissen auf neue Situationen oder Anwendung zur Problemlösung
: (ausführen, anwenden, beurteilen, entwerfen, nutzen)


## Erwarteter Arbeitsaufwand

* **90h Selbststudium => ca. 6h Arbeitszeit pro Woche**

Zeiten sind Richtwerte! - Manche brauchen länger, manche sind schneller ...

Die Praktikumsaufgaben sollen Ihnen helfen, sich mit den Inhalten der Vorlesung auseinander zu setzen. Die Abgabeform und die Bedingungen an das Testat sind bewusst so gewählt, damit Sie im Praktikum untereinander in eine Diskussion eintreten (können). Nutzen Sie diese Chance und verhalten Sie sich aktiv - so macht das Praktikum Spaß und bringt allen mehr.

Studieren Sie! Studieren bedeutet, sich **selbstständig** mit einem Thema auseinander zu setzen, zu vertiefen, zu üben, Zusammenhänge herzustellen. Die Lehrveranstaltung unterstützt Sie dabei, indem die wichtigsten Themen ausgesucht, in eine zeitliche Reihenfolge gebracht und didaktisch aufbereitet werden, so dass Sie sich die Inhalte leichter erschließen können. Es gibt aber viele weitere Themen und Dinge, die nicht besprochen werden können (schon aus rein zeitlichen Gründen), die aber (für Sie und/oder das Themengebiet) interessant sein können!

Prüfungsrelevant sind selbstverständlich nur die besprochenen Inhalte. Der Fokus liegt aber auf dem "Können", also dem **Beherrschen** der jeweiligen Themen.
118 changes: 0 additions & 118 deletions admin/syllabus.md

This file was deleted.

52 changes: 50 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,59 @@ In diesem Modul geht es um ein grundlegendes Verständnis für die wichtigsten K
im Compilerbau. Wir schauen uns dazu relevante aktuelle Tools und Frameworks an und
setzen diese bei der Erstellung eines kleinen Compiler-Frontends für [_Mini-Python_] ein.

Siehe [Syllabus](admin/syllabus.md) zu Details.

[_Mini-Python_]: https://github.com/Compiler-CampusMinden/Mini-Python-Builder


## Überblick Modulinhalte

1. Lexikalische Analyse: Scanner/Lexer
* Reguläre Ausdrücke
* Klassisches Vorgehen: RegExp nach NFA (Thompson's Construction),
NFA nach DFA (Subset Construction), DFA nach Minimal DFA (Hopcroft's Algorithm)
* Manuelle Implementierung, Generierung mit ANTLR und Flex
* Error Recovery

2. Syntaxanalyse: Parser
* Kontextfreie Grammatiken (CFG), Chomsky
* LL-Parser (Top-Down-Parser)
* FIRST, FOLLOW
* Tabellenbasierte Verfahren
* Rekursiver Abstieg
* LL(1), LL(k), LL(*)
* Umgang mit linksrekursiven Grammatiken
* Umgang mit Vorrang-Regeln und Assoziativität
* Backtracking, Memoizing, Predicated Parsers; ANTLR4: ALL(*)
* LR-Parser (Bottom-Up-Parser)
* Shift-Reduce
* LR(0), SLR(1), LR(1), LALR(1)
* Generierung mit ANTLR und Bison
* Error Recovery
* Grenze Lexer und Parser (aus praktischen Gesichtspunkten)

3. Symboltabellen
* Berücksichtigung unterschiedlicher Sprachparadigmen
* Typen, Klassen, Polymorphie
* Namen und Scopes

4. Semantische Analyse und Optimierungen
* Attributierte Grammatiken: L-attributed vs. R-attributed grammars
* Typen, Typ-Inferenz, Type Checking
* Datenfluss-Analyse
* Optimierungen: Peephole u.a.

5. Zwischencode: Intermediate Representation (IR), LLVM

6. Interpreter
* AST-Traversierung
* Read-Eval-Schleife
* Resolver: Beschleunigung bei der Interpretation

7. Compiler
* Speicherlayout
* Erzeugen von Byte-Code
* Ausführen in einer Virtuellen Maschine


## Team

- [BC George](https://www.hsbi.de/minden/ueber-uns/personenverzeichnis/birgit-christina-george)
Expand Down

0 comments on commit 60f97fc

Please sign in to comment.