Parosh Aziz Abdulla

Concurrent Algorithms and Data Structures.

Advanced Course, 5 credits.

Background

Most computer applications operate nowadays on concurrent platforms, e.g., multicore architectures, distributed databases, and geographically distributed servers. This means that all the algorithms and data structures that have along the years have been designed for sequential programs must be extended to the concurrent setting. In this course, we study how this is done in the case of basic data structures such as sets, stacks, and queues. We will also study algorithms that manipulate data structures, such as insertion, deletion, and membership checking. Furthermore, we will reason about the correctness and efficiency of these algorithms.

Concrete topics: concurrent programs, concurrent data structures, sets, stacks, queues, sequential consistency, linearizability, coarse-grained synchronization fine-grained synchronization, optimistic algorithms, lazy algorithms, lock-free algorithms, the ABA problem, and atomic operations.

Structure
  • Lectures and Tutorials.
  • Project work. The project will consist of implementing some of the algorithms discussed in the class.
Examination
  • Written exam.
  • Weekly assignments.
  • Project work.
Prerequisites
  • Course suitable both for PhD and MSc students.
  • Primary knowledge corresponding to three years of an undergraduate program in computer science.
Slides
Videos
Literature
Contact Person