Funktionell programmering, fortsättningskurs
Functional Programming: continuation course
Om kursplanen
Betygsskala
Kursens moduler
Inplacering
Kursen kan ingå i följande program:
- Datavetenskap, kandidatprogram (N1COS)
Kursen ges även som fristående kurs vid Göteborgs Universitet.
Huvudområde med fördjupning
Behörighetskrav
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
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
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. 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.
Mål
Efter godkänd 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ärdigheter 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.
Hållbarhetsmärkning
Former för undervisning
Kursens upplägg inkluderar föreläsningar, seminarier, fallstudier och grupparbete.
Undervisningsspråk: Engelska
Examinationsformer
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.
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
- Skriftlig salstentamen, 4 hp
Betygsskala: Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3) och Underkänd (U) - Inlämningsuppgifter, 3,5hp
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 salstentamen.
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.