Kursplan för Avancerad teori för programmeringsspråk

Kursplan fastställd 2025-05-23 av programansvarig (eller motsvarande).

Kursöversikt

  • Engelskt namnAdvanced programming language theory
  • KurskodDAT700
  • Omfattning7,5 Högskolepoäng
  • ÄgareMPALG
  • UtbildningsnivåAvancerad nivå
  • HuvudområdeDatateknik
  • InstitutionDATA- OCH INFORMATIONSTEKNIK
  • BetygsskalaTH - Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3), Underkänd

Kurstillfälle 1

  • Undervisningsspråk Engelska
  • Anmälningskod 02143
  • Sökbar för utbytesstudenterNej

Poängfördelning

0125 Projekt, del A 5 hp
Betygsskala: TH
5 hp
0225 Övning, del A 2,5 hp
Betygsskala: UG
2,5 hp

I program

Examinator

Behörighet

Grundläggande behörighet för avancerad nivå
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

Särskild behörighet

Engelska 6
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

Kursspecifika förkunskaper

- 7.5 hp av funktionell programmering med Haskell (TDA555 eller ekvivalent)
- 7.5 ytterligare hp med en annan programmeringsspråk
- 7.5 hp i programmeringsspråk teknologi (syntax, kompilatorer och/eller interpretator) (DAT151, DIT231 eller ekvivalent)
- 7.5 hp i diskret matematik och logik (TMV211 och DAT060 eller ekvivalent).

Syfte

För att verkligen förstå programmering behöver man förstå programmeringsspråks konstruktioner på en djup nivå. Målet med denna kurs är att presentera ett brett spektrum av programmeringsspråksprinciper med en rigorös metodologi. Det innebär att lära sig hur man designar ett anpassat programmeringsspråk, hur olika funktioner samverkar och hur de passar inom en viss paradigm. Kursen täcker både statiska (syntax, typsystem) och dynamiska (transition system, operationell semantik) aspekter av programmeringsspråk. De viktigaste programmeringsspråksfunktionerna (funktioner, datatyper, subtyping, etc.) kommer att behandlas. Tonvikt kommer att läggas på resonemang och abstrakta modeller, vilket utmanar studenterna att kritiskt analysera språkdesignval.

Lärandemål (efter fullgjord kurs ska studenten kunna)

- Förstå strukturen hos programmeringsspråk
- Känna till de viktigaste konstruktionerna i programmeringsspråk och hur de samverkar
- För varje konstruktion kunna skriva deras statiska (syntax, typer) och dynamiska (evaluering) beskrivningar
- Konceptuellt utveckla nya språkfunktioner
- Designa programmeringsspråk med en blandning av avancerade funktioner
- Designa ett anpassat programmeringsspråk för en specifik domän
- Kritiskt utvärdera litteratur inom området för programmeringsspråksdesign och teori

Innehåll

- Typbedömningar (Typing Judgements)
- Operationell semantik och typbevarande (type preservation)
- Funktioner och enkelt typad lambdakalkyl (Simply Typed Lambda Calculus)
- Produkt-, summa- och rekursiva typer
- Parametrisk polymorfism
- Subtyping och klasser
- Undantag (Exceptions) och continuationer
- Tillstånd (State)
- Lathet (laziness)
- Parallelism och concurrency
- Ekvationell resonemang
- Normalformer

Organisation

Föreläsningar och grupparbete

Litteratur

Kurslitteratur meddelas senast åtta veckor innan kursen börjar

Examination inklusive obligatoriska moment

Examination sker genom aktivt deltagande i obligatoriska seminarier samt genomförande och presentation av ett projekt. På grund av resursbegränsningar ges endast en examinationsmöjlighet per år.

Kursens examinator får examinera enstaka studenter på annat sätt än vad som anges ovan om särskilda skäl föreligger, till exempel om en student har ett beslut från Chalmers om riktat pedagogiskt stöd på grund av funktionsnedsättning.