Daniel J. Duffy started the company Datasim in 1987
The goal of this three-day hands-on programming course is to introduce the most important syntax and new features in C++11/C++14. We also discuss the migration from C++98 to C++11/C++14 including deprecated C++98 features, improved features as well as new functionality. We show how to use the new syntax, first by taking motivational and easy to understand examples and then progressing to more extended cases that use advanced C++ functionality and libraries. We concentrate on the functionality that promotes developer productivity, code robustness and maintainability. The percentage theory/practice is approximately 50/50 percent.
After having completed this course you will have learned the most important syntax and functionality in C++11/C++14 and be able to use it in applications. The course Advanced C++11 and C++14 (code CPPA-11) builds on and extends this course.
- What’s new in C++11; deprecated features in C++98.
- New and improved fundamental syntax and language features.
- Introduction to functional programming and lambda functions in C++.
- New data types, containers and algorithms (STL).
- Improved and extended templates.
- Libraries (Regex, random numbers, std::bind)
- Introduction to C++ Concurrency (threads and tasks).
- Learn C++11 essentials in an easy to follow, step-by-step manner.
- Apply new skills to your applications.
- Access to full source code in the book.
- Exercises and mini-projects to consolidate the skills learned.
- Learn modern multiparadigm programming styles in C++.
For whom is this Course?
C++ programmers who develop applications in C++98. No previous knowledge of C++11 is necessary. Please note that we will not be reviewing C++98 syntax.
If you are interested in taking this course (in original or customised form) please contact us at email@example.com
What do you receive?
Course slides and full source code related to the course.
- Advanced C++11 and C++14 (code CPPA-11)
- Advanced System Design and Software Design Patterns (DESA)
Part I Background
- Stability and compatibility with C++98
- Increase type safety
- Increase performance
- Make C++ easy to learn
- Core language usability enhancements
- Core language functionality enhancements
- C++ Standard Library changes
- Multithreaded memory model
- Removed and deprecated features
II Fundamentals and Essential Language Features
New Language Features
- Uniform initialization and initializer lists
- Default template parameters
- Function declaration syntax
- New fundamental data types
- What is move?
- Copying versus moving: performance
- Rvalue references
- Move constructor and move assignment operator
- Rule-of-Three and Rule-of-Five
Memory Management and Smart Pointers
- Design rationale
- Class shared_ptr
- Destruction policies
- Class weak_ptr
- Class unique_ptr
Using Smart Pointers
- Smart pointers versus raw pointers
- Classes with embedded pointers
- Reengineering legacy code and software design patterns
- Move semantics with shared pointers
Bits and Pieces: Usability Enhancements
- Type alias (alias template)
- Automatic type deduction and auto specifier
- Range-based for loops
- New fundamental data types
III Data Types and Data Containers
- Unrestricted unions
- Timepoint and clock
- std::forward_listForward list
- Fixed-sized array std::array<>
- std::pair<> and std::tuple<>
- Exception classes
Applications of Basic Containers
- Tuples as function return types and input arguments
- Fixed-sized matrices based on std::array<>
- Using tuples to hold configuration data; tuple nesting
IV C++ Classes and Class Modelling
New Class-related Functionality
- explicit specifier
- Deleted and defaulted member functions (delete, default)
- Generalised constant expressions (constexpr)
- override and final
- Uniform initialization
- Template declaration
- Implementing the member functions
- Using the template class
- Default template arguments
- std::decltype and std::declval
- What is a function template?
- Defining the template
- Using the template
- Argument deduction
- Overloading function templates
- Advanced Template Programming
- Partial specialization
- Nested template classes (for example, 1:N aggregations)
- Traits and policy classes
- Template template parameters
V The C++ Function Panorama
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
- What is a lambda function?
- The closure of a lambda function
- Using lambda functions with auto
- The mutable keyword
A Taxonomy of Functions in C++
- Callable objects
- Function pointers and free functions
- Object and static member functions
- Function objects
- Lambda functions
- Using std::function as universal function type
- std::function and its target methods
- Using lambda functions to configure applications
- std::function as an alternative to virtual functions
- Random number generator
Daniel J. Duffy started the company Datasim in 1987 to promote C++ as a new object-oriented language for developing applications in the roles of developer, architect and requirements analyst to help clients design and analyse software systems for Computer Aided Design (CAD), process control and hardware-software systems, logistics, holography (optical technology) and computational finance. He used a combination of top-down functional decomposition and bottom-up object-oriented programming techniques to create stable and extendible applications (for a discussion, see Duffy 2004 where we have grouped applications into domain categories). Previous to Datasim he worked on engineering applications in oil and gas and semiconductor industries using a range of numerical methods (for example, the finite element method (FEM)) on mainframe and mini-computers.
Daniel Duffy has BA (Mod), MSc and PhD degrees in pure and applied mathematics and has been active in promoting partial differential equation (PDE) and finite difference methods (FDM) for applications in computational finance. He was responsible for the introduction of the Fractional Step (Soviet Splitting) method and the Alternating Direction Explicit (ADE) method in computational finance.
He is also the originator of two very popular C++ online courses (both C++98 and C++11/14) on www.quantnet.com in cooperation with Quantnet LLC and Baruch College (CUNY), NYC. He also trains developers and designers around the world. He can be contacted firstname.lastname@example.org information and course venues, in-company course and course dates.
|Date from||Date to||Location||Price (excl. VAT)|
|Tuesday 5 June 2018||Friday 8 June 2018||Amsterdam||EUR 1840.00|