Skip to Content
C++20 Fundamentals with Paul Deitel
on-demand course

C++20 Fundamentals with Paul Deitel

with Paul J. Deitel
June 2024
Intermediate
53h 55m
English
Pearson
Closed Captioning available in German, English, Spanish, French, Italian, Japanese, Korean, Portuguese (Portugal, Brazil), Chinese (Simplified), Chinese (Traditional)

Overview

54 hours of video instruction. Includes Modern C++ — C++20, C++17, C++14 and C++11 — with a look toward C++23 and C++26.

Overview:

C++20 Fundamentals with Paul Deitel is a code-intensive presentation of C++, the world’s most popular language for building high-performance business-critical and mission-critical computing systems.

Description

Intended for programmers with a background in another high-level language, in this video course, you’ll learn Modern C++ development hands-on using C++20 and its “Big Four” features—Ranges, Concepts, Modules and Coroutines. In the context of 200+ hands-on, real-world, Deitel live-code examples, you’ll quickly master Modern C++ coding idioms using popular compilers—Microsoft Visual C++®, GNU® g++ and LLVM®/Clang clang++.

After the C++ fundamentals quick start, you’ll move on to C++ standard library containers array and vector; functional-style programming with C++20 Ranges and Views; strings, files and regular expressions; object-oriented programming with classes, inheritance, runtime polymorphism and static polymorphism; operator overloading, copy/move semantics, RAII and smart pointers; exceptions; standard library containers, iterators and algorithms; templates, C++20 Concepts and metaprogramming; C++20 Modules and large-scale development; and concurrency, parallelism, the C++17 and C++20 parallel standard library algorithms and C++20 Coroutines.

Download the C++20 Fundamentals source code from Paul’s GitHub repository at https://github.com/pdeitel/CPlusPlus20FundamentalsLiveLessons.

Features include:

  • Rich coverage of C++20’s “Big Four”: Ranges, Concepts, Modules and Coroutines
  • Objects-Natural Approach: Use standardlibraries and open-source libraries to build significant applications with minimal code
  • Hundreds of real-world, live-code examples
  • Modern C++: C++20, 17, 14, 11 and a look to C++23
  • Compilers: Visual C++®, GNU®g++, Apple Xcode® Clang, LLVM®/Clang
  • Docker: GNU®GCC, LLVM®/Clang
  • Fundamentals: Control statements, functions, strings, references, pointers, files, exceptions
  • Object-oriented programming: Classes, objects, inheritance, runtime and static polymorphism, operator overloading, copy/move semantics, RAII, smart pointers
  • Functional-style programming: C++20 Ranges and Views, lambda expressions
  • Generic programming: Templates, C++20 Conceptsand metaprogramming
  • C++20 Modules: Large-Scale Development
  • Concurrent programming: Concurrency, multithreading, parallel algorithms, C++20 Coroutines, coroutines support libraries
  • Future: A look forward to Contracts, range-based parallel algorithms, standard library coroutine support and more

About the Instructor:

Paul J. Deitel, CEO and Chief Technical Officer of Deitel & Associates, Inc., is an MIT graduate with 44 years in computing. Paul is one of the world’s most experienced programming-languages trainers, having taught professional courses to software developers at all levels since 1992. He has delivered hundreds of programming courses to industry clients internationally, including SLB (formerly Schlumberger), Cisco, IBM, Siemens, Sun Microsystems (now Oracle), Dell, Fidelity, NASA at the Kennedy Space Center, the National Severe Storm Laboratory, White Sands Missile Range, Rogue Wave Software, Boeing, Puma, iRobot, UCLA Anderson’s Master of Science in Business Analytics (MSBA) and Master of Financial Engineering (MFE) programs, and many more. He is among the world’s best-selling programming-language textbook, professional book, video and interactive multimedia authors. Paul has taught Python, Python Data Science, Java and C++ to over 20,000 students worldwide on O’Reilly Online Learning.

Skill Level:

  • Beginner to Intermediate

