Welcome to the C++ Developer Nanodegree Program


Welcome to Bootcamp AI


Learn basic C++ syntax, functions, containers, and compiling and linking with multiple files. Use OpenStreetMap and the 2D visualization library IO2D to build a route planner that displays a path between two points on a map.

Introduction to the C++ Language

A Search

Writing Larger Programs

Extending the OpenStreetMap Data Model

A with OpenStreetMap Data

Build an OpenStreetMap Route Planner

Course Outro


Explore Object-Oriented Programming (OOP) in C++ with examples and exercises covering the essentials of OOP like abstraction and inheritance all the way through to advanced topics like polymorphism and templates. In the end, you’ll build a Linux system monitor application to demonstrate C++ OOP in action!

Intro to OOP

Advanced OOP

Project System Monitor

Coming Soon Updated System Monitor Project


Discover the power of memory management in C++ by diving deep into stack vs. heap, pointers, references, new, delete, smart pointers, and much more. By the end, you’ll be ready to work on a chatbot using modern C++ memory management techniques!

Pointers and References

new and delete

Smart Pointers

Garbage Collector

Introduction and Running Threads

Concurrent programming runs multiple threads of execution in parallel. Concurrency is an advanced programming technique that, when properly implemented, can dramatically accelerate your C++ programs.

Passing Data Between Threads

Mutexes and Locks

Condition Variables and Message Queues

Program a Concurrent Traffic Simulation

Industry Research

Capstone —

Put your C++ skills to use on a project of your own! You’ll utilize the core concepts from this Nanodegree program - object-oriented programming, memory management, and concurrency - to build your own application using C++.
06. Standard Library

Standard Library

“The C++ Standard Library is a collection of classes and functions, which are written in the core language and part of the C++ ISO Standard itself.” Wikipedia

Learning how to use the Standard Library is an important part of becoming a proficient C++ software engineer. In almost all cases, it is preferable to utilize functionality that already exists in the Standard Library, instead of implementing functionality from scratch. This is both because using the Standard Library is faster (it is well-documented) and because many expert software engineers have worked on the Standard Library. The performance of Standard Library facilities is optimized, robust, and almost always as fast or faster than an initial re-implementation of the same functionality.

In fact, guideline SL.1 of the C++ Core Guidelines is:

Use libraries wherever possible

Reason Save time. Don’t re-invent the wheel. Don’t replicate the work of others. Benefit from other people’s work when they make improvements. Help other people when you make improvements.

And guideline SL.2 is:

Prefer the standard library to other libraries

Reason More people know the standard library. It is more likely to be stable, well-maintained, and widely available than your own code or most other libraries.

We use Standard Library features throughout the program, since proficiency with the Standard Library is a critical for C++ developers.


Standard Library functions and classes exist in the std:: namespace. std::vector, for example, refers to the vector class within the Standard Library. Typically, in order to use a Standard Library feature we must both include the necessary header file (e.g. #include <vector>) and also namespace the class with std:: (e.g. std::vector).