-   Forums
     -   Articles and Whitepapers
     -   Downloads
     -   Courses and Events
     -   Course Registration
     -   Distance learning
     -   Courses for Universities
     -   Books
     -   Audios and Demos
     -   Testimonials

Share this page:  Tweet


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

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 (Publisher-Subscriber) pattern
  • Event management with minimal inter-object 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 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
  • Using static_visitor
  • Avoiding type-switching for variant data

Any

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

Interval

  • 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

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
  • User-defined 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: Multi-threading 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
  • 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 and registration

Course duration: 3 days.
Course price: € 1995.-- ex. VAT.
€ 2413.95 inc. 21% VAT.
Dates and location: (click on dates to print registration form)


Date(s) Location Price Language
No dates yet.

This course can be organised on-demand. Call Datasim (+31-72-2204802) or for more information about the possibilities.



Share this page:  Tweet