Logga in

Registrera

TDA342 · Chalmers tekniska högskola

Avancerad funktionell programmering

Ny kurs

Kom igång gratis

Inga tentor än

Ladda upp dina tidigare tentor och få hjälp med att strukturera ditt studiematerial

Få dina tentauppgifter kategoriseradeBli guidad genom ditt studiematerialFå hjälp direkt med teori och tipsHåll koll på dina framsteg

Kurs info

KurssidaKursplan
HP
7.5
Språk
Engelska
Institution
Data- och informationsteknik

Lärandemål

  • designa inbäddade domänspecifika språk (EDSL)förklara och ge exempel på (abstrakt) syntax, semantik, etc.implementera EDSL i Haskell (som kombinatorbibliotek)
  • förklara och ge exempel på (abstrakt) syntax, semantik, etc.
  • implementera EDSL i Haskell (som kombinatorbibliotek)
  • läsa, förstå och utöka Haskellprogram som använder sig av avancerade typsystemegenskaper:typklasser(generaliserade) algebraiska datatyperfunktorer, monader och monadtransformerare
  • typklasser
  • (generaliserade) algebraiska datatyper
  • funktorer, monader och monadtransformerare
  • använda specifikationsbaserade utvecklingsteknikerformulera och testa egenskaper som programmet ska uppfyllaresonera om funktionella programs korrekthettransformera program baserat på sådana resonemang
  • formulera och testa egenskaper som programmet ska uppfylla
  • resonera om funktionella programs korrekthet
  • transformera program baserat på sådana resonemang
  • förklara och diskutera de ämnen som beskrivs ovan
Kursinnehåll
En stor fördel med funktionella programspråk är att de flesta språkkonstruktionerna kan namnges och därmed återanvändas som högre ordningens funktioner. Funktionella program kan därför ofta konstrueras genom att kombinera konstruktioner från ett funktionsbibliotek. Den här metoden gör det möjligt att snabbt konstruera program med en hög grad av korrekthet. Detta är den centrala idén i kursen. Vi kan lära oss en hel del genom att studera standardbibliotekens list-funktioner som map, fold osv. Dessa funktioner kan generaliseras så att de fungerar för andra datatyper. Realistiska funktionella program måste också hantera tillståndsförändringar, avbrott, "backtracking" och andra "icke-funktionella" beteenden. Vi kommer att jobba med hur dessa kan modelleras rent funktionellt. Det matematiska begreppet "monad" hjälper oss med detta. Med hjälp av dessa kunskaper kommer vi att konstruera domänspecifika programbibliotek ämnade att lösa problem inom ett ett visst tillämpningsområde. Den här sortens bibliotek kan sägas definiera ett domänspecifikt språk eftersom konstruktionerna som programmeraren använder huvudsakligen består av biblioteksfunktioner. Vi kommer att studera bibliotek för inläsning (parsning), utskrift (pretty printing), grafik, webbprogrammering och interaktion. Kursen kommer också att presentera en del aktuell forskning vilket kan göra att innehållet varierar en del mellan åren. Kursen använder sig huvudsakligen av programmeringsspråket Haskell. Organisation Det är två 2-timmars förelåsningar varje vecka. Studenterna förväntas lägga rätt mycket egen tid på programmering och självstudier. Mycket hjälp erbjuds också. Litteratur Se separat litteraturlista. Examination inklusive obligatoriska moment Det är 2-3 obligatoriska programmeringslaborationer som genomförs i par, och en skriftlig tentamen i slutet av kursen. 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 pedagogiskt stöd på grund av funktionsnedsättning.
Förutsättningar
  • Grundläggande behörighet för avancerad nivå
Litteratur
Se separat litteraturlista.
Liknande kurser vid andra universitet
Kungliga Tekniska högskolan

Kungliga Tekniska högskolan

Programmeringsparadigm

DD13619 tentor
Kungliga Tekniska högskolan

Kungliga Tekniska högskolan

Grundläggande programmering

DD13336 tentor
Luleå tekniska universitet

Luleå tekniska universitet

Programmerig och digitalisering

D0028E2 tentor
Redo att boosta dina studier?

Gör som 15 000+ studenter och ta kontroll över ditt tentaplugg.

Kom igång gratis

Produkt

  • Priser

  • Karriär

Företag

  • Om oss

  • Blogg

  • Användarvillkor

  • Integritet

  • Support

Universitet

  • KTH

  • Uppsala universitet

  • Linköpings universitet

  • Chalmers

  • Lunds universitet

  • Luleå tekniska universitet

  • Stockholms universitet

  • Gymnasiet

Socialt

  • Instagram

  • Facebook

  • YouTube

  • TikTok

  • Linkedin

© 2026 Crash Course Sverige AB