Kursplan för Parallell funktionell programmering

Kursplanen innehåller ändringar
Se ändringar

Kursplan fastställd 2019-02-07 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 - Fem, Fyra, Tre, Underkänd

Kurstillfälle 1

  • Undervisningsspråk Engelska
  • Anmälningskod 02139
  • Blockschema
  • Sökbar för utbytesstudenterJa

Poängfördelning

0112 Tentamen 6 hp
Betygsskala: TH
6 hp
  • 05 Jun 2020 fm J
  • 20 Aug 2020 em J
0212 Laboration 1,5 hp
Betygsskala: UG
1,5 hp

I program

Examinator

Gå till kurshemsidan (Öppnas i ny flik)

Behörighet

Information saknas

Särskild behörighet

För kurser på avancerad nivå gäller samma grundläggande och särskilda behörighetskrav som till det kursägande programmet. (När kursen är på avancerad nivå men ägs av ett grundnivåprogram gäller dock tillträdeskrav för avancerad nivå.)
Undantag från tillträdeskraven: 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.

Kursplanen innehåller ändringar

  • Ändring gjord på kurstillfälle:
    • 2019-03-07: Tillagd i programplan [Kurstillfälle 1] tillagd i programplan för MPHPC åk 1 av UBS/PA/UOL