Kursplan

Principer för parallell programmering

Principles of Concurrent Programming

Kurs
DIT392
Grundnivå
7,5 högskolepoäng (hp)
Utbildningsområde
NA Naturvetenskapliga området 100%

Om kursplanen

Diarienummer
GU 2025/3968
Ikraftträdandedatum
2026-03-15
Beslutsdatum
2025-11-27
Gäller från termin
Höstterminen 2026
Beslutsfattare
Institutionen för data- och informationsteknik

Betygsskala

Fyrgradig skala, sifferbetyg

Kursens moduler

Tentamen, 4,5 högskolepoäng
Laboration, 3 högskolepoäng

Inplacering

Kursen är obligatorisk på kandidatnivå inom Datavetenskap, kandidatprogram (N1COS).

Kursen kan också ingå i följande program:

  1. Computer Science, mastersprogram (N2COS)
  2. Software Engineering and Management masterprogram
    (N2SOF)
  3. Applied Data Science masterprogram (N2ADS)
  4. Matematikprogrammet, kandidatprogram (N1MAT)
  5. Matematiska vetenskaper, masterprogram (N2MAT)

Kursen ges även som fristående kurs vid Göteborgs Universitet.

Huvudområde med fördjupning

ITDVA Datavetenskap - G1F Grundnivå, har mindre än 60 hp kurs/er på grundnivå som förkunskapskrav

Behörighetskrav

Studenten ska ha fullgjort minst 7,5 hp i imperativ/objektorienterad programmering såsom DIT012, DIT948 eller motsvarande, en ytterligare kurs i programmering eller datastrukturer. Dessutom ska studenten ha kunskaper om satslogik som uppnås genom att till exempel ha avklarat DIT980, DIT725, den inledande algebra från MMG200, eller motsvarande.

Följande kunskapsnivå i Engelska krävs: Engelska 6/Engelska nivå 2 eller motsvarande från ett erkänt internationellt test, t.ex. TOEFL, IELTS.

Innehåll

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.

Begrepp som behandlas i kursen är:

  • 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)

Kursen belyser praktiska programmeringslösningar för parallellprogrammering med såväl imperativa som funktionella programmeringsspråk. I kursen ges en kort introduktion till funktionell programmering i allmänhet och av det funktionella programmeringsspråk som används i kursen, avsett att ge en tillräcklig bakgrund för att förstå och använda abstraktioner illustrerade med hjälp av funktionella språk.

Mål

Efter godkänd 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.

Hållbarhetsmärkning

Ingen hållbarhetsmärkning.

Former för undervisning

Föreläsningar, övningar och laborationstillfällen.

Undervisningsspråk: engelska

Examinationsformer

Kursen examineras genom individuell skriftlig tentamen genomförd i tentamenssal samt laborationsuppgifter som normalt genomförs i par av studenter.


Om en student som har underkänts två gånger på samma examinerande moment önskar byta examinator inför nästa examinationstillfälle ska en sådan begäran bifallas om det inte finns särskilda skäl däremot (6 kap. 22 § HF).

Om en student har fått besked om pedagogiskt stöd från Göteborgs universitet med rekommendation om anpassad examination och/eller anpassad examinationsform kan examinator, i det fall det är förenligt med kursens lärandemål och förutsatt att inte orimliga resurser krävs, besluta att bevilja studenten anpassad examination och/eller anpassad examinationsform.

Om en kurs har avvecklats eller genomgått en större förändring ska studenten erbjudas minst två examinationstillfällen, utöver ordinarie examinationstillfälle. Dessa tillfällen fördelas under en tid av minst ett år, dock som längst två år efter det att kursen avvecklats/förändrats. Vad gäller praktik och verksamhetsförlagd utbildning (VFU) gäller motsvarande, men med begränsning till endast ett ytterligare examinationstillfälle.

Om en student har fått besked om att denne uppfyller kraven för att vara student vid Riksidrottsuniversitetet (RIU-student) har examinator rätt att besluta om anpassning vid examination, om detta görs i enlighet med Lokala regler gällande RIU-studenter vid Göteborgs universitet

Betyg

Delkurser

  1. Tentamen, 4,5 hp
    Betygsskala: Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3) och Underkänd (U)
  2. Laboration, 3 hp
    Betygsskala: Godkänd (G) och Underkänd (U)

På kursen ges något av betygen Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3) och Underkänd (U).

För att få godkänt på kursen måste samtliga obligatoriska moment vara godkända. För att få ett högre betyg än godkänt så krävs ett högre viktat genomsnitt på de obligatoriska momenten.

Kursvärdering

Kursen utvärderas genom möten, både under och efter kursen, mellan lärare och studentrepresentanter. Ett anonymt skriftligt frågeformulär skickas även ut till studenterna efter kursens slut. Resultaten av utvärderingarna används för att förbättra kursinnehållet och som indikation till vilka delar som skulle kunna läggas till, tas bort, förbättras eller ändras.

Övriga föreskrifter

Kunskaper i funktionell programmering (motsvarande t.ex. DIT441 eller DIT143) är meriterande men inget krav.

Kursen är samläst med Chalmers.

Kursen ersätter kursen DIT391, 7,5 hp. Den här kursen kan inte ingå i en examen som innehåller DIT391. Den kan inte heller ingå i en examen som bygger på en annan examen där DIT391 ingår.