What you will learn in Part I (of five parts):

  • [Updated in 2024] Before You Begin — Get the source code; set up your system for C++ development on Windows, MacOS or Linux; get preconfigured Docker containers; Paul’s contact info.
  • [Updated in 2024]Lesson 1 Test-Driving a C++ Application – Compile and run a C++ program using Microsoft Visual C++® (Windows), GNU®g++ (Windows, macOS & Linux), and LLVM®/Clang clang++ (Windows, macOS & Linux).
  • Lesson 2 — Intro to C++ Programming — C++ fundamentals; input/output; fundamental types; arithmetic, equality & relational operators; if statements; using objects of standard library class string.
  • Lesson 3 — Control Statement Part 1if, if...else & nested if...else selection statements; while iteration statement; limitations of the built-in fundamental data types; introduction to the Boost Library and working with super-sized integers.
  • Lesson 4 — Control Statements, Part 2for and dowhile iteration statements; C++20 text formatting; switch multiple-selection statement; selection statements with initializers; break & continue statements; logical operators; high-precision monetary calculations with objects of Boost Multiprecision library classes.
  • Lesson 5 — Functions and an Intro to Function Templates — Custom function definitions; declare functions with function prototypes; key C++ standard library headers; random-number generation for simulation; scoped enums for defining named constants; C++20’s using enum declarations; digit separators for more readable numeric literals; inline functions; references and pass-by-reference; default arguments; overloaded functions; function templates; recursion; scopes of identifiers; encryption/decryption case study.

What you will learn in Part II (of five parts):

  • Lesson 6 — arrays, vectors, Ranges and Functional-Style Programming — C++ standard library class template array; declare, initialize & refer to array elements; range-based for statement; pass arrays to functions; common array manipulations; visualizing array data; sorting; searching; using built-in standard library functions to process arrays; multidimensional arrays; C++20 Ranges & functional-style programming (filter, map, reduce); C++ standard library class template vector.
  • Lesson 7 — (Downplaying) Pointers in Modern C++ — Fundamentals of pointers; pointer declaration/initialization; address-of (&) and indirection (*) pointer operators; pointers vs. references; pass-by-reference with pointers; built-in pointer-based arrays; pointer-based strings; using const with pointers & the data they point to; operator sizeof; pointer expressions & pointer arithmetic; nullptr for pointers to nothing; begin& end library functions; C++ Core Guidelines for avoiding pointers; techniques for avoiding pointers, including C++20’s to_array function and C++20’s class template span for views into built-in arrays, std::arrays & std::vector
  • Lesson 8 — strings, string_views, Text Files, CSV Files and Regex — More string-processing features; numeric conversion functions; string_views (lightweight views of contiguous characters); write & read sequential text files; reading & writing quoted strings; string stream processing; raw string literals; Titanic Dataset Data-Science Case Study: Reading and manipulating CSV files; Regular Expressions Case Study: Searching strings for patterns, validating data and transforming data.

What you will learn in Part III (of five parts):

  • Lesson 9 — Custom Classes – Fundamentals of object-oriented programming; define a custom class and use it to create objects; member functions & data members; data encapsulation with public member functions & private data; constructors for initializing objects; separate a class’s interface & implementation; dot (.) and arrow (->) member-access operators; destructors for “termination housekeeping;” create objects composed of other objects; friend functions & friend classes; this pointer; static data members & member functions; structs for aggregate types; C++20 designated initializers for aggregates.
  • Lesson 10 — Object-Oriented Programming: Inheritance and Runtime Polymorphism — Traditional and modern inheritance idioms; implementation inheritance vs. interface inheritance; base classes & derived classes; runtime polymorphism with virtual functions; override keyword; final on functions & classes; abstract & concrete classes; virtual functions “under the hood”; interfaces & dependency injection.
  • Lesson 11 — Operator Overloading, Copy/Move Semantics and Smart Pointers — Craft valuable custom classes; understand software design issues; string overloaded operators; special member functions; rvalue references, move semantics & moving vs. copying; why you should avoid new and delete; manage dynamic memory with smart pointers; MyArray class; special member functions for copy & move semantics; overloading unary & binary operators; C++20’s three-way comparison operator (<=>, also called the spaceship operator), user-defined conversions, using explicit to prevent implicit conversions.
  • Lesson 12 — Exceptions and a Look Forward to Contracts — Use exception handling for robust business and mission-critical C++ applications; try, catch, throwand the exception handling flow of control; exception safety guarantees and noexcept; stack unwinding & uncaught exceptions; assert macro; failing fast; a look ahead to contracts.

