For ease of reference by adopters/instructors of core courses, here are the core courses cross-referenced with topics for the four areas, with information extracted from the previous four tables..
Table 5: Algorithm
Topics |
DS/A |
CS2 |
● Costs of computation: |
|
|
Asymptotics |
1 |
|
time |
1 |
|
space |
1 |
|
speedup |
1 |
|
|
|
|
● Cost reduction: |
|
|
|
|
|
space compression, etc. |
|
|
● Cost tradeoffs: |
|
|
time vs. space, |
1 |
|
power vs. time, etc. |
1 |
|
● Scalability in algorithms and architectures |
1 |
|
● Model-based notions: |
|
|
– Notions from complexity-theory: |
|
|
PRAM |
1 |
|
BSP/CILK |
1 |
|
simulation/emulation, |
|
|
P-completeness, |
|
|
#P-completeness |
|
|
Cellular automata |
|
|
Notions from scheduling |
|
|
dependencies, |
1 |
1 |
task graphs, |
1 |
|
work, |
1 |
|
(make)span |
1 |
|
|
|
|
● Divide & conquer (parallel aspects) |
1 |
1 |
● Recursion (parallel aspects) |
1 |
1 |
● Scan (parallel-prefix) |
|
|
● reduction (map-reduce) |
|
|
● Stencil-based iteration |
|
|
● Dependencies: |
|
|
"oblivious” algorithms |
|
|
blocking |
|
|
striping |
|
|
“out-of-core” algorithms |
|
|
● Series-parallel composition |
|
1 |
● Graph embedding as an algorithmic tool |
|
|
|
|
|
● Communication: |
|
|
broadcast, |
1 |
|
multicast, |
1 |
|
scatter/gather |
1 |
|
gossip |
|
|
● Asynchrony |
|
1 |
● Synchronization |
1 |
1 |
Sorting |
1 |
1 |
Selection |
1 |
1 |
● Graph algorithms: |
|
|
search |
|
|
path selection |
|
|
● Specialized computations: |
1 |
1 |
convolutions |
|
|
matrix computations |
|
|
matrix product |
|
|
linear systems |
|
|
matrix arithmetic |
|
|
matrix transpose |
|
|
Termination detection |
|
|
Leader election/symmetry breaking |
|
|
Table 6: Programming
Topics |
Systems |
DS/A |
CS2 |
Parallel Programming paradigms and Notations |
|
|
|
By the target machine model |
|
|
|
SIMD |
1 |
|
1 |
Processor vector extensions |
1 |
|
|
Shared memory |
|
1 |
1 |
Distributed memory |
1 |
1 |
|
Client Server |
|
1 |
1 |
Hybrid |
1 |
|
|
By the control statement |
|
|
|
Task/thread spawning |
|
1 |
1 |
SPMD |
|
1 |
1 |
Data parallel |
|
1 |
1 |
Parallel loops for shared memory |
|
1 |
1 |
Semantics and correctness issues |
|
|
|
Tasks and threads |
|
1 |
1 |
Synchronization |
|
1 |
1 |
Concurrency defects |
1 |
1 |
|
Tools to detect concurrency defects |
1 |
1 |
|
Performance issues |
|
|
|
Computation |
|
1 |
1 |
Load balancing |
1 |
1 |
|
Scheduling and mapping |
1 |
1 |
|
Data (distribution, layout, locality) |
|
1 |
|
Performance monitoring tools |
1 |
1 |
|
Performance metrics |
|
1 |
1 |
Table 7: Architecture
Topics |
CS1 |
CS2 |
Systems |
Superscalar (ILP) |
|
|
1 |
SIMD/Vector (e.g., SSE, Cray) |
|
|
1 |
Pipelines |
|
|
|
(Single vs. multicycle) |
|
|
1 |
Data and control hazards |
|
|
|
OoO execution |
|
|
|
Streams (e.g., GPU) |
|
|
1 |
Dataflow |
|
|
|
MIMD |
|
|
1 |
Simultaneous Multithreading (e.g., Hyperthreading) |
|
|
1 |
Highly Multithreaded (e.g., MTA) |
|
|
|
Multicore |
|
|
1 |
Cluster |
|
|
|
Heterogeneous (e.g., Cell) |
|
|
1 |
Grid/cloud |
|
1 |
|
|
|
|
|
SMP |
|
|
|
Buses |
|
|
1 |
NUMA (Shared Memory) |
|
|
|
CC-NUMA |
|
|
|
Directory-based CC-NUMA |
|
|
|
Message passing (no shared memory) |
|
|
|
Topologies |
|
|
1 |
Diameter |
|
|
1 |
Latency |
|
|
1 |
Bandwidth |
|
|
1 |
Circuit switching |
|
|
|
Packet switching |
|
|
|
Routing |
|
|
|
Cache organization |
|
|
1 |
Atomicity |
|
|
|
Consistency |
|
|
|
Coherence |
|
|
|
False sharing |
|
|
|
Impact on software |
|
|
|
Range |
1 |
1 |
1 |
Precision |
1 |
1 |
1 |
Rounding issues |
|
|
|
Error propagation |
|
|
|
754 standard |
|
|
1 |
cycles per instruction (CPI) |
|
|
1 |
Benchmarks |
|
|
1 |
Spec mark |
|
|
1 |
Bandwidth benchmarks |
|
|
|
Peak performance |
|
|
1 |
MIPS/FLOPS |
|
|
1 |
Sustained performance |
|
|
1 |
LinPack |
|
|
|
Table 8: Crosscutting
Topics \ Where Covered |
CS1 |
CS2 |
Systems |
DS/A |
High level themes: |
|
|
|
|
Why and what is parallel/distributed computing? |
1 |
1 |
|
|
Crosscutting topics: |
|
|
|
|
Concurrency |
|
1 |
|
1 |
Non-determinism |
|
|
1 |
1 |
Power |
|
|
1 |
1 |
Locality |
|
|
1 |
1 |
Current/Hot/Advanced Topics |
|
|
|
|
Cluster |
|
1 |
1 |
1 |
cloud/grid |
|
1 |
1 |
1 |
p2p |
1 |
1 |
|
|
fault tolerance |
|
|
1 |
|
Security in Distributed System |
|
|
1 |
|
Distributed transactions |
1 |
1 |
|
|
web search |
1 |
1 |
|
|
Social Networking/Context |
|
|
|
|
Collaborative Computing |
|
|
|
|
performance modeling |
|
|
|
|
web services |
|
|
|
|
pervasive computing |
|
|
|
|
mobile computing |
|
|
|
|