Kursplan

Compiler Construction

Kurs
DIT301
Avancerad nivå
7,5 högskolepoäng (hp)
Utbildningsområde
TE Tekniska området 100%

Om kursplanen

Diarienummer
GU 2025/3968
Ikraftträdandedatum
2026-09-15
Beslutsdatum
2025-11-27
Gäller från termin
Vårterminen 2027
Beslutsfattare
Institutionen för data- och informationsteknik

Betygsskala

Fyrgradig skala, sifferbetyg

Kursens moduler

Inlämningsuppgifter, 7,5 högskolepoäng

Inplacering

Kursen ingår i Computer Science Master's programme (N2COS) vid Göteborgs universitet och ges även som fristående kurs. Kursen erbjuds dessutom som valbar kurs inom Computer Science Bachelor's Programm (N1COS).

Kursen kan ingå i följande program: 1) Datavetenskapligt program (N1COS), 2)Computer Science, Master's Programme (N2COS), 3) Software Engineering and Management masterprogram (N2SOF), 4) Applied Data Science masterprogram (N2ADS) och 5) Game Design & Technology masterprogram (N2GDT)

Huvudområde med fördjupning

ITDVA Datavetenskap - A1F Avancerad nivå, har kurs/er på avancerad nivå som förkunskapskrav

Behörighetskrav

För tillträde till kursen krävs att studenten har minst 120 hp i datavetenskap eller motsvarande. Specifikt krävs följande kurs: DIT231 Programspråksteknik eller motsvarande.

Följande kunskapsnivå i Engelska krävs; Engelska 6/Engelska nivå 2 eller motsvarande från ett erkänt internationellt test, t.ex. TOELF, IELTS.

Innehåll

Syftet med kursen är att utveckla en förståelse för hela processen i en kompilator, med början i lexikalanalysen och som avslutas med maskinkodsgenerering. Laborationen i kursen består i att skriva en komplett kompilator för ett litet imperativt språk.

Kompilatorteori och -implementation, med betoning på kodgenerering och runtime-miljöer.

Mål

Kunskap och förståelse
• Vid slutförd kurs har studenter både teoretisk och praktisk insikt i hur kompletta kompilatorer ges specifikationer, designas, implementeras och testas.

Färdigheter och förmåga
• känna till grundläggande principer for runtime-miljöer, parameterskickande och minneshantering, och att implementera dessa i en kompilator;
• designa och implementera kompilatorscheman för att generera intermediärkod eller assembler från ett källprogram;
• designa och implementera utökningar för ett litet imperativs programmeringsspråk och känna till de viktigaste aspekterna av att kompilera objektorienterade A35programmeringsspråk;
• använda dataflödesanalys för att implementera registerallokering och kodoptimeringar

Värderingsförmåga och förhållningssätt
• Studenterna kommer att kunna bedöma underhållbarheten, skalbarheten och effektiviteten av olika sätt att designa, implementera och testa kompilatorer.

Hållbarhetsmärkning

Ingen hållbarhetsmärkning.

Former för undervisning

Undervisningen består av föreläsningar, ett programmeringsprojekt och individuell handledning i samband med projektet. Projektet är huvuddelen i kursen och består i att implementera en komplett kompilator för ett litet imperativt programmeringsspråk.
Föreläsningarna ger den kunskap som krävs för att genomföra projektet, men även en översikt över de teoretiska grunderna och möjliga utökningar till kompilatorn.

Undervisningsspråk: engelska

Examinationsformer

Bedömningsformer: programmeringsprojekt och muntlig redovisning. Den muntliga redovisningen är godkänd eller underkänd. Studenter som underkänns i den muntliga redovisningen underkänns på kursen. Studenter som klarar den muntliga redovisning får ett betyg som direkt bestäms av omfattningen av deras inlämningar för programmeringsprojektet. Programmeringsprojektet görs i grupp, men de muntliga redovisningarna är individuella.

Om student som underkänts två gånger på samma examinerande moment önskar byte av examinator inför nästa examinationstillfälle, ska sådan begäran inlämnas skriftligt till institutionen och bifallas om det inte finns särskilda skäl däremot (HF 6 kap § 22).
I det fall en kurs har upphört eller genomgått större förändringar ska student garanteras minst tre examinationstillfällen (inklusive ordinarie examinationstillfälle) under en tid av minst ett år, dock som längst två år efter det att kursen upphört/förändrats. Vad avser praktik och VFU gäller motsvarande, men med begränsning till endast ett ytterligare
examinationstillfälle.

Betyg

På kursen ges något av betygen Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3) och Underkänd (U).
Studenter som klarar den muntliga redovisning får ett betyg som direkt bestäms av omfattningen av deras inlämningar för programmeringsprojektet.

Kursvärdering

Kursen utvärderas genom möten mellan lärare och studentrepresentanter, både under kursens gång och efter avslutad kurs. Därutöver används en anonym enkät för att säkerställa att skriftliga synpunkter samlas in. Resultaten från utvärderingarna används för att utveckla och förbättra kursen genom att identifiera vilka delar som kan behöva läggas till, förbättras, förändras eller tas bort.

Övriga föreskrifter

Kursen är samläst med Chalmers och GU.

Kurslitteratur kommer att publiceras senast 8 veckor innan kursstart.

Kursen ersätter kursen DIT300, 7,5 hp. Den här kursen kan inte ingå i en examen som innehåller DIT300. Den kan inte heller ingå i en examen som bygger på en annan examen där DIT300 ingår.