Course 1: Introduction to C++ This course guides learners through the essentials of C++ programming. Starting with an overview and setup, students explore data structures using the Standard Template Library (STL), delving into functions and modular programming as well as Object-Oriented Programming (OOP). The course introduces fundamental algorithms through a hands-on search implementation, culminating in a practical project: building a Route Planner using OpenStreetMap. By the end, participants will be equipped with the skills to design and develop efficient C++ applications.14 hoursWelcomeExplore C++ with insights from its creator Bjarne Stroustrup, learn its industry impact, effective learning strategies, and key coding guidelines.Introduction to C++ and SetupGet started with C++: learn program structure, compilation, data types, input/output, expressions, conditionals, loops, and user interaction through hands-on coding exercises.Working with Data Structures and STLLearn to use arrays, vectors, and STL algorithms in C++ for data storage, string manipulation, file I/O, and efficient error handling to write robust, maintainable programs.Functions, Modularity and OOPMaster C++ modularity by organizing code with functions, multi-file structure, and OOP—using classes, pointers, scope, linkage, and object lifecycle features for scalable design.Introduction to Algorithms – A Search Implementation*Learn to model search problems with graphs and grids, implement A* pathfinding in C++, use STL containers and lambdas, analyze complexity, and build projects with CMake.Build an OpenStreetMap Route PlannerIn this project, you will build a route planner that determines and visualizes the optimal path between two points using real-world map data from the OpenStreetMap project.Course 2: Object-Oriented Programming in C++ In this course, participants will explore fundamental OOP concepts and their applications. Starting with class design and encapsulation, the course progresses to inheritance and composition, helping students construct effective class hierarchies. Delving into advanced topics, the lessons cover polymorphism and templates, crucial for building flexible and reusable code. Additionally, learners will gain vital skills in error handling and debugging techniques through targeted exercises. The course culminates in a practical project where students will develop a comprehensive system monitoring tool, solidifying their knowledge and coding competency.12 hoursEncapsulation and Class DesignMaster encapsulation in object-oriented programming. Explore encapsulation principles, class structure, data hiding, and utilize getters and setters for efficient class design.Inheritance, Composition, and Class HierarchiesLearn C++ inheritance, composition, and class hierarchies: design clear, safe class structures using single/multiple inheritance, polymorphism, and the "is-a" vs. "has-a" approach. Polymorphism in Depth and TemplatesMaster C++ polymorphism and templates to build flexible, efficient, and type-safe designs using abstract classes, interfaces, runtime dispatch, and the power of the standard library.Error Handling Strategies and Debugging TechniquesDiscover robust error handling in C++ with exceptions, return codes, and optionals, plus learn essential debugging, logging, assertions, and RAII for reliable, safe code.Build a System Monitoring ToolIn this project, you will develop a simple system monitor program inspired by htop to track and display system metrics in real time.Course 3: Memory Management This course provides a comprehensive exploration of how memory interacts with programming languages. Beginning with the fundamentals of system memory hierarchy, students learn essential concepts like pointers and pointer arithmetic. The course delves into dynamic memory allocation, highlighting ownership principles to manage memory effectively. Fundamental object-oriented topics such as copy constructors and move semantics are covered, addressing the crucial Rule of Three/Five for robust memory management. Additionally, advanced techniques involving smart pointers are introduced to enhance memory safety. The course culminates in a hands-on project to apply learned skills in real-world scenarios.10 hoursMemory Fundamentals and the System Memory HierarchyExplore C++ memory structure, pointers, addresses, the system memory hierarchy, caching, and GDB debugger use for efficient programming and troubleshooting.Pointers and Pointer ArithmeticLearn C++ pointers: how they store memory addresses, enable direct data manipulation, perform pointer arithmetic, and avoid common errors like null, dangling, and out-of-bounds pointers.Dynamic Memory Allocation (Heap) and OwnershipLearn dynamic memory allocation in C++: using new/delete, preventing leaks, double deletion, and dangling pointers, and managing ownership with best practices and smart pointers. Copy Constructors, Move Semantics, and the Rule of Three/FiveLearn C++ copy constructors, move semantics, and the Rule of Three/Five. Master memory management, deep vs. shallow copy, and RAII for safe, efficient resource handling.Smart Pointers and Advanced Memory ManagementMaster C++ smart pointers for safer, modern memory management: exclusive and shared ownership, avoiding leaks, breaking cycles, and refactoring legacy code using unique, shared, and weak pointers.Memory BOTIn this project, you will build a simple, terminal-based chatbot that creates a dialogue where users can ask questions about some aspects of memory management in C++ via a terminal. Course 4: Concurrency This course provides a comprehensive introduction to concurrent programming concepts. It begins with an exploration of threads and parallel execution, focusing on how tasks can run simultaneously to enhance performance. The course then delves into critical aspects of shared data management and task synchronization, ensuring that multiple threads can operate without conflict. Students will learn about essential tools such as mutexes, locks, and condition variables, which are crucial for managing access to shared resources safely. Finally, participants will apply their knowledge in a project that integrates all learned concepts, fostering practical experience in designing and implementing concurrent systems.6 hoursThreads and Parallel ExecutionLearn how to create, manage, and synchronize threads in C++ to unlock parallel execution, avoid race conditions, and ensure safe resource management using RAII and synchronization primitives.Threads: Sharing Data and Task SynchronizationMaster thread communication and synchronization using promises, futures, std::async, atomics, and lock-free programming for scalable, efficient concurrent applications.Mutexes, Locks, and Condition VariablesMaster advanced thread synchronization with mutexes, locks, and condition variables to build correct, efficient, and deadlock-free concurrent systems using modern C++ techniques.Program a Concurrent Traffic SimulationIn this project, students will create a multithreaded traffic simulation where vehicles navigate intersections safely by using mutexes and synchronization to prevent collisions.CompanyAbout Us Why Udacity? Blog In the News Jobs at Udacity Become a Mentor Partner with Udacity ResourcesCatalog Career Outcomes Help and FAQ Scholarships Resource Center Udacity SchoolsSchool of Artificial Intelligence School of Autonomous Systems School of Business School of Cloud Computing School of Cybersecurity School of Data Science School of Executive Leadership School of Product Management School of Programming and Development Career Resources Featured ProgramsBusiness Analytics SQL AWS Cloud Architect Data Analyst Intro to Programming Digital Marketing Self Driving Car Engineer Only at UdacityArtificial Intelligence Deep Learning Digital Marketing Flying Car and Autonomous Flight Engineer Intro to Self-Driving Cars Machine Learning Engineer Robotics Software Engineer