Kursplan för Funktionell programmering, fortsättningskurs

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

Kursöversikt

  • Engelskt namnFunctional Programming: continuation course
  • KurskodDAT600
  • Omfattning7,5 Högskolepoäng
  • ÄgareTKDAT
  • UtbildningsnivåGrundnivå
  • HuvudområdeDatateknik, Informationsteknik, Matematik
  • 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 49136
  • Sökbar för utbytesstudenterJa

Poängfördelning

0126 Inlämningsuppgift 3,5 hp
Betygsskala: UG
3,5 hp
0226 Tentamen 4 hp
Betygsskala: TH
4 hp

I program

Examinator

Information saknas

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

För behörighet till kursen krävs att studenten ska ha avklarat:
  • 7,5 hp i funktionell programmering
  • 7,5 hp i diskret matematik
  • 7,5 hp till inom matematik
  • 7,5 hp till inom datastrukturer

Syfte

Kursen bygger vidare på grundläggande kunskaper i funktionell programmering och introducerar mer avancerade tekniker med fokus på kompositionell programdesign och de algebraiska datatyper och strukturer som möjliggör detta.

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

Kunskap och förståelse:

  • Förklara och tillämpa grundläggande abstraktioner i funktionell programmering, inklusive lat/strikt evaluering, funktorer och monader, samt beskriva hur dessa abstraktioner kan användas för att hantera tillstånd (state), avbrott (exceptions) och in- och utdata på ett rent funktionellt sätt.
  • Förklara hur algebraiska egenskaper såsom associativitet och kommutativitet möjliggör “söndra och härska”-strategier och parallell beräkning i rena funktionella program, samt diskutera hur renhet och referentiell transparens stödjer konstruktionen av kompositionella inbäddade domänspecifika språk (EDSL).

Färdighet och förmåga:

  • Designa, strukturera och implementera funktionella program och mindre EDSL:er med lämpliga typklasser, algebraiska operatorer och datastrukturer för effektiv och, där är lämpligt, parallell beräkning.
  • Tillämpa funktionella tekniker såsom rekursionsscheman, memoisering och algebraisk komposition för att implementera och resonera om icke-triviala algoritmer.
  • Använda relevanta verktyg och bibliotek för att utveckla, testa och dokumentera underhållbar programvara, inklusive prestandaanalys och identifiering av vanliga ineffektiviteter.
  • Strukturera och lösa verkliga programmeringsproblem i en funktionell stil genom att integrera abstraktion, testning och resonemang för korrekthet och effektivitet.

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

  • Kritiskt bedöma lämpligheten hos abstraktioner och algebraiska strukturer för specifika programmeringsproblem genom reflektion över avvägningar mellan abstraktion, prestanda och resursanvändning.
  • Utvärdera designbeslut och programkorrekthet med hjälp av egenskapsbaserad testning, algebraiska egenskaper och ekvationsbaserat resonemang.
  • Visa ansvar i programdesign och samarbete genom att säkerställa modularitet, tydlig dokumentation och underhållbarhet.

Innehåll

Studenterna studerar centrala abstraktioner som lat/strikt evaluering, funktorer, monader och liknande, och lär sig hur dessa kan användas för att uttrycka effekter som tillstånd (state), avbrott (exceptions) och in- och utdata på ett rent funktionellt sätt. Kursen behandlar även metoder för att strukturera större funktionella lösningar, inklusive konstruktion av inbäddade domänspecifika språk (EDSL), användning av Software Transactional Memory (STM) för säker samtidighet samt tekniker för parallell och effektiv beräkning baserade på algebraiska egenskaper såsom associativitet och kommutativitet.

Laborationer / programmeringsuppgifter utvecklar praktiska färdigheter i att utforma, implementera och resonera om funktionella program. Studenterna får erfarenhet av typklasser, rekursionsscheman och memoisering, samt relevanta verktyg för att bygga, testa och dokumentera projekt. Särskild vikt läggs vid kalkylerande bevis och egenskapsbaserad testning som vägar för att nå korrekthet och effektivitet. Studenterna lär sig att kritiskt bedöma avvägningar mellan abstraktion och prestanda samt att strukturera programvara på ett modulärt, underhållbart och verifierbart sätt.

Organisation

Kursens upplägg inkluderar föreläsningar, seminarier, fallstudier och grupparbete.

Undervisningsspråk: Engelska

Litteratur

Fastställs och publiceras i god tid före kursstart, i enlighet med gällande regelverk.

Examination inklusive obligatoriska moment

Kursen examineras i form av en individuellt genomförd skriftlig tentamen vid slutet av kursen och genom skriftliga inlämningar som genomförs i grupp.

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.