We describe programming language constructs that facilitate the application of modular design techniques in parallel programming. These constructs allow us to isolate resource management and processor scheduling decisions from the speciication of individual modules, which can themselves encapsulate design decisions concerned with concurrency, communication, process mapping, and data distributio...