Slides from theoretic class:

  1. Course information.
  2. Introduction to parallel programming and architectures.
  3. Shared-memory architecture.
  4. Distributed-memory systems.
  5. Programming shared-memory systems.
  6. OpenMP - synchronization and load balancing.
  7. Performance analysis and debugging of parallel programs.
  8. Monitors and Transactional Memory.
  9. Foster's methodology.
  10. Introduction to MPI.
  11. The Sieve of Eratosthenes.
  12. All-Pairs Shortest Paths.
  13. Metrics for parallel performance.
  14. Matrix-vector multiplication.
  15. Load balancing; Termination detection.
  16. Hybrid OpenMP and MPI programming.
  17. Iterative Methods; Finite Difference Methods.
  18. Direct Solution of Linear Systems.
  19. Algorithms on Graphs.
  20. Parallel Sort.
  21. Combinatorial Search; Monte Carlo Methods.
  22. ccNUMA; Map-Reduce.
  23. GPGPU Programming.
  24. Exascale Computing.

I would like to acknowledge the contribution to many of these slides made by Prof. Luís Guerra e Silva.