Programming Generic and Parallel Design Patterns in C++



Using Boost and OpenMP

The goal of this hands-on course is to design and program computationally intensive applications using parallel design patterns and the multi-threading libraries OpenMP and Boost.Thread. We apply task and data decomposition techniques to help discover parallel design patterns and we then implement them in C++. Another goal is to improve and update the GOF (Gamma) design patterns and to implement them using templates and the functionality in Boost.

What do you learn?

This programming course (percentage theory/practice is approximately 60%-40%) for software developers and designers who wish to design and implement parallel software systems using the OpenMP and Boost.Thread. The focus is on applying the new generation of generic and parallel design patterns to software development. In particular, you learn the following core techniques:

  • Upgrading GOF patterns: which patterns are more suitable using templates?
  • Foundations of multi-threading programming in Boost.Thread and OpenMP
  • Using Boost libraries that directly support design patterns
  • The catalog of multi-threaded patterns (Mattson, POSA) and how to apply them
  • Writing parallel software using patterns and multi-threading libraries

In short, this course answers the following questions:

  • Which patterns are suitable/optimal for my problem?
  • What is the applicability of a given pattern? What is it good for?
  • Should I use Boost.Thread or OpenMP (or even combine them)?
  • Debugging and troubleshooting parallel software

This course replaces the course C++ and Design Patterns that we supported until 2010.


Click here for coursecontents.

We assume that you have a good working knowledge of C++.
Who should attend?
This course is for software developers and designers who write C++ code for computationally intensive applications and who wish to avail of modern multi-core and multi-processor CPUs to improve the speedup and responsiveness of these applications. The course uses the latest developments in parallel and generic programming models in C++.

Programming Generic and Parallel Design Patterns in C++

Fill in your personal details