Modern C++ Design Patterns

Design patterns have proven to be useful over several decades and knowledge about them is still very useful to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, think about design and implement solutions. This workshop explores modern C++ design and the modern forms of the classical design patterns. It will provide a deeper understanding of software design in general and design patterns in particular. It will give advice on how to decouple software systems and teach guidelines, idioms and best practices for sustainable and maintainable design. Amongst others it will answer the following questions: - How does good C++ design with a minimum of dependencies look like? - What are the most important rules for robust, maintainable, and sustainable design? - What are the most common pitfalls in C++ software design? - Why does classical C++ design based on inheritance hierarchies fail so often? - What is "Value Semantics"? - How are the classical design patterns realised in modern C++? - What are alternatives to the classical design patterns? - Which tools are available to support good C++ design?

    This workshop explores modern C++ design and the modern forms of the classical design patterns. It will provide a deeper understanding of software design in general and design patterns in particular. It will give advice on how to decouple software systems and teach guidelines, idioms and best practices for sustainable and maintainable design. Amongst others it will answer the following questions:

    • How does good C++ design with a minimum of dependencies look like
    • What are the most important rules for robust, maintainable, and sustainable design?
    • What are the most common pitfalls in C++ software design?
    • Why does classical C++ design based on inheritance hierarchies fail so often?
    • What is "Value Semantics"?
    • How are the classical design patterns realised in modern C++?
    • What are alternatives to the classical design patterns?
    • Which tools are available to support good C++ design?

    Prerequisites
    Participants are required to have at least two to three years of C++ experience. The course expects that all participants are familiar with the syntax of the language and have used inheritance and templates before.

    Computer Setup
    You will need a laptop with an IDE/editor of your choice and any compiler capable of at least C++14 (GCC, Clang, MSVC, ...) Please note that some programming tasks will require C++20 to compile.

    Klaus Iglberger
    C++ Trainer/Consultant

    Klaus Iglberger is a freelancing C++ trainer and consultant. He has finished his PhD in computer science in 2010 and since then is focused on large-scale C++ software design. He shares his experience in popular advanced C++ courses around the world (mainly in Germany, but also the EU and US). Additionally, he is the initiator and lead designer of the Blaze C++ math library (https://bitbucket.org/blaze-lib/blaze/src/master/) and a (co-)organizer of the Munich C++ user group (https://www.meetup.com/MUCplusplus/).

    NDC Conferences uses cookies to see how you use our website. We also have embeds from YouTube and Vimeo. How do you feel about that?