Course Description
Modern C++ is at the heart of high-performance software and resource-constrained embedded products—making it a must-have skill for today’s systems developers.
In this course, you’ll start by grounding your understanding of Object-Oriented Programming through inheritance and polymorphism, then set up a clean development environment and learn how namespaces, unnamed namespaces, and type aliases help you build scalable codebases without naming collisions.
From there, you’ll dive into what most developers struggle with in C++: memory. You’ll explore memory sections, pointer behavior, and dynamic allocation, then connect those concepts to real code through references, default arguments, function overloading, and building your first class correctly.
Next, you’ll master object lifecycle and safety by implementing constructors/destructors, understanding deep vs shallow copy, and writing correct copy constructors—then level up with L/R values, move semantics, and the Rule of Five. You’ll also learn how to model clean APIs with operator overloading, analyze class memory layout, apply casting safely, and design with inheritance vs composition and abstract classes.
Finally, you’ll bring everything together with dynamic polymorphism, smart pointers, and modern templates (including perfect forwarding), then apply C++ in embedded constraints through practical driver-style examples.
By the end, you’ll be able to implement a small embedded-ready C++ foundation (GPIO, UART, and LCD style components) using RAII, safe object semantics, and reusable abstractions that translate directly to real firmware and systems projects.
What you'll learn
After completing this course you will be able to:
• Build solid OOP designs in C++ by applying inheritance, polymorphism, and clean modular organization with namespaces and type aliases.
• Analyze how your program uses memory by identifying memory sections and predicting pointer/reference behavior in real execution scenarios.
• Implement dynamic memory solutions, including dynamic arrays and struct-based allocations, with clear ownership rules and fewer runtime surprises.
• Develop maintainable class-based code by applying constructors, destructors, copy control, and avoiding shallow-copy bugs.
• Apply modern C++ object semantics by using move semantics and the Rule of Five to create efficient and correct types.
• Design expressive C++ interfaces by implementing operator overloading with correct return strategies and assignment behavior.
• Evaluate class layouts and relationships by comparing inheritance vs composition, using access modifiers properly, and leveraging abstract classes.
• Implement runtime polymorphism and safe casting, then use smart pointers to manage lifetime more reliably in larger systems.
• Build reusable generic utilities by applying templates, non-type template parameters, and perfect forwarding patterns.
• Deliver embedded-oriented C++ components by translating modern language features into driver-like, constraint-aware implementations.
Requirements
Complete Course:
C Programming From Basics to Mastery
Embedded C: Hardware Essentials and Device Driver Development