Paths

C++

C++ is an object-oriented programming language that was first developed by Bjarne Stroustrup. It was originally created to be an extension of the C language, which is a middle-level language, and these roots are still present today. C++ can be developed in the object-oriented style, or in the C-style, making it a truly hybrid language. This path will take you from the very basics of programming using C++ and will vault you forward into creating rich applications for the Windows operating system. You can also create platform independent desktop applications in C++ using either the Qt or Cinder frameworks. Those courses are in our library but not listed on this path.... Read moreRead less

Beginner

If you’re just learning to program you can get a gentle introduction with Learn How to Program with C++ . If you already know how to program and just want to learn C++, you can start with the C++ Fundamentals course. By the time you’ve completed these courses, you’ll be confident in writing basic applications and be familiar with the features offered in C++.

1

Learn How to Program with C++

Description

C++ has a reputation for being a very difficult language to learn, and to use well. Changes to the language and the library that accompanies it have changed that. Beginners can now learn C++ and write real applications. In this course you'll learn the important parts of C++ 11 syntax, get an introduction to the most useful parts of the Standard Library, and be challenged to write applications yourself in addition to watching someone else write and explain code.

Table of contents

Getting Started

43m 34s

Streams, Locals, and Flow of Control

1h 5m 35s

Functions and Headers

56m 38s

Strings and Collections

59m 20s

Writing Classes

59m 35s

Compiler Specific Topics

26m 54s

Topics to Learn Later

54m 20s

Legacy Constructs

52m

2

C++ Fundamentals Including C++ 17

Description

C++ is a general purpose programming language that is used by millions of developers. It has a reputation for being hard to learn and use, but with the changes in the language over the last few decades, this reputation is no longer deserved. C++ offers a powerful combination of performance and abstraction that other languages don’t have. In this course, C++ Fundamentals Including C++ 17, you'll learn how to write simple console applications and be ready to move on to writing platform-specific code. First, you’ll learn the basics of language syntax: declaring variables, classes, building expressions using operators and functions, working up to templates, indirection, and polymorphism. You'll explore the syntax additions from C++ 11, C++ 14, and C++17, using any modern compiler to run the examples. You'll also see the principles of Modern C++ in action, relying on the Standard Library and using idioms like Resource Acquisition is Initialization to reduce the effort involved in memory management. By the end of this course, you’ll be comfortable reading and writing Modern C++, including features added in C++17.

Table of contents

Course Overview

2m 24s

Understanding C++ in Context

16m 43s

Tools

33m 32s

Variables and Fundamental Types

23m 29s

Language Basics - User Defined Types

41m 18s

Language Basics – Flow of Control

26m 7s

Language Basics - Functions

37m 10s

Language Basics - Operators

37m 14s

Templates

30m 24s

Indirection

32m 28s

Memory Management

31m 26s

Indirection and Inheritance

35m 43s

3

Practical C++14 and C++17 Features

Description

