Compilerconstructie is een derdejaars vak binnen de bachelor
Informatica aan de Universiteit Leiden.
Het wordt gegeven in het najaarssemester.
Practische informatie
Docent: Rudy van Vliet
te vinden op: kamer 124 van het Snellius
telefoon: 071-527 5777
email: rvvliet(at)liacs(dot)nl
Op de homepage
van de docent kunt u zien of hij op zijn werk te bereiken is.
Assistent: Teddy Zhai
te vinden op: kamer 122 van het Snellius
telefoon: 071-527 5775
email: tzhai(at)liacs(dot)nl Opzet college: hoorcollege (in het Nederlands) en practicum Collegetijden:
dinsdag van 11:15 - 13:00 uur in zaal 403,
van Rudy van Vliet (hoorcollege)
en Teddy Zhai (en Sven van Haastregt) (practicum)
van dinsdag 4 september tot en met dinsdag 4 december 2012.
Tentamens
Er zijn twee (schriftelijke) tentamens gepland: Eerste tentamen: vrijdag 21 december 2012, 10:00-13:00.
Dit eerste tentamen is geweest.
U kunt het hier nog bekijken.
De handgeschreven uitwerking van de docent
kunt u hier bekijken.
Hertentamen: dinsdag 26 maart 2013, 14:00-17:00.
Ook dit hertentamen is geweest.
U kunt het hier nog bekijken.
Ook dit hertentamen is nagekeken.
Alle cijfers (practicum, tentamen, hertentamen en eindcijfers) kunt u
hier bekijken.
Studenten kunnen de eigen uitwerking van het hertentamen, inclusief correcties,
ophalen bij de docent.
Vragenuur
Er is een vragenuur voor het tentamen gehouden op donderdag 20 december 2012,
vanaf 14:00 uur.
Studielast
Met het behalen van dit vak verdient u 6 EC.
Het niveau van het vak wordt aangeduid als `300'.
Practicum
In vier programmeeropdrachten wordt de theorie uit de hoorcolleges
toegepast. De eerste opdracht is een eenvoudige opdracht, bedoeld
om er een beetje in te komen. In de volgende opdrachten wordt in
drie stappen een eenvoudige compiler opgebouwd; elke stap is een aparte
programmeeropdracht. Alle programmeeropdrachten moeten (goed) worden
gemaakt. Bij het begin van elke programmeeropdracht is er een
practicumbijeenkomst van twee uur (gewoon op dinsdagochtend).
Vervolgens is er nog drie weken de tijd om de opdracht af te ronden
(behalve bij de eerste opdracht).
De eerste opdracht levert een + op, voor de andere drie opdrachten
krijg je een cijfer. Het gemiddelde van die drie cijfers wordt het
eindcijfer voor het practicum.
Alle vier opdrachten zijn nagekeken!
Met name bij de vierde opdracht waren de cijfers niet allemaal voldoende.
Studenten kregen de mogelijkheid om het practicum alsnog af te ronden.
Daarbij konden ze hoogstens een 5.5 krijgen voor de verbeterde
opdracht(en). Wie de daarvoor gestelde, nieuwe deadline niet haalde,
kan in het volgende collegejaar
weer aanschuiven bij het practicum Compilerconstructie.
Cijfers
Het eindcijfer van het vak is een gewogen gemiddelde van de cijfers voor
het tentamen en het practicum: (1 x tentamen + 2 x practicum)/3.
N.B.: om het vak te halen, moet zowel
voor het tentamen als voor alle vier programmeeropdrachten een voldoende
zijn gehaald.
Een voldoende cijfer voor het tentamen Compilerconstructie blijft staan
tot het volgende jaar. Hetzelfde geldt voor een voldoende cijfer voor
het complete practicum. Voldoende cijfers voor individuele onderdelen
van het practicum blijven niet per se staan.
Doelstelling
Inzicht verwerven in de functionaliteit van de verschillende fasen
van het compileerproces, en hoe deze fasen aan elkaar gerelateerd zijn.
Vertrouwd raken met de verschillende stappen
in de constructie van een compiler en de problemen die daarbij optreden.
Inhoud
Onderwerpen die aan de orde komen tijdens de colleges hebben betrekking
op het proces van de constructie van een compiler, b.v. (even op z'n Engels):
lexical analysis, syntax analysis, semantic analysis,
intermediate code generation, code generation, and code optimization.
Literatuur
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman:
"Compilers: Principles, Techniques, & Tools",
second edition,
Pearson / Addison Wesley, 2007, ISBN: 978-0-321-49169-5.
Ook de eerste editie van het boek, uit 1986, kan nog gebruikt worden.
De auteurs van die editie zijn Aho, Sethi en Ullman.
Vanwege de draak op de voorkant van het boek (ook bij een voorganger
van het boek) wordt het boek ook wel het `dragon book' genoemd.
Helaas is de draak verdwenen van de voorkant van de internationale editie
van de tweede editie...
Editie 1 (red dragon), Editie 2 (purple dragon),
Internationale editie van Editie 2.
De tweede editie is de officiele editie. Tijdens de colleges zal dan
ook daarnaar verwezen worden. Heb je nog de eerste editie, dan kan
de volgende
verwijslijst
(bijgewerkt tot en met college 8)
van de tweede naar de eerste editie handig zijn.
Tentamenstof
De tentamenstof is
de stof die tijdens de colleges wordt behandeld.
Een overzicht van de paragrafen uit het boek die per college
worden behandeld, vindt u in dezelfde
verwijslijst
(bijgewerkt tot en met college 8)
die hierboven al genoemd werd.
Schema en slides
Hieronder staat het schema voor de hoorcolleges en
de practicumbijeenkomsten.
De slides die tijdens het college gebruikt zijn, zijn na de colleges
hier gepubliceerd.
Dinsdag 4 september 2012:
hoorcollege 1: Overview.
Slides college 1,
en desgewenst een
kleine versie,
om zuinig af te drukken.
Dinsdag 11 september 2012:
hoorcollege 2: Lexical Analysis.
Slides college 2,
en desgewenst een
kleine versie,
om zuinig af te drukken.
Dinsdag 18 september 2012:
hoorcollege 3: Syntax Analysis 1.
Slides college 3,
en desgewenst een
kleine versie,
om zuinig af te drukken.
Dinsdag 25 september 2012:
hoorcollege 4: Syntax Analysis 2.
Slides college 4,
en desgewenst een
kleine versie,
om zuinig af te drukken.
Dinsdag 2 oktober 2012:
practicum bijeenkomst: programmeeropdracht 1
Dinsdag 9 oktober 2012:
hoorcollege 5: Static Type Checking + introductie programmeeropdracht 2.
Slides college 5,
en desgewenst een
kleine versie,
om zuinig af te drukken.
Dinsdag 16 oktober 2012:
practicum bijeenkomst: programmeeropdracht 2
Dinsdag 23 oktober 2012:
hoorcollege 6: Intermediate Code Generation.
Slides college 6,
en desgewenst een
kleine versie,
om zuinig af te drukken.
Dinsdag 30 oktober 2012:
practicum bijeenkomst: programmeeropdracht 3
Dinsdag 6 november 2012:
hoorcollege 7: Code Generation.
Slides college 7,
en desgewenst een
kleine versie,
om zuinig af te drukken.
Dinsdag 13 november 2012:
hoorcollege 8: Code Optimization.
Slides college 8,
en desgewenst een
kleine versie,
om zuinig af te drukken.
Dinsdag 27 november 2012:
werkcollege 9: opgaven maken.
Slides werkcollege 9,
en desgewenst een
kleine versie,
om zuinig af te drukken.
Dinsdag 4 december 2012:
extra practicum bijeenkomst
Oud tentamen
Het tentamen in najaar 2012 zal niet per se lijken op de tentamens
Compilerconstructie in eerdere jaren. Reden is onder andere dat
we nu editie 2 van het boek als `hoofdeditie' gebruiken, en ook omdat
we iets andere stof hebben behandeld. Een enigszins representatief
tentamen is
Vragen en opmerkingen kunt u sturen naar:
Rudy van Vliet;
rvvliet(at)liacs(dot)nl
Laatste wijziging: 4 augustus 2015
- http://www.liacs.leidenuniv.nl/~vlietrvan1/coco/coco_nj2012/