Go to the Datasim Education BV homepage Datasim Education BV Datasim Education BV Datasim Education BV Datasim Education BV Datasim Education BV
Courses
Books
Downloads
Information request
Forum


COURSE DETAILS
Boost Training




Course Category: 
Course: 


The Boost C++ Library  - (code CPP-BOOST)

The goal of this 3-day hands on course is to discuss the most important (approximately 46) libraries in the Boost library suite. This suite 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, allowing developers to concentrate on application software development. The course discusses each library in detail, from the fundamental syntax of each library, numerous examples to show how to use the library and how to integrate the library in applications. We classify the libraries in the course according to the following categories:

  • Higher order functions
  • Data types
  • Text and string processing 
  • Data structures
  • Mathematics and Statistics
  • Utilities and miscellaneous libraries

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

What do you learn in this course?

In this unique hands-on 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

 

Course contents updated January 2010


Course contents

Category: Function Objects and Higher-Order Programming

Function

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

Bind

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

Signals and Slots

  • Implementation of Observer (Publisher-Subscriber) pattern
  • Event management with minimal inter-object dependencies
  • Signals == Subject, Slots == Subscriber
  • Slot groups
  • Can extend to use it in Mediator pattern

Lambda

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


Category: Data Types

Tuple

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

Variant

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

Any

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

Interval

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

Other Data Types

  • Integer
  • Rational
  • Parameter

Category: String and Text Processing

Regex

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

String Algorithm

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

Tokenizer

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

Xpressive

  • Dynamic regular expressions
  • Mixing static and dynamic regular expressions
  • Applications

Category: Data Structures

Date Time

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

Graph Library

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

MultiArray

  • 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
  • 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

Filesystem

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

Serialisation

  • Saving arbitrary data to an archive (e.g. XML)
  • Restoring data from an archive
  • Versioning

Other Libraries

  • Program options
  • Test
  • Flyweight
  • Lexical Cast
  • Program Options

Category: Multithreading and Networking

Thread

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

Statecharts

  • C++ implementation of UML Statechart method
  • Hierarchical and orthogonal states
  • Transitions and actions
  • Applications

Asio

  • Core Concepts
  • Concurrency and patterns
  • Socket IOstreams
  • TCP, UDP, ICMOP
  • BSD Socket API

Timer

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

Prerequisites
Knowledge of C++ and its syntax, in particular templates as discussed in Datasim's C++ Fundamentals course.

Who should attend?

C++ developers and designers who wish to get a fast understanding of the Boost library. 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++.


Duration, price, date, locations
Course duration 3 days
Dates and locations (click on date to print registration form)

Date Location Price Language
10, 11, 12 may 2010 Datasim, Amsterdam Euro 1475.-- Dutch
4, 5, 6 october 2010 Eindhoven Euro 1475.-- Dutch

Attention:
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.

Contact and Profile
Registration form
Course Dates