C++ Beginner or Intermediate (used for examples and assignments)
Basic OOP comprehension (polymorphism, inheritance, etc.)
It is not enough to learn a programming language’s syntax to become skilled and produce high-quality applications. In order for software to be durable, maintainable, scalable and testable, one must also learn how to build good design and execute it properly. That’s why we need concepts of object-oriented design like SOLID:
Substitution from Liskov
Segregation of interfaces
Inversion of dependency
This is possibly the most full course on Udemy’s Strong principles.