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++.
08. Build Tools

Build Tools

Make and CMake are two separate and similar build tools that both serve to help simplify the process of building software.

In particular, build tools automate the process of compiling multiple source code files into object files, linking those object files together, and generating an executable. Build tools also often automate the process of determining which files have changed since the last build and thus need to be recompiled.

C++ Build Process


GNU Make is a widely-used build tool that relies on Makefiles to automate the process of building a project.

A Makefile typically includes one or more “targets”. Each target performs a different action.

build is a common target name that is configured in the Makefile to compile all of the project’s source code into an executable file. clean, on the other hand, is a common target to delete all object files and other artifacts of the build process, resulting in a clean, unbuilt project state.

Running either make build or make clean (or any other target) on the command line would cause Make to search for a local Makefile, search for a matching target within that Makefile, and then execute the target.

GNU provides


CMake is a built tool that facilitates cross-platform builds, so that it is straightforward to build the same source code on Linux, macOS, Windows, or any other operating system. CMake relies on a CMakeLists.txt file, which configures appropriate cross-platform targets.

Building a CMakeLists.txt file can be a bit daunting, but CMake provides a helpful tutorial.

In this Nanodegree program, you will not need to build your own Makefiles or CMakeLists.txt files. We provide the appropriate configuration files for each project and instruct you as to their usage.