1. Introduction
1.1 Classification of parallel computers
1.2 Sharing resources, synchronization
1.3 Master-slave model
1.4 Deadlocks, debugging
1.5 Evaluating parallel programs
2. Distributed memory models
2.1 Introduction to MPI
2.2 Divide and conquer
Linear algorithms
Communication models
Sorting algorithms
Computing with possible interruption
2.3 Operating systems simulations
Bag of tasks
Client-server
Producers and consumers
2.4 Pipeline models, interactive peers
2.5 Linear algebra algorithms, libraries
2.6 Massively parallel algorithms
2.7 Other examples of algorithms
3. Shared memory models
3.1 Introduction to pthreads
3.2 Critical region, semaphores
3.3 Examples of algorithms