| Introduction to parallel and distributed computing.
| Parallel computing basics: computer architectures and programming models.
| Parallel algorithm design: parallelization process, data dependency.
| Parallel algorithm design: case study.
| Parallel algorithm design: decomposition and mapping techniques.
| Improving the performance of parallel programs: load balancing issues.
| Improving the performance of parallel programs: serialization and
communication issues.
| Workload-driven evaluation of parallel systems.
| Cache coherence in symmetric multiprocessors.
| Specialized hardware for parallel and distributed computing.
| Time: physical clocks, logical clocks. Causal ordering.
| Distributed algorithms: consistency and replication for fault tolerance.
| Distributed algorithms: leader election.
| Distributed algorithms: consensus and mutual exclusion.