ICS 440

Parallel and Distributed Algorithms

4 Undergraduate credits
Effective August 17, 2014 – Present

Graduation requirements this course fulfills

Covers design and development of parallel and distributed algorithms and their implementation. Topics include multiprocessor and multicore architectures, parallel algorithm design patterns and performance issues, threads, shared objects and shared memory, forms of synchronization, concurrency on data structures, parallel sorting, distributed system models, fundamental distributed problems and algorithms such as mutual exclusion, consensus, and elections, and distributed programming paradigms. Programming intensive.

Special information

Note: Students are responsible to both be aware of and abide by prerequisites for ICS courses for which they enroll, and will be administratively dropped from a course if they have not met prerequisites.

Learning outcomes


  • Employ parallel algorithm design principles and programming paradigms
  • Write correct and scalable parallel algorithms for multiprocessor and multicore architectures
  • Develop algorithms at fine- and coarse-grained granularities
  • Use synchronization appropriately in parallel algorithms
  • Factor in performance issues in the implementation of parallel algorithms
  • Characterize the kinds of tasks that are a natural match for SIMD machines
  • Explain the different distributed system models
  • Explain important distributed problems and algorithms
  • Select appropriate distributed programming paradigms for implementing distributed algorithms