1. Przetwarzanie współbieżne, równoległe i rozproszone – charakterystyka, różnice
2. Proces, wątek – charakterystyki, różnice; funkcje: fork (exec, wait), clone – parametry, przykłady użycia
3. Wątki Pthreads – tworzenie, niszczenie, zarządzanie; przykłady tworzenia i przesyłania argumentów do wątków
4. Współbieżność: wyścig (race condition, data race), sposoby unikania – różne rodzaje synchronizacji
5. Wzajemne wykluczanie: sposoby realizacji, wykorzystywane narzędzia i konieczne własności realizujących funkcji
6. Współbieżność: cechy pożądane programów, rodzaje błędów wykonania 7. Wzajemne wykluczanie: mutexy – wykorzystanie w bibliotece Pthreads 8. Pojęcia SPMD i MPMD
9. Tworzenie programów równoległych: wzorce, sposoby realizacji 10. Tworzenie programów równoległych: typy dekompozycji
11. Dekompozycja dla pętli, tablic 1D: blokowa, cykliczna, mieszana
12. Dekompozycja dla tablic 2D: wierszowa, kolumnowa, szachownicowa (2D) 13. Java: wątki – zarządzanie, przydzielanie zadań wątkom
14. Java: pule wątków – interfejsy: Executor, ExecutorService, klasy: Executors, ForkJoinPool; przydzielanie zadań wątkom i synchronizacja
15. Java: interfejsy – Runnable, Callable, Future, RecursiveAction, RecursiveTask 16. Java: wzajemne wykluczanie
17. Zmienne warunku, rozwiązanie problemu producenta-konsumenta 18. Problem czytelników i pisarzy – zamki odczytu i zapisu
19. OpenMP – charakterystyka, elementy składowe
20. OpenMP: dyrektywa parallel – składnia, działanie, klauzule
21. OpenMP: zmienne w obszarze równoległym, dyrektywy i klauzule dotyczące zmiennych
22. OpenMP: dyrektywy synchronizacji i podziału pracy
23. OpenMP: zrównoleglenie pętli, działanie, zarządzanie wykonaniem – klauzule 24. OpenMP: równoległość zadań, działanie, zarządzanie wykonaniem – klauzule
25. Zależności danych – typy, wpływ na możliwość zrównoleglenia kodu, zależności przenoszone w pętli
26. MPI – charakterystyka: model wykonania, podstawowe funkcje
27. MPI: komunikacja punkt-punkt – adresowanie, dane, tryby komunikacji
28. MPI: komunikacja grupowa, schematy komunikacji, przykładowe funkcje interfejsu
29. Architektury sprzętu: klasyfikacja Flynna i rzeczywiste systemy równoległe 30. Architektury sprzętu – statyczne i dynamiczne sieci połączeniowe
31. Architektury sprzętu – poziomy równoległości
32. Wydajność: podstawowe pojęcia i miary (bezwzględne i względne)
33. Wydajność – narzut obliczeń równoległych (składowe narzutu), wpływ rodzaju dekompozycji na równoważenie obciążenia
34. Wydajność: analiza i prawo Amdahla – założenia, wzory, wnioski
35. Wydajność: analiza Gustafsona – założenia, wzory, wnioski; skalowalność obliczeń równoległych