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



Follow datasim on Twitter

Share this page

COURSE DETAILS
C++ Training




Course Category: 
Course: 


Advanced C++ and C++ 11/C++ 14 The new Standard  - (code CPP-A)

The goal of this 3-day hands-on course is to discuss new developments in C++ 11 and how C++ 11 is a major improvement on C++ 98. We also discuss the applications of C++ 11 to multi-paradigm software design. We realise this goal by elaborating the new features in detail and providing examples of use.

C++ 11 is a major advancement in the evolution of C+ + and this course covers the features in the latest revision.

The percentage theory/practice is approximately 70% / 30%.

Subjects Covered

  • C++ 11 as a better C++. Improved syntax.
  • Move semantics.
  • Smart memory management.
  • Modelling functions, new style. Functional programming and lambda functions.
  • Hashing and unordered containers.
  • Concurrency and multi-threading.
  • Other C++ 11 libraries.
  • C++ 14 overview.

What do you learn?

We discuss the most important C++ features to help the developer create robust and flexible software, for example by means of:

  • Applying the extensive language features in C++ 11 to your applications.
  • Creating flexible multi-paradigm applications.
  • Reduce reinvention of the wheel by using C++ libraries.
  • Fast data structures (unordered containers).
  • Tips and guidelines for migrating to next generation design patterns and component-based design.

Your Trainer

Daniel J. Duffy has been involved with C++ in the role of programmer, designer and trainer since 1989. He has been involved in a wide range of applications such as computer graphics, holography, process control, numerical analysis and computational finance. Activities also entail setting up C++ and Boost C++ courses from novice to expert level. He is author of ten books on software design, C++ and applications.

Daniel J. Duffy has a PhD in Mathematics from Dublin University (Trinity College).

Course updated September 2015


Course contents

Part I C++ 11 as a 'better' C++

New Language Features, I Keywords

  • auto
  • decltype
  • noexcept
  • constexpr
  • nullptr

New Language Features, II

  • Uniform initialization and initializer lists
  • Default template parameters
  • Function declaration syntax
  • New fundamental data types

Move Semantics

  • What is move?
  • Copying versus moving: performance
  • Rvalue references
  • Move constructor and move assignment

Using Move

  • Arrays and containers
  • File streams
  • User-defined copyable and movable classes
  • Composition and inheritance
  • Perfect forwarding

Exception Handling

  • Exception class hierarchy
  • Logic and run-time errors
  • Exceptions thrown by the Standard Library
  • Error codes compared to error conditions

Smart Pointers and Memory Management

  • Design rationale
  • Class shared_ptr
  • Destruction policies
  • Class weak_ptr
  • Class unique_ptr
  • Performance and reliability

Variadics

  • Variadic templates
  • Variadic tuples
  • Applications of variadics

Part II Modelling Functions and STL

Background, Traditional

  • Approach Function pointers
  • Function overloading and virtual functions
  • The categories of polymorphic behaviour
  • Using (and misusing) inheritance to realise subtype polymorphism

Fundamentals of Functional Programming (FP)

  • Short history of FP
  • Higher-order functions
  • Recursion; passing a function to itself
  • Strict and non-strict (delayed) evaluation
  • Pure functions and lambda functions

Functional Programming

  • Functions and Data
  • Function composition
  • Closures
  • Currying and uncurrying
  • Fold and continuations

Functional Programming in C++

  • Overview C++ as a multi-paradigm programming language
  • Universal function type (polymorphic) wrappers (std::function)
  • Binders and predefined function objects (std::bind)
  • Lambda functions versus binders
  • A uniform function framework

Lambda Functions

  • What is a lambda functions
  • The closure of a lambda function: closure
  • Using lambda functions with auto
  • The mutable keyword

Using Lambda Functions

  • Configuring applications
  • With algorithms
  • As sorting criteria
  • As hash function
  • Lambda functions versus function objects

A Taxonomy of Functions in C++

  • Function pointers and free functions
  • Object and static member functions
  • Function objects
  • Lambda functions
  • Events and signals (Boost signals2 library)

Part III Data Structures and STL

Review of STL Containers

  • Sequence containers
  • Associative containers
  • Unordered containers
  • Container adapters
  • User-defined containers

Hashing

  • Hash function and hash table
  • Categories of hash function
  • Creating custom hash
  • Applications

Boost and STL Heap

  • Heap ADT
  • Variants (Fibonacci, skew, priority queue, etc.)
  • Heap and computational efficiency
  • Boost Heap versus STL heap

Unordered Containers

  • Differences with (ordered) associative containers
  • Abilities of unordered containers
  • Complexity analysis
  • Integration with STL and other Boost libraries
  • The Bucket interface

Tuples

  • 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

Fixed-sized Arrays std:array<>

  • Why do we need std:array<> ?
  • Operations and abilities
  • Using arrays as C-Style arrays
  • Combining arrays and tuples

Part IV Other Libraries

Clocks and Timers

  • Overview of Chrono library
  • Duration and timepoint
  • Clocks
  • Date and time functions

Regular Expressions (Regex)

  • Regex Match and Search Interface
  • Subexpressions
  • Regex iterators and token iterators
  • Replacing regular expressions
  • Flags and expressions

Random Numbers and Statistical Distributions

  • What are random and pseudo-random numbers?
  • Engines and distributions in C++
  • Basic engines, engine adapters; adapters with predefined parameters
  • Categories of distributions
  • Examples and applications

Concurrency Fundamentals

  • Threads in C++; properties
  • Promises and return arguments
  • Threads in detail
  • Mutexes and locks

Advanced Concurrency

  • Synchronisation and condition variables
  • Futures and async()
  • Launch policies
  • Waiting and polling
  • Example: Producer-Consumer pattern
  • Atomics

Part V C++ 11 Application Design

Advanced Templates

  • Partial specialization
  • Dynamic versus static polymorphism
  • Generic programming
  • Variadic templates
  • Alias templates (template typedef)
  • Generic lambda functions

Using C++ 11 in Applications: Epilogue

  • Design patterns revisited and reengineered
  • Multi-paradigm design in C++
  • Software layering
  • Software components
  • Software assembly process
  • Multiparadigm software development

C++ 14

  • Minor bug fixes and enhancements
  • Generic lambdas and lambda captures expressions
  • Function return type deduction for all kinds of function
  • Aggregate member initialization
  • New standard library features< /LI>< /UL>

Prerequisites
This intensive and advanced course assumes real-life experience of C++ in a production environment. This is not a beginner's course. Basic C++ 11 assured.

Who should attend?

Experienced software developers and programmers who wish to learn the new powerful features in C++ and apply them to their work.

This course is also useful for technical designers and architects.


Course form

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

Date Location Price Language
17, 18, 19 october 2016 Hotel Mercure, Nieuwegein Euro 1495.-- Dutch
7, 8, 9 february 2017 Hotel Mercure, Nieuwegein Euro 1495.-- Dutch

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.

Follow-up courses

Share this page

Contact and Profile
Registration form
Course Dates