
C++
Learn C++, a high-performance programming language used in the world's most exciting engineering jobs -- from self-driving cars and robotics to web browsers, media platforms, servers, and video games.
C++ is still one of the most used languages for systems software, embedded engineering, game development, and performance-critical applications. Its combination of low-level memory control with high-level abstraction keeps it relevant in areas where performance matters most. Udacity's C++ programming courses develop the depth of skills for professional C++ work. You'll go through the C++ Nanodegree and focused courses covering introduction to C++, object-oriented programming, concurrency for high-performance systems, and embedded systems programming for real-time and constrained environments.

Learn C++, a high-performance programming language used in the world's most exciting engineering jobs -- from self-driving cars and robotics to web browsers, media platforms, servers, and video games.

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.

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.

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.

This Embedded Systems Programming course introduces students to the fundamentals of programming microcontrollers using C/C++. Key topics include Embedded C/C++ basics, bit manipulation for hardware control, and managing interrupts for real-time responsiveness. The course also covers essential code optimization techniques to ensure efficient, reliable software performance on resource-constrained devices. Ideal for those looking to build a strong foundation in embedded systems development.
C++ skills connect to systems and embedded work. Pair this collection with C Programming, Embedded Systems Programming, and Software Development and Programming to write efficient code close to the hardware.

After developing skills in C and C++, these related courses can help you deepen your understanding of computer science, explore hardware-level programming, and grow into higher-level application development. They provide a well-rounded path from foundational coding through embedded systems and modern JavaScript workflows.

Complement your embedded systems journey with training in Agile, machine learning, and product development. Build the cross-functional skills needed to design smarter systems, scale innovations, and deliver products that succeed in the market.

Broaden your development expertise with courses in Python, DevOps, and machine learning. Strengthen your foundation in automation, cloud workflows, and scalable systems. These collections support deeper fluency in programming and infrastructure, helping you build, refine, and deploy high-performing applications across diverse tools, platforms, and challenges.

Explore all of Udacity’s Schools, consisting of hundreds of career-driven programs and courses that are designed to teach practical skills and help you learn to your full potential.