förklara och utforma algoritmer för hantering av enkla datastrukturer såsom mängder, stackar och köer för parallell beräkning;
formulera och resonera om korrektheten av algoritmer och datastrukturer vid förekomst av parallella trådar;
använda och implementera grundläggande parallella algoritmer.
Kursinnehåll
De flesta datorprogram fungerar numera på parallella plattformar, t.ex. multicore-arkitekturer, distribuerade databaser och geografiskt distribuerade servrar. Detta innebär att existerande algoritmer och datastrukturer måste utvidgas så att de kan hantera parallella trådar. Denna kurs går igenom hur detta görs för grundläggande datastrukturer, t.ex. mängder , stackar och köer. Algoritmer som manipulerar sådana datastrukturer såsom algoritmer för insättning, radering, sökning och sortering. Resonemang kring korrektheten och effektiviteten hos dessa algoritmer. Sekventiell konsistens, lineariserbarhet, synkroniseringsmekanismer, optimistiska algoritmer, lata algoritmer, låsfria algoritmer, ABA-problemet, atomära operationer.
Förutsättningar
120 hp varav 60 hp datavetenskap inklusive genomgången Introduktion till parallellprogrammering. Funktionell programmering rekommenderas. Engelska 6. (Med en svensk kandidatexamen uppfylls kravet på engelska.)