Compilerconstructie (B-KUL-H04G9B)
Doelstellingen
Inzicht verwerven in de opeenvolgende fasen van een klassiek compilatieproces, de algoritmen die er gebruikt worden en de verbanden tussen de verschillende fasen. Verstaan van de concepten van een parser-generator. Kunnen toepassen van de verworven inzichten in nieuwe compilatie-gerelateerde situaties, bijvoorbeeld andere programmeertalen of andere architecturen. Zelfstandig relevant materiaal over het compilatieproces kunnen verzamelen, dat kunnen samenvatten en presenteren. In staat zijn recent onderzoek i.v.m. compilatietechnieken te verstaan, op relevantie/ geldigheid te beoordelen en eventueel ertoe bij te dragen.
Begintermen
Enige kennis van laag-niveauimplementatie van programmeertalen. Er zal ook gesteund worden op algoritmisch inzicht dat vroeger werd opgedaan (i.h.b. redeneren over algoritmen), grafentheorie, kennis over stack-gebaseerde uitvoering van imperatieve talen, kennis van instructiesets van specifieke architecturen.
Beginvoorwaarden:
· Methodiek van de Informatica of Beginselen van programmeren,
· Computerarchitectuur en systeemsoftware of Structuur en organisatie van computersystemen.
Inhoud
Alle fasen van een klassieke compiler worden in detail behandeld: lexicale analyse en syntaxanalyse, bouwen van abstracte syntaxboom, semantische analyse, generatie van intermediaire code, opdelen in basisblokken en sporen, instuctieselectie, liveness analyse, registerallocatie en code-emissie. Verder wordt er een selectie van meer geavanceerde onderwerpen behandeld: geheugenbeheer, uitzonderingen, polymorfisme, uitgestelde uitvoering, profiling, debugging, adaptive compilatie, lusoptimisaties, net-op-tijd-compilatie ... Wat juist aan bod komt wordt bepaald door de interesse van de studenten. Hete onderzoekstopics krijgen daarbij voorrang.
Aard van het studiemateriaal
Handboek
Plaats in het onderwijsaanbod
- Master in de informatica (uitdovend, enkel 2e fase) (Specialisatie software engineering) 120 sp.

- Master in de informatica (uitdovend, enkel 2e fase) (Specialisatie veilige software) 120 sp.

-
Master in de ingenieurswetenschappen: computerwetenschappen
120 sp.
Onderwijsleeractiviteiten
4.7 sp. Compilerconstructie: hoorcollege (B-KUL-H04G9a)
Inhoud
Alle fasen van een klassieke compiler worden in detail behandeld: lexicale analyse en syntaxanalyse, bouwen van abstracte syntaxboom, semantische analyse, generatie van intermediaire code, opdelen in basisblokken en sporen, instuctieselectie, liveness analyse, registerallocatie en code-emissie.
Verder kunnen de volgende onderwerpen behandeld worden: geheugenbeheer, uitzonderingen, polymorfisme, uitgestelde
uitvoering, profiling, debugging, adaptive compilatie, lusoptimisaties, al naar gelang van de interesse van de studenten en / of het
dwingend karakter van deze onderwerpen op een bepaald ogenblik.
Doelstellingen
Inzicht verwerven in de opeenvolgende fasen van een klassiek compilatieproces, de algoritmen die er gebruikt worden en de verbanden tussen de verschillende fasen. Verstaan van de concepten van een parser-generator. Kunnen toepassen van de verworven inzichten in nieuwe compilatie-gerelateerde situaties, bijvoorbeeld andere programmeertalen of andere architecturen. Zelfstandig relevant materiaal over het compilatieproces kunnen verzamelen, dat kunnen samenvatten en presenteren. In staat zijn recent onderzoek i.v.m. compilatietechnieken te verstaan, op relevantie/ geldigheid te beoordelen en eventueel ertoe bij te dragen.
Studiemateriaal
In principe kan elk jaar van boek gewisseld worden. Op dit ogenblik zijn goede kandidaten:
· Modern Compiler Implementation in C Andrew W. Appel (Cambridge University Press, ISBN 0-521-58653-4)
· Advanced Compiler Design Implementation Steven S. Muchnick (Morgan Kaufmann Publ. San Francisco, ISBN 1-55860-320-4)
Aanvullingen over nieuwere onderwerpen zijn veelal langs het net beschikbaar.
0.3 sp. Compilerconstructie: practicum (B-KUL-H04H2a)
Inhoud
Elke student geeft een les waarin hij/ zij een onderwerp uit het handboek - of een bijkomend onderwerp - presenteert voor de medestudenten. Dit gebeurt meestal in groepjes van twee studenten voor een les van bijna 2 uur. Zulk een les wordt onmiddellijk gevolgd door een nabespreking naar vorm en inhoud door de medestudenten en de docent. De studenten stellen ook de examenvragen op over de leerstof die in hun les is behandeld. De examenvragen worden op het einde van de cursus globaal besproken.
Evaluatieactiviteiten
Evaluatie : Compilerconstructie (B-KUL-H24G9b)
Toelichting
Een deel van de punten staat op het geven van een les. Het geven van de les kan niet overgedaan worden in een tweede zittijd.
