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 |
|
|
|
|