What you will learn in Part IV (of five parts):

  • Lesson 13 — Standard Library Containers and Iterators — How containers relate to C++20 ranges; I/O stream iterators; use iterators to access container elements; vector, list & deque sequence containers; use ostream_iterators with the std::copyand std::ranges::copy algorithms; set, multiset, map & multimap ordered associative containers; ordered vs. unordered associative containers; stack, queueand priority_queue container adaptors; bitset “near container” to manipulate bit flags.
  • Lesson 14 — Standard Library Algorithms — Standard library algorithms; minimum iterator requirements for working with standard library containers & algorithms; lambda expressions that capture local variables; C++20 std::ranges algorithms; C++20 concepts for the C++20 std::ranges algorithms’ minimum iterator requirements; compare C++20 std::ranges algorithms with older common-range standard algorithms; use iterators with algorithms to access & manipulate standard library container elements; customize standard library algorithms with lambdas, function pointers & function objects; use projections to transform objects in a range while processing them with C++20 range algorithms; and use C++20 views and lazy evaluation with C++20 ranges.
  • Lesson 15 — Template, C++20 Concepts and Metaprogramming — Generic programming’s rising importance; creating related custom classes via class templates; compile-time vs. runtime polymorphism; C++20 abbreviated function templates with auto; C++20 templated lambdas; C++20 concepts; constraining template parameters with concepts; overloading function templates based on type requirements; type traits for testing type attributes at compile time; testing concepts at compile-time with static_assert; creating a custom concept-constrained algorithm; rebuild the MyArraycase study as a custom container class template with custom iterators that work with many standard library algorithms; non-type template parameters; default template arguments; variadic templates with any number of parameters; fold expressions for applying an operation to a variadic template; and compile-time template metaprogramming for improving runtime performance and memory consumption.

What you will learn in Part V (of five parts):

  • Lesson 16 — C++20 Modules: Large-Scale Development — Introduction to C++20 modules; motivations for modularity; encapsulation with modules; importing standard library headers as header units; primary interface units; exporting declarations from a module; importing modules to use their exported declarations; separating a module’s interface from its implementation; module partitions; submodules; visibility vs. reachability of declarations; and how modules can reduce translation unit sizes and compilation times.
  • Lesson 17 — Parallel Algorithms and Concurrency: A High-Level View — Standard library parallel algorithms; profiling sequential vs. parallel; execution policies; multithreaded programming; thread states & thread life cycle; launching tasks with std::jthread; producer–consumer relationship; synchronizing access to shared mutable data; mutexes, locks & condition variables; minimizing waits with a circular buffer; cooperatively canceling jthreads; launching tasks with std::async; thread-safe initialization; intro to atomics; coordinating threads with C++20 latches, barriers & semaphores.
  • Lesson 18 — C++20 Coroutines — What coroutines are and how they’re used; co_yield to suspend a generator coroutine and return a result; co_await operator to suspend a coroutine while it waits for a result to become available; co_return to terminate a coroutine and return its result (or control) to its caller; open-sourcegenerator library for creating a generator coroutine with co_yield; open-source concurrencpp library for creating coroutines with co_await and co_return.
  • Lesson 19: Stream I/O & C++20 Text formatting — Understand legacy object-oriented stream I/O; character I/O; high-performance unformatted I/O; stream manipulators for octal and hexadecimal integer formats; scientific and fixed-point floating-point formatting; managing format state; alignment and padding; determine success or failure of I/O operations; tie output streams to input streams; and C++20’s concise and convenient text-formatting capabilities (presentation types, positional arguments, alignment, numeric formatting, field widths & precisions).
  • Lesson 20 — Other Topics — Runtime type information (RTTI); inheriting base-class constructors; runtime polymorphism techniques; multiple inheritance; storage classes and storage duration; mutable members in const objects; namespaces; operator keywords; managing shared dynamically allocated objects; determining compile-time types with decltype; [[nodiscard]]; and an intro to several C++23 features.

About Pearson Video Training:

Pearson publishes expert-led video tutorials covering a wide selection of technology topics designed to teach you the skills you need to succeed. These professional and personal technology videos feature world-leading author instructors published by your trusted technology brands: Addison-Wesley, Cisco Press, Pearson IT Certification, Prentice Hall, Sams, and Que. Topics include: IT Certification, Network Security, Cisco Technology, Programming, Web Development, Mobile Development, and more. Learn more about Pearson Video training at http://www.informit.com/video.

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Python Fundamentals with Paul Deitel, 2nd Edition

Python Fundamentals with Paul Deitel, 2nd Edition

Paul Deitel

Publisher Resources

ISBN: 9780136875185