Kursplan för Principer för parallell programmering

Kursplan fastställd 2026-02-10 av programansvarig (eller motsvarande).

Kursöversikt

  • Engelskt namnPrinciples of Concurrent Programming
  • KurskodTDA384
  • Omfattning7,5 Högskolepoäng
  • ÄgareTKDAT
  • UtbildningsnivåGrundnivå
  • 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 49124
  • Sökbar för utbytesstudenterJa
  • Endast studenter med kurstillfället i programplan.

Poängfördelning

0117 Laboration 3 hp
Betygsskala: UG
3 hp
0217 Tentamen 4,5 hp
Betygsskala: TH
4,5 hp

I program

Examinator

Kurstillfälle 2

  • Undervisningsspråk Engelska
  • Anmälningskod 49123
  • Sökbar för utbytesstudenterJa
  • Endast studenter med kurstillfället i programplan.

Poängfördelning

0117 Laboration 3 hp
Betygsskala: UG
3 hp
0217 Tentamen 4,5 hp
Betygsskala: TH
4,5 hp

I program

Examinator

Behörighet

Grundläggande behörighet för grundnivå
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från kravet

Särskild behörighet

Samma behörighet som det kursägande programmet
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från kraven

Kursspecifika förkunskaper

Kunskaper i satslogik. Grundläggande kännedom om objektorienterad och funktionell programmering rekommenderas, eftersom båda dessa används i stor utsträckning vid genomgång av principer för parallellitet samt i laborationsarbetet. Mer specifikt används programmeringsspråken Java och Erlang. Studenter utan kunskaper i Java eller Erlang, men med erfarenhet av andra liknande programmeringsspråk, brukar vanligtvis snabbt kunna anpassa sig.

Syfte

Parallellprogrammering har blivit allmänt förekommande i olika typer av system, exempelvis för att påskynda beräkningar där fysisk parallellism kan utnyttjas, för att tillhandahålla interaktiva fleranvändarmiljöer, och för att hantera interaktion med asynkrona externa händelser. Kursen syftar till att ge en introduktion till de principer som ligger till grund för parallella system, samt praktiska programmeringslösningar för modellering där man utnyttjar samtidighet i program. Områden där dessa principer och praxis är relevanta inkluderar operativsystem, distribuerade system, realtidssystem och flerkärniga arkitekturer.

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

Kunskap och förståelse:
  • demonstrera kunskaper om de frågor och problem som uppstår när man konstruerar korrekta parallela program;
  • identifiera synkroniseringsproblem typiska för parallella program, såsom kapplöpningsvillkor och ömsesidig uteslutning.

Färdigheter och förmåga:
  • tillämpa vanliga mönster, såsom låsning, semaforer och meddelandestyrd synkronisering för att lösa parallella programmeringsproblem;
  • kunna använda tekniker, speciellt avsedda för parallellprogrammering, i moderna parallell-programmeringsspråk;
  • implementera lösningar med vanliga mönster i moderna programmeringsspråk.

Värderingsförmåga och förhållningssätt:
  • värdera styrkorna och möjliga svagheter inom det parallella programmeringsparadigmet;
  • bedöma om ett program, ett bibliotek, eller en datastruktur är säker för användning i ett parallellprogrammeringsproblem;
  • välja korrekta språkkonstruktioner för att implementera synkronisering och lösa kommunikationsproblem mellan olika beräkningsenheter.

Innehåll

  • Fysisk kontra logisk parallellism
  • Problem som kan uppkomma vid samtidighet: kapplöpningsvillkor, uteslutning, dödläge, rättvisa, livelock
  • Ömsesidig uteslutning
  • Synkronisering med delat minne: med semaforer eller finkornig låsning
  • Meddelandestyrd synkronisering: med meddelandeköer

Organisation

Kursen organiseras i form av föreläsningar och laborationer.

Litteratur

Kurslitteraturen består av följande två böcker:
  • "Principles of Concurrent and Distributed Programming (Second edition)", Mordechai Ben-Ari, Addison-Wesley, 2006. ISBN 0-321-31283-X.
  • "The Art of Multiprocessor Programming, Revised Reprint", M. Herlihy and N. Shavit, Morgan Kaufmann, 2012. ISBN 978-0-12-397337-5.

Examination inklusive obligatoriska moment

Kursen examineras genom en individuell skriftlig salstentamen (4.5 hec) och laborationer (3.0 hec) som normalt genomförs i par. Det slutliga kursbetyget avgörs av summan av resultatet på både laboratoriedelen och tentamen, förutsatt att båda delarna har godkänts separat. 

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 riktat pedagogiskt stöd på grund av funktionsnedsättning.