MC971 Introduction to Concurrent Programming

Since 2016
Principles of concurrent programming. Concurrent Process. Mutual Exclusion. Shared Memory. Sincronization primitives. Consensus. Concurrent data structures.
- Foundations of concurrent algorithms, Multicore Processors, Moore's Law and Amdahl's Law;
- Mutual Exclusion: time, critical regions, classic algorithms for mutual exclusion, concurrent objects, consistency, sequential and linear. The Java memory model;
- Foundations of shared memory: registers and photographies;
- Sincronization primitives: data structures and fundamental algorithms;
- The universality of consensus;
- Spin locks and contention;
- Concurrent Linked Lists;
- Concurrent queues;
- Concurrent stacks;
- Skiplists and balanced search;
- Transactional Memory. 
Recommended Literature:
M. Herlihy, N. Shavit.The Art of Multiprocessor Programming (TAMP), Morgan Kauffman Publishers, 2008.