6 ECTS credits
178 u studietijd

Aanbieding 2 met studiegidsnummer 4005284FNR voor alle studenten in het 2e semester met een gespecialiseerd master niveau.

Semester
2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Onderwijstaal
Nederlands
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Steven Keuchel (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
61 contacturen Zelfstudie en externe werkvormen
Inhoud

Basisprincipes en -technieken die worden gebruikt in moderne compilerconstructie.
Deze cursus volgt de nanopass aanpak waarbij een compiler wordt opgebouwd als een verzameling van vele fijnmazige tussenstappen [Sankar2005].

Meer specifiek wordt een selectie behandeld van de volgende compilerstappen:
* Syntax en semantiek van assembly talen
* Runtime systems van programmeertaal implementaties
* Instructieselectie
* Registerallocatie (liveness analyse, conflictdetectie, registerallocatie-algoritme op basis van grafenkleuring met stack spilling)
* Het compileren van gestructureerde control flow naar assembly taal constructies (jumps en basic blocks)
* Abstraheren van control flow (monadisch of continuation-passing style, tail calls)
* Functieoproep en return (non-tail calls, calling conventies, call stack)
* Ondersteunen van gegevensstructuren in het geheugen (heap, memory safety)
* Compileren van dynamische typering (tagging, gestructureerde data)
* First-class computations (closure conversion, lexicale scope)
* Ondiepe taalfeatures (impliciete casts, syntactic sugar)

[Sankar2005] Dipanwita Sankar, Oscar Waddell, and R. Kent Dybvig. 2005. Educational Pearl: A Nanopass framework for compiler education. J. Funct. Program. 15, 5 (September 2005), 653–667. DOI:10.1017/S0956796805005605

Studiemateriaal
Digitaal cursusmateriaal (Vereist) : Digitaal cursusmateriaal, slides en voorbeeldcode zullen ter beschikking worden gesteld van de studenten, Bijkomend materiaal, mogelijk als deel van de projectopgave, Canvas
Bijkomende info

Aanbevolen achtergrond:

Om deze cursus te volgen, moeten studenten vertrouwd zijn met functioneel programmeren in Scheme of Racket, d.w.z. eersteklas functies, recursie over lijsten en bomen, etc.

De cursussen "Higher-order programming" zijn voldoende.

Leerresultaten

Algemene competenties

De student zal

  • een actief begrip hebben van de technieken en algoritmen die relevant zijn voor compilerconstructie
  • een compiler kunnen construeren voor een imperatieve programmeertaal
  • het algemeen patroon begrijpen waarbij een moeilijk probleem geleidelijk wordt getransformeerd naar goed-gedefiniëerde en apart betekenisvolle tussenproblemen
  • nieuwe ontwikkelingen in compilerconstructie kunnen evalueren en hun nut voor specifieke doelen kunnen inschatten
  • helder kunnen communiceren over bovenstaande onderwerpen

Beoordelingsinformatie

De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Mondeling bepaalt 50% van het eindcijfer

ZELF Praktijkopdracht bepaalt 50% van het eindcijfer

Binnen de categorie Examen Mondeling dient men volgende opdrachten af te werken:

  • mondeling examen met schr voor met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: mondeling examen met schriftelijke voorbereiding

Binnen de categorie ZELF Praktijkopdracht dient men volgende opdrachten af te werken:

  • project met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: PROJECT (50%): een reeks van drie of meer projecten waarvoor de studenten een aantal compilerstappen moeten implementeren.
    Voor elk van de projecten, kan een mondelinge verdediging vereist zijn.
    Studenten moeten het project ofwel alleen maken ofwel in groepen van twee of drie, volgens de beslissing van het didactisch team.

Aanvullende info mbt evaluatie

PROJECT (50%) + EXAMEN (50%)

Studenten kunnen niet slagen voor het vak als ze niet deelnemen aan zowel het project als het examen.

Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Master in de ingenieurswetenschappen: fotonica: Standaard traject
Master in de ingenieurswetenschappen: toegepaste computerwetenschappen: Standaard traject
Master of Applied Sciences and Engineering: Applied Computer Science: Standaard traject (enkel aangeboden in het Engels)
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Artificiële Intelligentie
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Multimedia
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Software Languages and Software Engineering
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Data Management en Analytics
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (enkel aangeboden in het Engels)