After the C++11 "revolution," several other features were added by the C++14 and C++17 standards. While C++11 was a massive improvement over the previous C++98/03, C++14 and C++17 are kind of more incremental improvements; nonetheless, interesting, powerful and useful features were added in these recent C++ standards. In this course, Practical C++14 and C++17 Features, you'll learn many practical features added in the C++14 and C++17 standards, assuming you have only a basic knowledge of C++11, like the one you can get watching the "C++11 from Scratch" course; any advanced C++11 concepts will be explained here on a need-to-know basis. Among the many topics discussed in this course, you'll start learning small but nice features, like digit separators. Then you'll explore more substantial features, like polymorphic lambdas (the course will also introduce basic lambdas as well, so you're not left in the dark if you don't know C++11 lambdas), and relaxed constexpr functions. You'll also learn about improvements to the C++ standard library, like the new standard-defined suffixes for the Chrono library (which will be introduced as well), or std::make_unique in combination with the unique_ptr smart pointer (that'll be introduced here as well). Finally, you'll explore new practical C++17 features, ranging from nested namespaces, to "constexpr if" and structured bindings. The features will be discussed using both slides, and with concrete C++ demo code, including showing some subtle bugs, and how to fix them. After completing this course, you'll be able to write simpler, clearer, more efficient and higher-quality modern C++ code, applying the features discussed in this course in your own C++ codebases. This course targets developers who are already familiar with basic C++11, and want to extend their knowledge to practical C++ features introduced in C++14 and in C++17. If you need a beginner-oriented introduction to C++11, you can watch the "C++11 from Scratch" course.

Table of contents

Course Overview

2m 5s

Convenient Syntactic Sugar

13m 22s

Miscellaneous Improvements to C++11

26m 19s

Standard Library Improvements

48m 49s

Better Lambdas

26m 9s

Practical Convenient C++17 Language Improvements

36m 28s

4

C++ Unit Testing Fundamentals Using Catch

Description

Writing unit tests is a big part of being a good software developer. Unfortunately, unit testing in C++ is far from being trivial and good unit testing frameworks are hard to find. In this course, C++ Unit Testing Fundamentals Using Catch, you will learn how to write robust unit tests using Catch, a simple-to-use, yet flexible and powerful unit testing framework for C++. You will learn what makes Catch different from other xUnit frameworks, and how it can be used to write unit tests for your C++ code. You will also get to see how to run Catch from the command line, how to use test fixtures, and how to create maintainable tests. When you're finished with this course, you will have a foundational knowledge of Catch and unit testing in C++ that would help you create better, cleaner C++ code.

Table of contents

Course Overview

1m 52s

Introducing Catch

20m 32s

Organizing Your Tests Using Catch

26m 35s

Asserting Using Catch

23m 8s

Handling Duplicate Code

26m 15s

Intermediate

These intermediate courses will take you on a deep-dive in designing beautiful and functional C++ code. You’ll learn how to write efficient and modern C++ using design patterns and the C++ standard library.

5

Modern C++ Libraries

Description

This course is about the practical application of the modern C++ language. It's about using (and creating) modern C++ libraries. You're going to learn how to use a modern C++ style of programming. You will see how it helps to turn C++ into a modern language that's intuitive and elegant. This course covers the essential skills needed by any C++ developer to handle resources and write efficient classes that work well with standard containers. You will also learn all about the standard smart pointers, containers, strings, and regular expressions. Along the way, you'll pick up essential tips and tricks to get the best out of modern C++ using C++11 and beyond.

Table of contents

Getting Started

37m 27s

Smart Pointers

39m 33s

Smart Classes

45m 31s

Container Essentials

55m 32s

Associative Containers

32m 44s

Strings and Regular Expressions

30m 56s

6

Beautiful C++: STL Algorithms

Description

If you're a C++ developer, save yourself valuable time and work by learning how to use the algorithm header. In this course, Beautiful C++: STL Algorithms, you'll learn the functions in the algorithm header. You'll find out how iterators multiply the power of the library. Next, you'll learn the conventions that lower your mental burden. Finally, you'll learn how to use the same algorithm with different collections so you don't have to learn new functions. After this course, you'll know what the algorithm header has to offer you and how to use it to your advantage while developing.

Table of contents

Course Overview

2m 1s

Standard Library Philosophy and Approach

19m 42s

Counting and Finding

40m 38s

Sorting

35m 27s

Comparing and Accumulating

24m 41s

Generating and Manipulating Collections

52m 31s

Using the Power of Iterators

36m 53s

Unexpectedly Useful Operations

23m 34s

Conventions

28m 45s

7

Design Patterns in C++: Creational

Description

A look at the creational design patterns and their implementation using Modern C++. Covers the Factory design pattern (Factory Method, Abstract Factory) as well as Builder, Prototype, and Singleton. Also covers the SOLID design principles, demonstrates Dependency Injection via Boost.DI, and even shows an example of a Maybe Monad.

Table of contents

Course Overview

1m 35s

Preliminaries

1h 14m 30s

Builder

50m 13s

Factories

41m 24s

Prototype

46m 54s

Singleton

37m 46s

8

Design Patterns in C++: Structural - Adapter to Decorator

Description

The correct application and recognition of design patterns is an important skill for developers and architects. This course, Design Patterns in C++: Structural - Adapter to Decorator (part of a multi-series course on C++ patterns), introduces you to Structural design patterns. First you'll cover the Adapter and Bridge patterns, moving on to the Composite and Decorator design patterns. You'll also be shown different ways in which these patterns can be implemented in modern C++ (C++ 11 and beyond). Software required: a C++ IDE (e.g., Visual Studio, CLion) or a text editor (e.g., VIM, EMACS) together with a C++ compiler (e.g., GCC, Clang).

Table of contents

Course Overview

1m 45s

Adapter

39m 43s

Bridge

23m 26s

Composite

36m 36s

Decorator

42m 56s

9

Design Patterns in C++: Structural - Façade to Proxy

Description

The correct application and recognition of design patterns is an important skill for developers and architects. This course, Design Patterns in C++: Structural - Façade to Proxy, is part of a multi-series course on C++ patterns, and it introduces you to structural design patterns. It covers the Façade, Flyweight, Null Object, and Proxy design patterns, showing different ways in which these patterns can be implemented in modern C++ (C++ 11 and beyond). First, you'll learn about Façade. The Façade pattern attempts to hide the interface of a complicated system (often involving several components and their relationships) behind a single, easy-to-use interface. Next, you'll learn about Flyweight, which is used to save up on memory by sharing as much data as is possible with similar objects. After that you'll learn about Null Objects, which lets you provide a neutered, no-op object which conforms to the interface but does absolutely nothing at all. Finally, you'll learn about Proxy design patterns, which lets an object 'stand in' for another object, conforming to the same interface while performing additional operations. By the end of this course, you should be able to recognize these design patterns in other libraries and you'll be able to then apply these patterns in your own work.

Table of contents

Course Overview

1m 27s

Façade

32m 18s

Flyweight

30m 11s

Null Object

15m 32s

Proxy

26m 41s

Advanced

Our advanced C++ courses are not for the faint of heart, but don’t be afraid! You will gain a deeper understanding of threading and synchronization and some pro tips for squeezing the most performance possible out of your code.

10

Modern C++ Concurrency

Description

This course will introduce you to modern C++ concurrency on the Windows operating system. Unfortunately, standard or portable concurrency is still in its infancy so a comprehensive study of concurrency cannot get away from the practical and platform-specific aspects of the craft. As such, this course uses the Windows operating system as the playground to explore concurrency in C++. This course will prepare you with a deep understanding of threads and synchronization at the OS level, including modern synchronization primitives such as slim reader/writer locks and condition variables. You will learn all about the mighty Windows thread pool API and the Concurrency Runtime. Finally, you will be introduced to some of the shortcomings that plague the C++11 Thread Support Library.

High-performance Computing in C++

Description

Do you want to get the absolute most performance out of your hardware? Want to write code that scales across CPU registers, multi-core, and machine clusters? Then this is the course for you!

Table of contents

Single Instruction Multiple Data (SIMD)

52m 29s

Open Multi-Processing (OpenMP)

37m 15s

Message Passing Interface (MPI)

56m 14s

C++ Accelerated Massive Parallelism (C++ AMP)

1h 54s

Generative Art Demo

36m 59s

What you will learn

Operators

Objects

Classes

Flow of control

References

Polymorphism and inheritance

C++ Type System

Heap/stack semantics

Stream I/O

Overloading

Lambdas

Exceptions

Scope management

Templates

C++ Standard Library

Concurrency

Pre-requisites

If you’re just learning to program you can get a gentle introduction with Learn How to Program with C++ . If you already know how to program and just want to learn C++, you can start with the C++ Fundamentals course.

Register for FREE. Get your Pluralsight IQ.

You’ll get unlimited access to adaptive skill assessments that help you validate your skills in as little as 5 minutes, and you'll get to see the Pluralsight platform first-hand.

Batch Offer Codes

Be sure to only enter offer codes separated by line breaks and does not include commas.