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 Assistent: Dennis Roos
email: dennis(dot)roos0(at)gmail(dot)com Onderwijsvorm: hoorcollege, werkcollege (in het Nederlands),
en een practicum met vier programmeeropdrachten Hoorcollege:
tien woensdagen van 11:15 - 13:00 uur
in zaal 405,
van Rudy van Vliet
Werkcollege: vijf woensdagen van 13:45 - 15:30 uur in zaal 405,
van Rudy van Vliet
Practicumbijeenkomsten:
vier woensdagen en drie vrijdagen van 11:15 - 13:00 uur
in de computerzalen beneden,
van Dennis Roos.
Voor de exacte data van hoorcollege, werkcollege en practicumbijeenkomsten,
zie het schema onderaan deze pagina, of bekijk het rooster op
de LIACS-website.
Studielast
Met het behalen van dit vak verdient u 6 EC.
Het niveau van het vak wordt aangeduid als `300'.
Computerprogramma's in een hogere programmeertaal
kunnen pas uitgevoerd worden door een computer
als ze zijn vertaald naar lager-niveau code.
In veel gevallen gebeurt dit door een compiler.
Bij dit vak leren we hoe compilers in verschillende stappen
broncode omzetten in assemblycode. We bestuderen de theorie
achter compilers, en passen deze toe bij het practicum,
in een serie opdrachten waarbij we een eenvoudige compiler
construeren.
Onderwerpen die aan de orde komen tijdens de colleges hebben
betrekking op het proces van de constructie van een compiler, b.v.:
lexical analysis, syntax analysis, semantic analysis,
intermediate code generation, code generation, en code optimization.
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.
Toetsing
Schriftelijk tentamen aan het eind van het semester.
Het eindcijfer van het vak is een gewogen gemiddelde van de cijfers voor
het tentamen (50%) en het practicum (50%).
Zowel tentamen als (alle) programmeeropdrachten moeten voldoende zijn.
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.
Tentamens
Er zijn twee (schriftelijke) tentamens geweest: Eerste tentamen: maandag 14 december 2015, 14:00-17:00.
Hertentamen: dinsdag 8 maart 2016, 14:00-17:00.
Beide tentamens zijn nog terug te vinden in de lijst met oude tentamens
onderaan. Bij het eerste tentamen staat er ook een uitwerking van de docent.
Beide tentamens zijn nagekeken.
De cijfers van practicum en tentamens, alsmede de resulterende eindcijfers
vindt u in het
overzicht van alle cijfers.
Je kunt je nagekeken tentamens inzien bij de docent, op kamer 124.
Vragenuur
Op vrijdagmiddag 11 december 2015 was er een vragenuur voor het tentamen,
vanaf 13:45 uur in zaal 174.
Daarbij kon men de vragen stellen die opgekomen waren bij
het leren voor het tentamen.
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. De opdrachten kunnen in teams van twee personen worden
gemaakt. Alle programmeeropdrachten moeten (goed) worden
gemaakt.
Bij het begin van de eerste programmeeropdracht is er een
introductie en practicumbijeenkomst van twee uur (gewoon op woensdagochtend).
Vervolgens is er een week tijd om de opdracht af te ronden.
Bij het begin van de tweede, derde en vierde programmeeropdacht
is er steeds eerst een introductie (gewoon op woensdagochtend),
een week later een practicumbijeenkomst van twee uur (ook op woensdagochtend)
en weer een week later een practicumbijeenkomst van twee uur (op vrijdagochtend).
In de daaropvolgende week moet je je oplossing inleveren.
In totaal is er voor elk van deze drie opdrachten dus drie weken tijd
om de opdracht af te ronden.
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.
Wie voor een of meer opdrachten geen voldoende haalt,
kan eenmalig herkansen, aan het eind van het semester.
Het maximale cijfer voor de betreffende opdrachten is dan een 5.5.
De deadline bij deze herkansing was voor alle opdrachten:
maandag 1 februari 2016, 23:59 uur.
Alle opdrachten zijn nagekeken, en ook de herkansingen.
U vindt de cijfers
in het
overzicht van alle cijfers.
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.
Eventueel kan ook de eerste editie van het boek, uit 1986, 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
(uit najaar 2012)
van de tweede naar de eerste editie handig zijn.
Voor zover er in de verwijslijst over tentamenstof wordt gesproken,
betreft dat de tentamenstof uit najaar 2012.
De tentamenstof in najaar 2015 wijkt hier licht vanaf.
Tentamenstof
De tentamenstof is
de stof die tijdens de colleges wordt behandeld.
Dit komt neer op de volgende hoofdstukken/paragrafen uit het boek:
Hieronder staat het
gehanteerde
schema voor de hoorcolleges, de werkcolleges en
de practicumbijeenkomsten.
Voor wie door omstandigheden een hoorcollege of werkcollege heeft moeten
missen,
zijn ook de bij de colleges gebruikte slides / behandelde
opgaven nog te bekijken.
N.B.:
De slides zijn niet bedoeld ter vervanging van het boek.
Het kan dus lastig zijn om de stof puur met behulp van de slides,
zonder het boek, te begrijpen.
Woensdag 2 september 2015, ochtend:
hoorcollege 1: Overview.
Slides college 1
Woensdag 9 september 2015, ochtend:
hoorcollege 2: Symbol Table / Lexical Analysis.
Slides college 2
Woensdag 16 september 2015, ochtend:
hoorcollege 3: Syntax Analysis 1.
Slides college 3
Vragen en opmerkingen kunt u sturen naar:
Rudy van Vliet;
rvvliet(at)liacs(dot)nl
Laatste wijziging: 6 augustus 2016
- http://www.liacs.leidenuniv.nl/~vlietrvan1/coco/