Kursplan

Avancerad funktionell programmering

Advanced Functional Programming

Kurs
DIT262
Avancerad nivå
7,5 högskolepoäng (hp)
Utbildningsområde
NA Naturvetenskapliga området 100%

Om kursplanen

Diarienummer
GU 2025/4484
Ikraftträdandedatum
2026-10-15
Beslutsdatum
2026-01-30
Gäller från termin
Vårterminen 2027
Beslutsfattare
Institutionen för data- och informationsteknik

Betygsskala

Fyrgradig skala, sifferbetyg

Kursens moduler

Skriftlig salstentamen, 3 högskolepoäng
Laboration, 4,5 högskolepoäng

Inplacering

Kursen kan ingå i följande program:

  1. Datavetenskap, kandidatprogram (N1COS)
  2. Computer Science, masterprogram (N2COS)
  3. Applied Data Science, masterprogram (N2ADS)

Kursen ges även som fristående kurs vid Göteborgs Universitet.

Huvudområde med fördjupning

ITDVA Datavetenskap - A1N Avancerad nivå, har endast kurs/er på grundnivå 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 kurser, eller motsvarande:

  • Funktionell programmering, 7,5 hp.
  • Diskret matematik för datavetare, 7,5 hp, eller Matematisk logik för datavetenskap, 7,5 hp, eller Ändliga automater och formella språk, 7,5 hp, eller motsvarande.
  • Dessutom krävs en av följande kurser (eller motsvarande): Programspråk, 7,5 hp, eller Typer för bevis och program, 7,5 hp, eller Funktionell programmering, fortsättningskurs, 7,5 hp. 

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

Innehåll

Funktionella programspråk fokuserar på uttryck snarare än satser och ligger därför närmare det matematiska språket än språk från andra paradigmer. Denna närhet till matematik har gjort funktionella språk till en fruktbar grund för avancerade typsystem och för att resonera om programkorrrekthet.

Kursen utforskar hur avancerade typsystem kan användas för att strukturera program på ett sätt som underlättar resonemang om deras korrekthet. Vi studerar hur program kan struktureras algebraiskt, det vill säga genom typer med tillhörande operationer som uppfyller lämpliga lagar. Vi lär oss modellera och komponera effekter, till exempel via monader och monadtransformers. Vi utforskar olika tekniker för att säkerställa korrekthet i program, inklusive systematisk testning och formella bevis.

Slutligen behandlar vi hur man skriver funktionella program på professionell nivå, med inslag som automatiserade testsystem, kontinuerlig integration, paketering och samspel med mjukvaruekosystem.

Språk som används i kursen är Haskell och Agda, eller andra lämpliga avancerade funktionella programspråk.

Mål

Efter godkänd kurs ska studenten kunna:

Kunskap och förståelse

  • förklara avancerade typsystemegenskaper, såsom typklasser, indexerade datatyper och beroende typer, funktorer, monader och monadtransformerare, och relatera dem till varandra

Färdigheter och förmåga

  • strukturera funktionella program med hjälp av typklasser, monader och monadtransformers samt inbäddade domänspecifika språk (EDSL) eller API:er
  • använda specifikationsbaserade utvecklingstekniker för att formulera och testa egenskaper kring program
  • redogöra för korrektheten hos funktionella program och omvandla dem på grundval av sådana resonemang
  • analysera och utöka funktionella program som använder avancerade typsystemegenskaper

Värderingsförmåga och förhållningssätt

  • Diskutera ovanstående ämnen (dvs. typsystemsegenskaper, struktureringsmetoder, specifikationsbaserade tekniker och korrekthet), samt hur de relaterar till varandra.

Hållbarhetsmärkning

Ingen hållbarhetsmärkning.

Former för undervisning

Föreläsningar, laborationer, handledning och självstudier. Studenterna förväntas lägga mycket egen tid på programmering och självstudier.

Undervisningsspråk: Engelska

Examinationsformer

Kursen examineras av 2-3 programmeringslaborationer som normalt utförs i par under kursen, och en individuell skriftlig tentamen i slutet av kursen.


Om en student som har underkänts två gånger på samma examinerande moment önskar byta examinator inför nästa examinationstillfälle ska en sådan begäran bifallas om det inte finns särskilda skäl däremot (6 kap. 22 § HF).

Om en student har fått besked om pedagogiskt stöd från Göteborgs universitet med rekommendation om anpassad examination och/eller anpassad examinationsform kan examinator, i det fall det är förenligt med kursens lärandemål och förutsatt att inte orimliga resurser krävs, besluta att bevilja studenten anpassad examination och/eller anpassad examinationsform.

Om en kurs har avvecklats eller genomgått en större förändring ska studenten erbjudas minst två examinationstillfällen, utöver ordinarie examinationstillfälle. Dessa tillfällen fördelas under en tid av minst ett år, dock som längst två år efter det att kursen avvecklats/förändrats. Vad gäller praktik och verksamhetsförlagd utbildning (VFU) gäller motsvarande, men med begränsning till endast ett ytterligare examinationstillfälle.

Om en student har fått besked om att denne uppfyller kraven för att vara student vid Riksidrottsuniversitetet (RIU-student) har examinator rätt att besluta om anpassning vid examination, om detta görs i enlighet med Lokala regler gällande RIU-studenter vid Göteborgs universitet.

Betyg

Delkurser

  1. Skriftlig salstentamen, 3 hp
    Betygsskala: Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3) och Underkänd (U).
  2. Laboration, 4,5 hp
    Betygsskala: Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3) och Underkänd (U).

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).

För att bli godkänd på kursen krävs att båda modulerna är godkända.

Slutbetyget för kursen baseras på 60 % från laborationernas resultat och 40 % från den skriftliga examinationen.

Kursvärdering

Kursen utvärderas genom möten, både under och efter kursen, mellan lärare och studentrepresentanter. Ett anonymt skriftligt frågeformulär skickas även ut till studenterna efter kursens slut. Resultaten av utvärderingarna används för att förbättra kursinnehållet och som indikation till vilka delar som skulle kunna läggas till, tas bort, förbättras eller ändras.

Övriga föreskrifter

Kursen är samläst med Chalmers.

Det är rekommenderat, men inte ett krav, att läsa följande kurser i förväg: DIT602 Algoritmer, samt någon av DIT201 Logik i datavetenskap eller DIT321 Finita automater och formella språk.

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