Automatic detection of nondeterminacy in parallel programs
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
LAPACK: a portable linear algebra library for high-performance computers
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
Specifying Concurrent Program Modules
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Case for High-Level Parallel Programming in ZPL
IEEE Computational Science & Engineering
Programming for parallelism and locality with hierarchically tiled arrays
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
MapReduce: simplified data processing on large clusters
Communications of the ACM - 50th anniversary issue: 1958 - 2008
Patterns for parallel programming
Patterns for parallel programming
DMP: deterministic shared memory multiprocessing
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
Preparing students for ubiquitous parallelism
Proceedings of the 40th ACM technical symposium on Computer science education
A type and effect system for deterministic parallel Java
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
A breadth-first course in multicore and manycore programming
Proceedings of the 41st ACM technical symposium on Computer science education
Introduction to High Performance Computing for Scientists and Engineers
Introduction to High Performance Computing for Scientists and Engineers
Ease of use with concurrent collections (CnC)
HotPar'09 Proceedings of the First USENIX conference on Hot topics in parallelism
The STAPL parallel container framework
Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
WebMapReduce: an accessible and adaptable tool for teaching map-reduce computing
Proceedings of the 42nd ACM technical symposium on Computer science education
Breadth in depth: a 1st year introduction to parallel programming
Proceedings of the 42nd ACM technical symposium on Computer science education
Modules in community: injecting more parallelism into computer science curricula
Proceedings of the 42nd ACM technical symposium on Computer science education
Hi-index | 0.00 |
We designed an introductory parallel programming course at the bachelor level. The class differs from other courses in its structure: The course is organized along the tiers of parallelism [25]. The tiers categorize abstractions and concepts that a software developer can choose when crafting a parallel program. The tiers are from higher to lower abstraction levels: (1) automatic/implicit parallelism, e.g., parallel libraries; (2) deterministic parallelism, e.g., at the level of independent loops; (3) explicitly synchronized, e.g., shared memory with locks; (4) low-level concurrent programming with data races, e.g., lock-free data structures. The goal of the class is to introduce fundamental principles of parallel systems and to expose students to all tiers in the architecture of a parallel system. The course serves as a platform for further exploration in specialized classes. The course has a significant share of lab sessions and programming projects. We chose the programming language X10 as the core technology and found that it facilitates the learning and rapid application of concepts at different abstraction layers and programming models. The language permits to specify common forms of parallelism, data sharing, distribution, and synchronization with succinct syntax and support for an eclipse-based IDE. We report on our first experience in teaching this course, which resulted in very positive student feedback.