FS2022: 22027/62027 Concurrency: Multi-core Programming and Data Processing
This course covers the foundations of concurrent systems and multiprocessor synchronization. Students who take this course will learn the basics of multicore programming, the new paradigm of computer science. The main topics covered in the course include foundations of concurrency: concurrent objects and consistency, foundations of shared memory, the relative power of synchronization operations, universality of consensus; and practical algorithms: mutual exclusion, spin locks and contention, lock-free and wait-free algorithms, concurrent data structures (linked lists, skip lists, queues, stacks, hash tables), scheduling and work distribution, barriers, transactional memory, data parallelism. The course will be complemented by practical, hands-on exercises on multi-core computers.