Kursplan för Avancerad funktionell programmering

Advanced Functional Programming

  • 5 högskolepoäng
  • Kurskod: 1DL450
  • Utbildningsnivå: Avancerad nivå
  • Huvudområde(n) och successiv fördjupning: Datavetenskap A1F

    Förklaring av koder

    Koden visar kursens utbildningsnivå och fördjupning i förhållande till andra kurser inom huvudområdet och examensfordringarna för generella examina:

    Grundnivå

    • G1N: har endast gymnasiala förkunskapskrav
    • G1F: har mindre än 60 hp kurs/er på grundnivå som förkunskapskrav
    • G1E: innehåller särskilt utformat examensarbete för högskoleexamen
    • G2F: har minst 60 hp kurs/er på grundnivå som förkunskapskrav
    • G2E: har minst 60 hp kurs/er på grundnivå som förkunskapskrav, innehåller examensarbete för kandidatexamen
    • GXX: kursens fördjupning kan inte klassificeras

    Avancerad nivå

    • A1N: har endast kurs/er på grundnivå som förkunskapskrav
    • A1F: har kurs/er på avancerad nivå som förkunskapskrav
    • A1E: innehåller examensarbete för magisterexamen
    • A2E: innehåller examensarbete för masterexamen
    • AXX: kursens fördjupning kan inte klassificeras

  • Betygsskala: Underkänd (U), godkänd (3), icke utan beröm godkänd (4), med beröm godkänd (5)
  • Inrättad: 2010-03-18
  • Inrättad av: Teknisk-naturvetenskapliga fakultetsnämnden
  • Reviderad: 2021-02-02
  • Reviderad av: Teknisk-naturvetenskapliga fakultetsnämnden
  • Gäller från: HT 2021
  • Behörighet:

    120 hp varav 40 hp datavetenskap och 20 hp matematik. Programmeringsteknik II och Funktionell Programmering I, alternativt Programkonstruktion, eller motsvarande. Engelska 6. (Med en svensk kandidatexamen uppfylls kravet på engelska.)

  • Ansvarig institution: Institutionen för informationsteknologi

Mål

Kursen tar upp olika funktionella programspråk samt begrepp och tekniker för funktionell programmering. Efter godkänd kurs ska studenten kunna:

  • förklara och använda olika evalueringsstrategier såsom strikt och icke-strikt, lat, sekventiell och parallell evaluering,
  • förklara och använda lat evaluering för att förenkla programstrukturer och för att definiera oändliga datastrukturer,
  • förklara och använda makrobegreppet, speciellt hur det kan användas för att definiera nya programkonstruktioner,
  • förklara och använda actor-modellen i funktionell programmering,
  • förklara och använda begreppen bindning, currying, fortsättning (continuation), metaprogrammering, monad, svansrekursion, typer, parametrisk och ad-hoc polymorfi,
  • konstruera program i olika funktionella programspråk med användning av ovanstående begrepp och tekniker,
  • analysera och värdera skillnader och likheter mellan funktionella programspråk.

Innehåll

Programmering i ett urval funktionella programspråk (t.ex. Haskell, Erlang och Lisp). Lat evaluering, parallellism, concurrency, metaprogrammering. Begrepp som bindning och polymorfi. Programmeringstekniker som fortsättningar och monader. Jämförelser mellan språken.

Undervisning

Föreläsningar, laborationer, seminarier och programmeringsuppgifter.

Examination

Muntliga presentationer, skriftliga uppgifter och programmeringsuppgifter.

Om särskilda skäl finns får examinator göra undantag från det angivna examinationssättet och medge att en enskild student examineras på annat sätt. Särskilda skäl kan t.ex. vara besked om särskilt pedagogiskt stöd från universitetets samordnare för studenter med funktionsnedsättning.

Litteratur

Uppgift om kurslitteratur saknas. Ta kontakt med ansvarig institution för mer information.