|
COURSE
DETAILS
Boost Training
|
|
|
|
|
|
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)
|
|
|
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.
|