The University of Western Ontario
London, Canada

Department of Computer Science

CS4402B/CS9635B -- Parallel and Distributed Computing

Winter 2026

Course Description

The efficient usage of parallel and distributed systems (multi-processors and computer networks) is nowadays an essential task for computer scientists.

This course studies the fundamental aspects of parallel systems and aims at providing an integrated view of the various facets of software development on such systems: hardware architectures, programming languages and models, software development tools, software engineering concepts and design patterns, performance modelling and analysis, experimenting and measuring, application to scientific computing.

Course topics may include but are not limited to: hierarchical memory, cache complexity, multi-core and many-core architectures, fork-join parallelism, scheduling, scalability, GPU computing, data parallelism, pipelining, message passing (MPI), parallel and distributed data-structures, and applications of parallel and distributed computing.

Follow this link for various resources (software tools and tutorials, hardware documentation, conferences, other HPC course web sites, etc.) regarding this course and HPC in general.

Instructor

Name:Marc Moreno-Maza
Office:MC 327
Office Hours: Wednesdays 15:30 - 17:30 on Zoom
Email:moreno@csd.uwo.ca

Delivery mode, lecture Notes and Textbook

The format of the course lectures and tutorials will be on-line asynchronous presentations posted on the OWL web sites.

Office hours will be one-line synchronous meetings on Zoom. The office hours will not be recorded.

The following textbooks are recommended but not required:
  1. Structured Parallel Programming by Michael McCool, Arch Robison, James Reinder.
  2. C++ Concurrency in Action, practical multithreading by Anthony Williams
  3. Programming language pragmatics (Chapter 12 only) by Michael L. Scott
  4. Models of Computation Exploring the Power of Computing by John E. Savage.
  5. CUDA by example by JASON SANDERS and EDWARD KANDROT.

Course and OWL Websites

The course web site is accessible here This course web site is used to post materials about the course projects.

For CS4402, the OWL web site is here. It is used to post lecture materials (slides, source code, videos, etc.) as well as for submitting assignments and quizzes. It is also used for managing the grades of CS9635 students.

For CS9635, the OWL web site is here. It is used for managing the grades of CS9635 students.

Please check both the course and OWL sites often for updates on lecture notes and errata, as well as the forum discussions and announcements in the OWL web site of CS4402.

Course outline

Please find the course outline here.

Lecture Topics

The list of topics will be something on the order of:

  1. Overview of parallel and distributed computing
  2. Programming patterns in parallel and distributed computing; illustration with Julia
  3. Hierarchical memories, cache complexity
  4. The fork-join model and the cilk concurrency platform
  5. Multi-threading parallelism and performance
  6. Pipelining
  7. Scheduling and Synchronizing; parallelism overheads
  8. Parallel Random-Access Machines.
  9. Many-core programming (GPGPUs)
  10. High-Performance Computing with CUDA
  11. Multiprocessed parallelism, message passing (MPI)

Lecture Materials

The list of topics will be something on the order of:

  1. Overview of parallel and distributed computing
  2. Parallel and distributed patterns in Julia:
    1. Simple installation notes for Jupyter and Julia
    2. Jupyter notebooks illustrating parallel programming patterns in Julia
  3. Hierarchical memories, cache complexity Extra materials used in the lectures:
    1. Animation of naive counting sort
    2. Animation of counting sort using buckets
    3. Animation of various transposition algorithms
    4. C programs for matrix multiplication, matrix transposition and counting sort.
  4. The fork-join model and the cilk concurrency platform Extra materials used in the lectures:
    1. The OpenCilk web site
    2. OpenCilk examples
  5. Dependence Analysis and (Automatic) Parallelization
  6. Many-core Computing with CUDA. slides
  7. Parallel Random-Access Machines
  8. High-Performance Computing with CUDA slides.
  9. Programming parallel patterns with C++ 11 slides BPASIntro-0923.mp4 BPAS-Parallel.mp4
  10. Multiprocessed parallelism, message passing (MPI):
    1. A Comprehensive MPI Tutorial Resource
    2. MPI intro lecture by Jon Eyolfson,
    3. MPI: Beyond the Basics by David McCaughan.
  11. MetaFork: A Compilation Framework for Concurrency Platforms Targeting Multicores slides

Assignment/Project/Quiz Schedule

All dates are tentative and currently subject to change, although it is doubtful by any significant amount.

Evaluation Technique Weight Posted Date (tentative!) Due Date (tentative!) Workload
Assignment One1/6Jan. 30Feb. 27regular
Assignment Two1/6March 4March 27regular
Project 1/3Feb 27See Student Evaluationheavy
Quiz 11/9 Jan 29 12:30Jan 29 13:20regular
Quiz 21/9 Feb 26 12:30 Feb 26 13:20regular
Quiz 31/9 Mar 19 12:30Mar 19 13:20regular

Quiz corrections from 2014-2015

  • Quiz 1: elements of corrections for a 2014 quiz.
  • A CUDA quiz and its elements of correction.
  • 2015 Quiz 2 with elements of corrections.
  • Quiz corrections from 2016-2017

  • Quiz 1 with elements of corrections.
  • Quiz 2 with elements of corrections.
  • Research articles proposed for the CS4402 projects in 2025-2026

    Please find below papers that can be chosen for the course projects of CS4402.

    Research projects proposed for CS9635 in 2025-2026

    Please find topics that can be chosen for the course projects of CS9635.


    Marc Moreno Maza
    Last modified: Mon Jan 09, 2025