Kursplan

Funktionell programmering

Functional Programming

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

Om kursplanen

Diarienummer
GU 2025/4316
Ikraftträdandedatum
2026-03-15
Beslutsdatum
2025-11-27
Gäller från termin
Höstterminen 2026
Beslutsfattare
Institutionen för data- och informationsteknik

Betygsskala

Fyrgradig skala, sifferbetyg

Kursens moduler

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

Inplacering

Kursen är obligatorisk i Datavetenskap, kandidatprogram (N1COS).

Kursen kan ingå i följande program:

  1. Computer Science, Master's Programme (N2COS)
  2. Software Engineering and Management masterprogram (N2SOF)
  3. Matematikprogrammet (N1MAT)
  4. Matematiska vetenskaper, masterprogram (N2MAT)

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

Huvudområde med fördjupning

ITDVA Datavetenskap - G1F Grundnivå, har mindre än 60 hp kurs/er på grundnivå som förkunskapskrav

Behörighetskrav

  • En avklarad kurs i programmering om minst 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

Denna kurs introducerar studenter med tidigare programmerings­erfarenhet till ett funktionellt programmeringsspråk och dess kärnkoncept. Det primära målet är att ge studenterna möjlighet att tillämpa det funktionella angreppssättet för att skriva realistiska små till medelstora program, samtidigt som kursen hjälper dem att överföra sina allmänna programmeringskunskaper till det funktionella programmeringsparadigmet.

Konkreta ämnen som tas upp i kursen inkluderar:

  • definiera (rena) funktioner,
    • mönstermatchning
    • guards
  • rekursion,
  • datatyper,
    • Bas datatyper och sammansatta datatyper (t.ex. listor och tupler)
    • användardefinierade algebraiska datatyper
    • rekursiva datatyper
    • modellering med datatyper
  • funktioner som förstklassiga värden,
    • lambda-uttryck,
    • partiell tillämpning,
    • currying,
    • komposition,
  • högre ordningens funktioner,
  • listkomprehensioner,
  • introduktion till ekvationsresonemang,
  • parametrisk polymorfism och typklasser,
  • moduler och abstrakta datatyper,
  • lat evaluering och oändliga värden,
  • introduktion till monader och IO,
  • den funktionella programmets effektivitet,
  • egenskapsbaserad testning.

Mål

Efter godkänd kurs ska studenten kunna:

Kunskap och förståelse

  • beskriv de grundläggande begreppen i moderna funktionella programmeringsspråk, såsom rekursion, mönstermatchning, polymorfism, förstklassiga funktioner, högre ordningens funktioner, renhet och oföränderlighet samt lat evaluering,
  • beskriv en grundläggande uppsättning av funktionella programmeringstekniker, såsom algebraiska datatyper, currying, oändliga datastrukturer, monader och datatypernas roll i modellering och problemlösning.

Färdigheter och förmåga

  • skriva små till medelstora funktionella program för en mängd olika tillämpningar,
  • använda ett brett spektrum av programmeringstekniker som är karakteristiska för funktionell programmering, inklusive rekursion, modellering med rekursiva datatyper, abstraktion och återanvändning genom högre ordningens funktioner, samt utnyttja polymorfism och monader,
  • implementera effektiva tester för funktionella program med hjälp av lämpliga verktyg.

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

  • visa förmåga, i olika sammanhang, att bedöma vilka programmeringstekniker som är mest lämpliga för att lösa det aktuella problemet,
  • identifiera styrkorna och de möjliga svagheterna hos det funktionella programmeringsparadigmet i jämförelse med andra programmeringsparadigm.

Hållbarhetsmärkning

Ingen hållbarhetsmärkning.

Former för undervisning

Föreläsningar, datorlaborationer och övningar.

Undervisningsspråk: Engelska

Examinationsformer

Kursen examineras genom en individuell skriftlig salstentamen, samt ett antal obligatoriska laborationer som genomförs i grupp.


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, 4,5 hp
    Betygsskala: Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3) och Underkänd (U).
  2. Laboration, 3 hp
    Betygsskala: Godkänd (G) 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. Betyget för hela kursen avgörs av den skriftliga tentamen.

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.

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

Kursen kan inte ingå i en examen där kursen DIT441 Introduktion till funktionell programmering ingår, inte heller i en examen som baseras på en annan examen där DIT441 ingår.