COURSE
DETAILS
Boost Training




The Boost C++ Library
 (code CPPBOOST)


The goal of this unique 3day hands on course is to discuss the most
important libraries in the Boost library suite. Boost is a defacto
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
 Handson 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 HigherOrder
Programming
Function
 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
Bind
 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 (PublisherSubscriber)
pattern
 Event management with minimal interobject dependencies
 Signals == Subject, Slots == Subscriber
 Slot groups
Lambda
 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
 Phoenix architecture
 Actors and arguments
 Function operator
 Other components in Phoenix
Category: Data Types
Tuple
 Modelling ntuples (pair is a 2tuple)
 Using tuples as function arguments and return types
 Acce ssing 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
 Typesafe visitation
 Using static_visitor
 Avoiding typeswitching for variant data
Any
 Valuebased variant types
 Discriminated types
 Typesafe storage and retrieval
 Applications of Any
Interval
 Interval arithmetic
 Modelling roundoff errors explicitly
 Applications to numerical analysis
 Quantifying 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
 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
Tokenizer
 Separating character sequences into tokens
 Finding data in delimited text streams
 Userdefined delimiters
Xpressive
 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
 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
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
 Separate load and save actions
 Versioning
Other Libraries
 Program options
 Test
 Flyweight
 Lexical Cast
 Program Options
 Concept Check
 Functional Hash
Category: Multithreading and Networking
Thread
 Modelling portable lightweight processes
 Threading primitives
 Higherlevel abstractions
 Thread groups and thread arrays
Statecharts
 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
 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 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


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 incompany option). If you
have any question, please contact our Datasim office.
