
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Master the five solid principles in a real-world C++ project, starting from OOP prerequisites and UML class diagrams, with hands-on coding exercises to maximize your learning.
Explains object oriented programming in c++, covers abstraction, encapsulation, inheritance, and polymorphism, and clarifies declarations, definitions, instantiation, abstract classes and interfaces, and runtime versus compile-time polymorphism.
Composition over Inheritance
Delegation
Program to an Interface
CODE REUSE
Explore UML class diagrams to visualize and understand a software system. Learn relationships like association, dependency, aggregation, and composition to design robust object-oriented structures.
Explore the single responsibility principle by refactoring a smart home AQI display into separate classes: a display for rendering and a connection manager, improving modularity and maintainability.
Explain runtime polymorphism with a base shape pointer and derived types like circle and square, enabled by the virtual keyword and vtable for late binding to correct draw() at runtime.
Design systems to be open for extension, closed for modification, using an abstract interface and runtime polymorphism to integrate XAQISensor and JAQI via JSON data.
Demonstrate the Liskov substitution principle by ensuring derived types substitute base types without changing behavior, using an AQISensor example with stationary and mobile sensors and adapters to extend open-closed principle.
Learn to apply the interface segregation principle by splitting big multipurpose interfaces into client-specific ones, preventing unused methods, reducing coupling, and enabling independent recompilation and redeployment.
Learn how the dependency inversion principle decouples high-level and low-level modules by using abstract interfaces and abstractions, enabling flexible unit testing and reusable C++ designs.
DRY
KISS
YAGNI
Low of Demeter
M1C2
Avoid Premature Optimization
Boy Scout
Occams Razor
Least Astonishment
Don't be afraid
End of the course, commit to outputting code, helping others, and embracing basic design patterns as the next step toward larger systems; please share feedback to improve our software community.
Any C++ engineer can write code. Few can design software that won't give you a headache six months later, when new functionality keeps coming and requirements change.
If you've ever opened a codebase and thought — who wrote this, and why is everything connected to everything?
You already know the problem this course solves.
And here's what makes it more urgent than ever:
AI writes code fast. Dangerously fast.
It generates syntax. It produces functions. It compiles. But it doesn't know your system. It doesn't enforce boundaries. It doesn't apply design principles. It just generates — confidently, quickly, and often badly.
The engineer who understands software design is not being replaced by AI. They are becoming the last line of defense against AI-generated chaos. Understanding SOLID principles, clean architecture, and design guidelines is more critical in 2026 than it has ever been.
This course is your first step to that mastery.
What this course covers
The core of this course is the five SOLID principles — but this is not a theoretical overview. Each principle builds on the last to construct a real-world application, layer by layer. You will see exactly how poor design causes problems, and exactly how SOLID principles fix them.
Beyond SOLID, you will explore:
OOP foundations and the four pillars of Object Oriented Programming
UML Class Diagrams — the visual language of software design
Design guidelines: Composition over Inheritance, Delegation, Code Reuse, Programming to an Interface
Key principles: DRY, KISS, YAGNI, Law of Demeter
Six engineering best practices used by senior engineers in real production environments
This is not a watch-and-forget course.
Every SOLID principle comes with a hands-on coding exercise in a live C++ environment. You don't just watch me explain a principle — you apply it yourself, on real code, immediately. All boilerplate is provided, so you spend your time on the design, not the setup.
Reading about clean code teaches you nothing. Writing it changes how you think.
Who this is for
Intermediate to experienced C++ engineers who want to move beyond writing code and start designing software. If you already know C++ syntax and basic OOP, you are ready.
This is not a beginner course. This is a course for engineers who are ready to think at a higher level.
How this course is taught
Whiteboard-style teaching combined with visual diagrams and real code. The five SOLID principles are not taught in isolation — they build on each other to construct a real application. You see the design evolve, the problems emerge, and the solutions applied in context.
The course follows a simple but powerful equation:
result = information + exercise
Information without practice is forgettable. Practice without the right information is wasted effort. This course gives you both — structured knowledge and immediate hands-on application.
About your instructor
I'm Goran Shekerov — Senior Software Engineer with over 15 years in Automotive embedded C++.
Every insight in this course comes from real production systems and real mistakes.
4.9 instructor rating. 176 engineers already on this journey.
Your first step to mastery starts here.
Check the free preview lectures, see how I teach, and decide for yourself.
Wish you focus, clarity, and clean code.
Best
Goran