Cross-cutting topics: This section includes many of the essential conceptual underpinnings of parallel and distributed computing. These topics are naturally part of the architecture, programming and algorithmic areas but are often treated only implicitly. Since some of these topics are so important and so widely applicable to parallel and distributed computing, it is recommended that discussion of these topics be called out explicitly as part of a PDC curriculum. It is further recommended that these crosscutting topics be reinforced as appropriate in the architecture, programming, and algorithm areas. Since they are cross-cutting themes, these topics can help to tie together and unify the various PDC subject areas. Specific topics include concurrency, nondeterminism, locality of reference, fault-tolerance, and energy efficiency. In terms of Bloom classification, locality has been classified as “C” due to its centrality, while the others have been suggested at the “K” level.
Concurrency provides a fundamental way for describing and reasoning about interacting program constructs (e.g., processes or threads). That the individual steps of interacting programs can be ordered (interleaved) in multiple ways leads to nondeterminism. Performance is a key issue for parallel and distributed programs. Many issues related to performance hinge on locality of reference. As practical parallel computers continue to grow in scale, fault-tolerance and energy efficiency become limiting concerns.
Advanced topics: This section includes topics of significant current or emerging interest and/or those that are better suited for advanced courses but may be introduced in lower level courses in a limited way. At the same time, applications of many of these topics will be familiar to students in their every day lives and can thus serve as motivation for deeper inquiry. The set of topics in this category will necessarily be continually evolving as topics mature and even newer topics appear on the scene. Topics current at this time include cluster computing, cloud/grid computing, peer-to-peer computing, distributed transactions, distributed security, web search, social networking, collaborative computing, and pervasive/mobile computing.