Parallelprogrammering
Overordnede kursusmål
At give deltagerne et begrebsmæssigt og praktisk grundlag for konstruktion af systemer med flere selvstændige, parallelle aktiviteter.
See course description in English
Læringsmål
- modellere og analysere parallelle aktiviterer ved brug af matematiske modeller
- gøre rede for virkemåden af klassiske synkroniserings- og kommunikationsmekanismer samt disses indbyrdes realationer
- anvende kendskab til en række sædvanlige kommunikations- og koordineringsløsninger ved løsning af nye problemer
- verificere korrekthed af parallelle algoritmer ved brug af formelt baserede verifikationsværktøjer
- identificere relevant brug af parallelle aktiviteter ved udvikling af sædvanlige applikationer
- implementere parallelle aktiviteter effektivt ved brug af tasks, tråde og processer
- anvende parallelitet til udnyttelse af moderne maskinarkitekturer
- benytte fagets begreber til koncis problemanalyse og løsningsdokumentation
Kursusindhold
Parallelprogrammering: Processer, synkronisering, kommunikation. Procesmodeller, atomare aktioner.
Sikkerheds- og aktivitetsegenskaber. Baglås. Verifikationsteknikker og -værktøjer.
Kritiske regioner, semaforer, monitorer, synkron og asynkron meddelelsesoverførsel, kaldmekanismer, distribuerede objekter, tuppelrum. Parallelle datastrukturer.
Systemdesign: Kommunikationsmønstre og algoritmer. Client/server paradigme. Transaktioner og concurrency control. Asynkron og task-baseret programmering.
Anbefalede forudsætninger
Undervisningsform
Forelæsninger, grupperegning og programmeringsøvelser.
Fakultet
Bemærkninger
Kurset er et specialiseringskursus i gruppen af teknologiske linjefag for bachelorretningen Softwareteknologi.