Kursplan för Parallell funktionell programmering

Kursplan fastställd 2021-02-26 av programansvarig (eller motsvarande).

Kursöversikt

  • Engelskt namnParallel functional programming
  • KurskodDAT280
  • Omfattning7,5 Högskolepoäng
  • ÄgareMPALG
  • UtbildningsnivåAvancerad nivå
  • HuvudområdeDatateknik, Informationsteknik
  • 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 02128
  • Blockschema
  • Sökbar för utbytesstudenterJa

Poängfördelning

0112 Tentamen 6 hp
Betygsskala: TH
6 hp
  • 02 Jun 2023 fm J
  • 17 Aug 2023 em J
0212 Laboration 1,5 hp
Betygsskala: UG
1,5 hp

I program

Examinator

Gå till kurshemsidan (Öppnas i ny flik)

Behörighet

Grundläggande behörighet för avancerad nivå
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

Särskild behörighet

Engelska 6
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

Kursspecifika förkunskaper

Studenter skall ha fullföljt två års studier inom datavetenskap, datateknik eller jämförbar utbildning. Kursdeltagare skall ha genomgått en introduktionskurs i funktionell programmering, företrädesvis användande Haskell eller Erlang. (Kursexempel på Chalmers är TDA452 och TDA555.)

Syfte

Syftet med kursen är att introducera principer och praktiska tekniker för parallell programmering i ett funktionellt programmeringsspråk. Med parallell programmering menas användning av flera hårdvaruenheter (kärnor eller processorer) för att öka beräkningskapaciteten. Kursen belyser metoder för parallell funktionell programmering i både Haskell och Erlang. Akutell forskning inom ämnet presenteras, och kursen använder vetenskapliga artiklar som kursmaterial.

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

Kunskap och förståelse
1. Förstå betydelsen av skillnad mellan samtidighet (concurrency) och parallellism
2. Kunna beskriva metoder för parallellism inom funktionella programspråk i den vetenskapliga litteraturen.

Färdigheter
1. Skriva, modifiera och testa parallella funktionella program, avsedda för olika datorsystemarkitekturer inklusive multiprocessorer med delat minne, 
nätverk av servrar, och grafikprocessorer (GPU).
2. Tolka exekveringsprofiler av parallella program och åtgärda flaskhalsar.

Värderingsförmåga och förhållningssätt
1. Identifiera under vilka omständigheter ett funktionellt språk är lämpligt för att läsa ett parallellt programmeringsproblem.
2. Välja den form av parallell funktionell programmering som passar för ett givet problem, och förklara valet.

Innehåll

Kursen behandlar principer och praktiska tekniker för parallell programmering i Haskell och Erlang.

Fördelar med parallell funktionell programmering: oföränderlighet (immutability), avsaknad av synkroniseringsfel, (determinism).

Att profilera parallella funktionella program: kornighet, flaskhalsar, lokalitet, databeroenden 

Parallella funktionella algoritmer: "söndra-och-härska".

Metoder för att uttrycka parallellism i Haskell: "Eval-monaden", "Par-monaden", parallella strategier, skelett och dataparallellism.

Funktionell GPU programmering.

Parallellisering och distribuering i Erlang. Skalbarhet. Felhantering i ett massivt parallellt system.

Fallstudier av applikationer för parallell funktionell programmering inom industrin, så som "map-reduce" och skalbara "no-SQL" databaser.

Organisation

Kursen ges i form av föreläsningar och obligatoriska laborationer. Gästföreläsningar hålls av externa experter och ledande forskare.

Litteratur

Utvalda vetenskapliga artiklar, se kurshemsidan.

Examination inklusive obligatoriska moment

För att bli godkänd på kursen krävs godkänd skriftlig tentamen samt godkända laborationer. Baserat på tentamensresultatet ges betygen U, 3, 4 eller 5.

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.