OPIT COMP-5002 · Professor Sylvester Kaczmarek
Practical materials for the course. Each laboratory is self-contained and focuses on a different parallel or distributed computing model. Read the laboratory README before running its commands.
| Week | Activity | Repository |
|---|---|---|
| 2 | LAB1 | Threading, race conditions and locks |
| 3 | LAB2 | Bounded buffer and synchronization |
| 4 | LAB3 | Multiprocessing and process pools |
| 6 | LAB4 | MPI collective communication |
| 11 | LAB5 | Distributed data processing with Dask |
The GitHub laboratories are practical course activities. Official assessments, discussions, submission dates and grades remain in Canvas.
Use the assignment repository provided through GitHub Classroom for your work. The shared repositories above contain the course starters and instructions; do not submit work into the shared repositories or publish completed answers publicly.
Follow the setup and execution instructions in each laboratory README. Some starter code is intentionally incomplete until the required tasks are implemented.
The laboratories progress from shared-memory concurrency and synchronization, through multiprocessing and distributed-memory MPI, to a higher-level distributed data-processing framework.
The practical sequence reinforces:
- Python threads, race conditions, locks and the GIL
- condition variables and producer-consumer synchronization
- process-based parallelism and process pools
- distributed-memory programming with MPI collectives
- partitioned data processing and lazy execution with Dask