Go to the Datasim Education BV homepage Datasim Education BV Datasim Education BV Datasim Education BV Datasim Education BV Datasim Education BV
Information request

Follow datasim on Twitter

Share this page

Boost Training

Course Category: 

The Boost C++ Library  - (code CPP-BOOST)
The goal of this unique 3-day hands on course is to discuss the most important libraries in the Boost library suite. Boost is a de-facto standard and a number of its libraries will be part of the new C++ standard. The main advantage for developers is that it contains functionality that can be used directly in applications without the need to reinvent the wheel. The course discusses each library in detail, from the fundamental syntax, numerous examples to show how to use the library and how to integrate the library in applications. We classify the libraries in the course as follows:
  • Higher order functions
  • Data types
  • Text and string processing 
  • Data structures
  • Mathematics and Statistics
  • Utilities and miscellaneous libraries

The percentage theory/practice is approximately 70/30. We also provide the students with source code and extended library documentation.

You also receive a copy of the book "Introduction to the C++ Class Libraries - Volume I" by Robert Demming and Daniel J. Duffy, published by Datasim Press. This is the first textbook that discusses 30 of the most important libraries in Boost and we also provide full working source code for all the examples in the book.

What do you learn in this course?

In this course you get a detailed overview of the most important Boost libraries and how to use them in practical projects:

  • Essential libraries and 'nice to have' libraries
  • Integrating Boost libraries with your applications
  • Hands-on experience with library code
  • Reengineering legacy code to Boost

The benefits of attending this course for the student are:

  • Learn and use essential syntax of 30 Boost libraries
  • Kick start software development using Boost
  • Knowing which libraries to use in a given context
  • Use the book and full source code as resource after course end
  • Learn from experienced trainers

Your trainer

Dr. Daniel Duffy has been working in software application development since 1979 in projects for heat flow and fluid dynamics, computer graphics and Computer Aided Design (CAD), simulation and optimisation and computational finance. He has been working with C++ since 1989 and is the author of 7 books on C++ and its applications. Daniel Duffy has a PhD in numerical analysis from Trinity College, Dublin.


Course contents updated October 2010

Course contents

Category: Function Objects and Higher-Order Programming


  • Generalised callback mechanisms
  • Storage and invocation of functors, (member) function pointers
  • Applications to notification patterns (Observer, Signals and Slots)
  • Example: separating GUIs from business logic


  • Generalising and improving the STL Bind
  • Uniform syntax for functors, (member) function pointers
  • Functional composition and nested binders
  • Bind and in Boost.Function combined

Signals and Slots

  • Implementation of Observer (Publisher-Subscriber) pattern
  • Event management with minimal inter-object dependencies
  • Signals == Subject, Slots == Subscriber
  • Slot groups


  • Unnamed functions
  • Using Lambda in STL algorithms
  • Avoiding creation of many small function objects
  • Less code: write function at location where it is needed


  • Phoenix architecture
  • Actors and arguments
  • Function operator
  • Other components in Phoenix

Category: Data Types


  • Modelling n-tuples (pair is a 2-tuple)
  • Using tuples as function arguments and return types
  • Acce ssing the elements of a tuple
  • Advantages and applications of tuples


  • Creating discriminated unions with heterogeneous types
  • Manipulating several distinct types in a uniform manner
  • Type-safe visitation
  • Using static_visitor
  • Avoiding type-switching for variant data


  • Value-based variant types
  • Discriminated types
  • Typesafe storage and retrieval
  • Applications of Any


  • Interval arithmetic
  • Modelling round-off errors explicitly
  • Applications to numerical analysis
  • Quantifying the propagation of rounding errors

Other Data Types

  • Integer
  • Rational
  • Parameter

Category: String and Text Processing


  • Regular expressions and pattern matching
  • Processing large and inexact strings
  • Regex and callbacks
  • Exception handling
  • Emulating functionality as in Perl, awk, sed

String Algorithm

  • Trimming and conversion
  • Find and replace
  • Find iterator
  • Join and split


  • Separating character sequences into tokens
  • Finding data in delimited text streams
  • User-defined delimiters


  • Dynamic regular expressions
  • Mixing static and dynamic regular expressions
  • Semantic actions and user assertions
  • Applications

Category: Data Structures

Date and Time

  • Gregorian, Posix and local time
  • Temporal types
  • Calculating with dates and times
  • Applications of DateTime

Graph Library (BGL)

  • Overview of library: data structures and algorithms
  • Graph's generic components
  • Graph algorithms


  • MultiArray components; construction and assignment
  • Array view type generators
  • Specifying array dimensions
  • Accessing elements
  • Creating views
  • Storage ordering

Category: Mathematics and Statistics

Math/Special Functions

  • Gamma, beta, error functions
  • Bessel functions
  • Factorials and binomial coefficients
  • Other functions

Math/Statistical Distributions

  • Continuous and discrete univariate statistical distributions
  • Density functions
  • Properties (skewness, quantile, mode, mean etc.)

Random Number Library

  • Concepts
  • Random number variate generators
  • Random number library distributions
  • variate_generator
  • Applications

uBLAS (Basic Linear Algebra System)

  • Other Math
  • Brent's method
  • Math Common Factor
  • Quaternion and Octonion

Category: Utilities and other Libraries

Memory and Smart Pointers

  • Conversions
  • Polymorphic casts and downcast
  • Numeric casts
  • Lexical casts


  • Portable manipulation of paths, directories and files
  • Defining functionality as in scripting languages
  • Platform portability


  • Saving arbitrary data to an archive (e.g. XML)
  • Restoring data from an archive
  • Separate load and save actions
  • Versioning

Other Libraries

  • Program options
  • Test
  • Flyweight
  • Lexical Cast
  • Program Options
  • Concept Check
  • Functional Hash

Category: Multi-threading and Networking


  • Modelling portable lightweight processes
  • Threading primitives
  • Higher-level abstractions
  • Thread groups and thread arrays


  • C++ implementation of UML Statechart method
  • Hierarchical and orthogonal states
  • Transitions and actions
  • Applications
  • Introduction to Meta State Machine

Introduction to Asio

  • Core Concepts
  • Concurrency and patterns
  • Socket IOstreams
  • BSD Socket API


  • Measuring elapsed time
  • Reporting progress for programmer tests
  • Asio timers

Knowledge of C++ and its syntax, in particular templates as discussed in Datasim's C++ Fundamentals course for example. We also assume that the students have a reasonable working knowledge of STL.

Who should attend?
C++ developers and designers who wish to get a fast understanding of the Boost libraries. This course is also of interest to software designers and architects who wish to gain an appreciation of how their designs can be implemented in C++ using Boost.

Duration, price, date, locations
Course duration 3 days
Price Euro 1475.-- ex. VAT
Euro 1784.75 inc. 21% VAT
Date and location Dates available on request

For courses given at a location other than the Datasim office in Amsterdam, you will need to bring your own laptop with a C++ compiler like Visual C++.

It is also possible to organize this course at your company premises (the in-company option). If you have any question, please contact our Datasim office.

Share this page

Contact and Profile
Registration form
Course Dates