This is a preliminary list. It is likely to change quite a bit, but it should give you an idea about the topics we will be covering in the class. We may also have guest speakers from industry and academia.

Contact the instructor if you would like to see a topic or a paper be discussed.

Topic 1 Parallel Languages, Memory Models and New Synchronizations

Introduction and Paralllel Programming Abstractions.

Daan Leijen, Wolfram Schulte, and Sebastian Burkhardt. The Design of a Task Parallel Library.

Sebastian Burckhardt, Alexandro Baldassion, and Daan Leijen. Concurrent Programming with Revisions and Isolation Types.

Intel. Ct: C for Throughput Computing White paper.

Charles, Donawa, Ebcioglu, Grothoff, Kielstra, von Praun, Saraswat, Sarkar. X10: An Object-oriented approach to non-uniform Clustered Computing. OOPSLA 2005.

Harris, Larus and Rajwar. Transactional Memory (second edition). Synthesis Lectures on Computer Architecture, 2010.

Topic 2 Determinism

R. Bocchino, V. Adve, D. Dig., S. Adve, S. Heumann, R. Komuravelli, J. Overbey, P. Simmons, H. Sung, and M. Vakilian. A Type and Effect System for Deterministic Parallel Java. OOPSLA 2009.

Lee, Wester, Veeraraghavan, Narayanasamy, Chen, Flinn. DoublePlay: Parallelizing sequential logging and replay ASPLOS 2011.

Yang, Liu, Novark, Berger. Grace: Safe Multithreaded Programming for C/C++ . OOPSLA 2009.

J. Burnim and K. Sen. "Asserting and Checking Determinism for Multithreaded Programs". FSE 2009. CACM Highlights.

Topic 3 Testing and Avoiding Concurrency Bugs

Musuvathi, Qadeer, Ball, Basler, Nainar, Neamtiu. Finding and Reproducing Heisenbugs in Concurrent Programs. OSDI 2008.

Sen. K. Sen, "Race Directed Random Testing of Concurrent Programs," PLDI 2008.

Wang, Kelly, Kudlur, Lafortune, Mahlke. Gadara: Dynamic Deadlock Avoidance for Multithreaded Programs. OSDI 2008. Yu and Narayanasamy A Case for Interleaving Constrained Shared-Memory Multi-Processor. ISCA 2009

Topic 4 Parallelism in the Cloud
Jeffrey Dean, Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. OSDI 2004.

Intel. Single Cloud Computer. White paper.

Reddi, Lee, Chilimbi, Vaid. Web Search Using Mobile Cores: Quantifying and Mitigating the Price of Efficiency. ISCA 2010.

Topic 5 GPGPU and Streaming

Intel Larrabee: A Many-Core x86 Architecture for Visual Computing Siggraph 2008.

Michael I. Gordon, William Thies, Saman P. Amarasinghe. Exploiting coarse-grained task, data, and pipeline parallelism in stream programs. ASPLOS 2006.

Michael D. Linderman, Jamison D. Collins, Hong Wang, Teresa H. Y. Meng. Merge: a programming model for heterogeneous multi-core systems. ASPLOS 2008.

Jung Ho Ahn, William J. Dally, Brucek Khailany, Ujval J. Kapasi, Abhishek Das. Evaluating the Imagine Stream Architecture. ISCA 2004.

Topic 6 Parallel Runtime Software System

Baumann et al. The Multikernel: A New OS Architecture for Scalable Multicore Systems SOSP 2009.

Cliff Click (Azul) "Java on a 1000 Cores - Tales of Hardware / Software CoDesign". Google TechTalk

Topic 7 Functional Programming for Concurrency

Philipp Haller, Martin Odersky. Event-Based Programming without Inversion of Control.

Topic 8 Performance and Automatic Parallelization
Blake, Dreslinski, Flautner, Mudge. Evolution of Thread-Level Parallelism in Desktop Applications. . ISCA 2010.

Bridges et al. Revisiting the Sequential Programming Model for the Multicore Era. . MICRO 2007.

Raman et al. Speculative Parallelization Using Software Multi-threaded Transactions. ASPLOS 2010.