Using MPI (2nd ed.): portable parallel programming with the message-passing interface
Using MPI (2nd ed.): portable parallel programming with the message-passing interface
A study of common pitfalls in simple multi-threaded programs
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
ThreadMentor: a pedagogical tool for multithreaded programming
Journal on Educational Resources in Computing (JERIC)
A suite of tools for teaching concurrency
Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education
Test-driven learning: intrinsic integration of testing into the CS/SE curriculum
Proceedings of the 37th SIGCSE technical symposium on Computer science education
Teaching parallel computing to science faculty: best practices and common pitfalls
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Computer
Accelerator: using data parallelism to program GPUs for general-purpose uses
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Helping students appreciate test-driven development (TDD)
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Iterative context bounding for systematic testing of multithreaded programs
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Teaching students to develop thread-safe java classes
Proceedings of the 13th annual conference on Innovation and technology in computer science education
Concurrent CS: preparing students for a multicore world
Proceedings of the 13th annual conference on Innovation and technology in computer science education
A view of the parallel computing landscape
Communications of the ACM - A View of Parallel Computing
The design of a task parallel library
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
A breadth-first course in multicore and manycore programming
Proceedings of the 41st ACM technical symposium on Computer science education
Test-first Java concurrency for the classroom
Proceedings of the 41st ACM technical symposium on Computer science education
Introducing concurrency in CS 1
Proceedings of the 41st ACM technical symposium on Computer science education
Finding and reproducing Heisenbugs in concurrent programs
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Concurrent programming with revisions and isolation types
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Parallel Programming with Microsoft .NET: Design Patterns for Decomposition and Coordination on Multicore Architectures
Mental models and parallel program maintenance
Proceedings of the 33rd International Conference on Software Engineering
Proceedings of the 43rd ACM technical symposium on Computer Science Education
Integrating data-intensive cloud computing with multicores and clusters in an HPC course
Proceedings of the 17th ACM annual conference on Innovation and technology in computer science education
A down-to-earth educational operating system for up-in-the-cloud many-core architectures
ACM Transactions on Computing Education (TOCE)
A model-driven approach to teaching concurrency
ACM Transactions on Computing Education (TOCE)
Hi-index | 0.01 |
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, a 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.