fbpx
  • nl
  • en

Cursus Modern C++ Programmeren

Cursus Modern C++ Programmeren
Regio:
  • Modules
  • Cursus
  • Inhoud
  • Algemene informatie
    Algemeen
  • Reviews
  • Module 1 : Modern C++ Features

    Module 2 : References and Move Semantics

    Module 3 : Classes and Inheritance

    C++ Timeline
    C++11 Features
    Type Inference
    Auto Keyword
    Deduction with decltype
    Deducing return Types
    Uniform Initialization
    Initializer Lists
    Range Based for Loop
    Null Pointer Constant
    constexpr Keyword
    Static Asserts
    Lambda Functions
    Lambda Syntax
    Strongly Types Enums
    User Defined Literals
    Raw String Literals
    Reference Initialization
    References and Pointers
    Rvalues and Rvalues in C++
    Passing and Returning References
    Returning lvalue
    Returning Reference to Global
    Rvalue References
    Comparing Reference Types
    Rvalue Reference Usage
    Assignment Operator
    Copy Constructor
    Passing and Returning Objects
    Passing References to Objects
    Move Constructor
    Move Semantics
    Move Assignment Operator
    Golden Rule of 5
    default Keyword
    delete Keyword
    Delegating Constructors
    Inheritance
    Inheriting Members
    Calling Base Class Constructors
    Multiple Inheritance
    Virtual Derivation
    Polymorphism
    Virtual Functions
    Virtual Function Table
    Abstract Classes
    Interfaces in C++
    Destructors and Inheritance
    Virtual Destructors
    override Specifier
    final Specifier

    Module 4 : Smart Pointers

    Module 5 : Operator Overloading

    Module 6 : Templates

    unique_ptr
    Using unique_ptr
    Specialization for Arrays
    Replacement for std::auto_ptr
    std::make_unique
    shared _ptr Pointer
    Control Block
    shared_ptr Destruction Policy
    shared_ptr Interface
    Cyclic References
    std::enable_shared_from_this 
    weak_ptr
    Using Smart Pointers
    Operator Overloading
    Syntax Operator Overloading
    Overloading Numeric Types
    Overloading Overview
    Overloading Restrictions
    When not to Overload
    Operators as Class Members
    Operators as Friend Functions
    Overloading Stream Operators
    Overloading ostream
    Overloading istream
    Overloading Unary Operators
    Overloading Binary Operators
    What are Templates?
    Template Functions
    Template Specialization
    Template Parameter List
    Inclusion Compilation Model
    Class Templates
    Template Member Functions
    Template Parameter Scope
    Templates and Statics
    Templates and Friends
    Recursive Analogy
    Alias Templates
    Perfect Forwarding

    Module 7 : Exception Handling

    Module 8 : Multiple Threads

    Module 9 : Synchronization

    Error Conditions and Exceptions
    Exception Handling Process
    Class Objects as Exceptions
    Parameter Catch Block
    Exception Hierarchy
    Catching in Hierarchy
    Golden Rule
    Retrowing Exceptions
    noexcept Specifier
    Preventing Resource Leaks
    RAII Idiom
    C++ Standard Exceptions
    User Defined Exceptions
    Exception Handling Costs
    Multiple Threads
    Benefits and Drawbacks
    Thread Charactistics
    Thread Class
    Simple Threads
    Joining Threads
    Detaching Threads
    Thread ID
    Callables
    Passing Parameters
    Pass by Reference
    Pass by std::ref and std::move
    Member Function as Thread
    Thread Local Storage
    Data Corruption and Synchronization
    Lock Guard
    Automatic Lock Management
    Mutex and RAII
    Recursive Locking
    Timed Locking
    Atomic Types
    Call Once
    Event Handling
    Condition Variables
    Wait and Notify
    Promises and Futures
    Asynchronous Tasks
    Working with async

    Module 10 : C++14 and C++17 Features

    Module 11 : Standard Template Library

    Init-statement for if
    Selection Initialization
    Structured Binding Types
    Structured Binding Declarations
    const if Expressions
    Guaranteed Copy Elision
    Inline Variables
    Nested Namespaces
    Fold Expressions
    Fold Expression Variations
    Optional Type
    Small String Allocations
    String View
    Generic lambdas
    Binary literals
    Aggregate initialization
    STL Core Components
    Containers, Algorithms and Iterators
    Container classification
    Vectors, Lists and Dequeues
    Adapters
    Associative Containers
    Maps and Hash Maps
    Strings
    Bitsets
    STL Iterators
    Reverse iterators
    Iostream iterators
    Function objects
    STL Algorithms
    Predicates and Comparators
    STL Allocators
  • Doelgroep Cursus Modern C++ Programmeren

    Cursus Modern C++ ProgrammerenDe cursus Modern C++ Programmeren is bedoeld voor developers die bekend zijn met C++ maar die zich willen verdiepen in de nieuwste en meest geavanceerde technieken en mogelijkheden van de taal.

    Voorkennis Cursus Modern C++

    Om aan deze cursus deel te nemen is kennis van de basis concepten van C++ en ervaring met programmeren in C++ vereist.

    Uitvoering Training Modern C++

    De theorie wordt behandeld aan de hand van presentaties. Illustratieve demo's worden gebruikt om de behandelde concepten te verhelderen. Er is een sterke afwisseling van theorie en praktijk en ruime gelegenheid om te oefenen. De cursustijden zijn van 9.30 tot 16.30.

    Officieel Certificaat Modern C++

    De deelnemers krijgen na het goed doorlopen van de cursus een officieel certificaat Modern C++ Programmeren.

  • Cursus Modern C++ Programmeren

    In de cursus Modern C++ komen de nieuwe en geavanceerde aspecten van de C++ taal gebaseerd op de standaarden C++11, C++14 en C++17 ruimschoots aan de orde. De cursus gaat van start met een overzicht van de features die in C++11 zijn geintroduceerd zoals type inference, initializer lists, range based for loop, lambda functies en strongly typed enums. Vervolgens wordt ingegaan op right references en de performance winsten die geboekt kunnen worden door move constructors naast copy constructors te gebruiken. Ook de nieuwe mogelijkheden met betrekking tot inheritance met de keywords default, delete, override en final komen aanbod. En passant wordt ingegaan op de implementatie van virtual functions en de noodzaak van virtual destructors. Daarnaast wordt in detail gekeken naar smart pointers en hierbij komen unique pointers, shared pointers en weak pointers aan de orde. Ook operator overloading en templates staan op het programma, waarbij ingegaan wordt op variadic templates en perfect forwarding. Het modern C++ Resource Acquisition is Initialization ofwel RAII idioom komt aan de orde bij de bespreking van exception handling. Threads evenals de synchronisatie tussen threads zijn onderdeel van de standaard en worden besproken. Hierbij wordt ook ingegaan op asynchrone calls met promises en futures. Vervolgens komen specifieke C++11 en C++17 features aan bod zoals optional types, structured binding declarations en constructies uit de wereld van functioneel programmeren zoals fold expressions. De cursus wordt afgesloten met een overzicht van de geavanceerde mogelijkheden van de Standard Template Library STL.

  • Cursusvorm

    Al onze cursussen zijn klassikale cursussen waarbij de cursisten aan de hand van een ervaren trainer met diepgaande materie kennis door de stof worden geleid. Theorie wordt steeds afgewisseld met oefeningen.

    Maatwerk

    We doen ook maatwerk  en passen dan de cursusinhoud aan op uw wensen. Op verzoek gaan we ook in op uw praktijkcases.

    Cursustijden

    De cursustijden zijn in pricipe van 9.30 tot 16.30. Maar we zijn hierin flexibel. Soms moeten mensen namelijk kinderen naar de opvang brengen of halen en komen andere tijden hun beter uit. In goed overleg kunnen we dan andere cursustijden afspreken.

    Hardware

    Wij zorgen voor de computers waarop de cursus gehouden kan worden. Op deze computer is de voor de cursus benodigde software al geinstalleerd. U hoeft geen laptop mee te nemen om aan de cursus te kunnen deelnemen. Als u liever op uw eigen laptop werkt kunt u hem desgewenst meenemen. De benodigde software wordt dan aan het begin van de cursus geinstalleerd.

    Software

    Onze cursussen worden over het algemeen gegeven met Open Source software zoals Eclipse, IntelliJ, Tomcat, Pycharm, Anaconda en Netbeans. Het digitale cursusmateriaal krijgt u na de cursus mee naar huis.

    Lunch

    De cursus is inclusief lunch die we in een restaurantje op loopafstand van het cursuslokaal gebruiken.

    Locaties

    De cursussen worden op diverse plaatsen in het land gepland. Een cursus gaat op een locatie door als er zich minimaal 3 mensen voor die locatie inschrijven. Als er inschrijvingen voor verschillende locaties zijn gaat de cursus door op onze hoofdlocatie is Houten net onder Utrecht. Een cursus op onze hoofdlocatie gaat ook door bij 2 inschrijvingen en regelmatig ook bij 1 inschrijving.  Overigens doen we ook cursussen op de locatie van de klant als men daar prijs op stelt.