Practical parallel and concurrent programming
Caitlin Sadowski, Thomas J. Ball, Judith Bishop, Sebastian Burckhardt, Ganesh Lalitha Gopalakrishnan, Joseph G. Mayo, Madanlal Musuvathi, Shaz Qadeer, Stephen Toub · 2011
Multicore computers are now the norm. Taking advantage of these multiple cores entails parallel and concurrent programming. There is therefore a pressing need for courses that teach effective programming on multicore architectures. We believe that such courses should emphasize high-level abstractions for performance and correctness and be supported by tools. This paper presents a set of freely available course materials for parallel and concurrent programming, along with a testing tool for performance and correctness concerns called Alpaca (A Lovely Parallelism And Concurrency Analyzer). These course materials can be used for a comprehensive parallel and concurrent programming course, à la carte throughout an existing curriculum, or as starting points for graduate special topics courses. We also discuss tradeoffs we made in terms of what to include in course materials.