Kursplan för Funktionell programmering

Kursplan fastställd 2026-02-20 av programansvarig (eller motsvarande).

Kursöversikt

  • Engelskt namnFunctional programming
  • KurskodTDA452
  • Omfattning7,5 Högskolepoäng
  • ÄgareTKITE
  • UtbildningsnivåGrundnivå
  • HuvudområdeDatateknik, Informationsteknik
  • 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 49125
  • Max antal deltagare140 (minst 10% av platserna reserveras för utbytesstudenter)
  • Sökbar för utbytesstudenterJa

Poängfördelning

0111 Laboration 3 hp
Betygsskala: UG
3 hp
0211 Tentamen 4,5 hp
Betygsskala: TH
4,5 hp

I program

Examinator

Behörighet

Grundläggande behörighet för grundnivå
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från kravet

Särskild behörighet

Samma behörighet som det kursägande programmet
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från kraven

Kursspecifika förkunskaper

Kursen förutsätter tidigare programmeringserfarenhet och grundläggande kunskaper om datastrukturer och algoritmer. Kursen får inte inkluderas i en examen som innehåller (eller som är baserad på en annan examen som innehåller) antingen kursen TDA555 (Introduktion till funktionell programmering) eller kursen DAT710 (Funktionell programmering).

Syfte

Den här kursen introducerar ett funktionellt programmeringsspråk och relaterade koncept för studenter som redan har en del kunskap inom programmering. Det främsta målet är att göra det möjligt för studenterna att skriva realistiska (små till mellanstora) program, och att samtidigt introducera några grundläggande koncept inom datavetenskap.

Lärandemål (efter fullgjord 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ågor:
  • 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.

Innehåll

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.

Organisation

Föreläsningar, datorlaborationer och övningar.

Litteratur

Det finns ingen obligatorisk litteratur för denna kurs. En lista över valbara externa litteraturkällor hålls uppdaterad på kursens webbsidor, tillsammans med videomaterial som täcker kursens innehåll.

Examination inklusive obligatoriska moment

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

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.

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.