Principer för parallell programmering
Om utbildningen
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.
Behörigheter och urval
Behörighet
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.
Urval
Betyg (34 %), högskoleprov (33 %) och högskolepoäng, max 165 hp (33 %)