The Little Book of Semaphores is a free (in both senses of the word) textbook that introduces the principles of synchronization for concurrent programming.
In most computer science curricula, synchronization is a module in an Operating Systems class. OS textbooks present a standard set of problems with a standard set of solutions, but most students don't get a good understanding of the material or the ability to solve similar problems.
The approach of this book is to identify patterns that are useful for a variety of synchronization problems and then show how they can be assembled into solutions. After each problem, the book offers a hint before showing a solution, giving students a better chance of discovering solutions on their own.
The book covers the classical problems, including "Readers-writers", "Producer-consumer", and "Dining Philosophers". In addition, it collects a number of not-so-classical problems, some written by the author and some by other teachers and textbook writers. Readers are invited to create and submit new problems.
The process of writing large parallel programs is complicated by the need to specify both the parallel behaviour of the program and the algorithm that is to be used to compute its result.
Chapters: History, sequential programming, concurrent programming, error handling, advanced topics
They say it takes four days to complete the course. If you know a little Prolog and a little LISP it takes you rather a few hours.
N. Cohen, A. Tal, and E. Petrank. Proceedings of the 22Nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, page 17--29. ACM, (2017)
C. Hsiao, S. Narayanasamy, E. Khan, C. Pereira, and G. Pokam. Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems, page 193--205. ACM, (2017)
J. Wang, W. Dou, Y. Gao, C. Gao, F. Qin, K. Yin, and J. Wei. Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering, page 520--531. IEEE Press, (2017)
S. Fowler, S. Lindley, and P. Wadler. 31st European Conference on Object-Oriented Programming (ECOOP 2017), volume 74 of Leibniz International Proceedings in Informatics (LIPIcs), page 11:1--11:28. Dagstuhl, Germany, Schloss Dagstuhl--Leibniz-Zentrum für Informatik, (2017)
D. Bonetta, L. Salucci, S. Marr, and W. Binder. Proceedings of the 2016 ACM International Conference on Object Oriented Programming Systems Languages & Applications, page 531--547. ACM, (Nov 2, 2016)(acceptance rate 25%).
B. Daloze, S. Marr, D. Bonetta, and H. Mössenböck. Proceedings of the 2016 ACM International Conference on Object Oriented Programming Systems Languages & Applications, page 642--659. ACM, (Nov 2, 2016)(acceptance rate 25%).
L. Salucci, D. Bonetta, S. Marr, and W. Binder. Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, page 40:1--40:2. ACM, (March 2016)
S. Marr, E. Gonzalez Boix, and H. Mössenböck. Proceedings of the 9th Arbeitstagung Programmiersprachen, volume 1559 of ATPS'16, page 91--95. CEUR-WS, (Feb 25, 2016)