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
Modul | LP1 | LP2 | LP3 | LP4 | Sommar | Ej LP | Tentamensdatum |
|---|---|---|---|---|---|---|---|
| 0126 Inlämningsuppgift 3,5 hp Betygsskala: UG | 3,5 hp | ||||||
| 0226 Tentamen 4 hp Betygsskala: TH | 4 hp |
I program
- TKDAT - Datateknik, civilingenjör, Årskurs 2 (valbar)
- TKDAT - Datateknik, civilingenjör, Årskurs 3 (obligatoriskt valbar)
Examinator
Information saknasBehö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 programmetSökande med en programregistrering på ett program där kursen ingår i programplanen undantas från kraven
Kursspecifika förkunskaper
- 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
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.