Knowledge and understanding
Object Oriented Programming is based on a few principles (encapsulation, inheritance, polymorphism, etc.) that years of experiences have shown to be fundamental for the design and development of clear, concise, reusable and
maintainable software. Tools and techniques that support an object oriented methodology are provided by most of the mainstream programming languages. The course will present the advanced characteristics of the C++ programming language, showing how these can be exploited to achieve the goals mentioned above.
Applying knowledge and understanding
Each programming concept presented in the course will be explained in the context of a minimal working example, so as to highlight its essential characteristics.
The study of alternative solutions to the same problem will allow for a critical comparison of the different approaches, so as to highlight those contexts where a specific technique is to be preferred to alternatives.
The study and application of the main programming techniques on simple examples is propedeutic to their adoption in more general contexts, where it is also necessary to address the possible interactions between the many components of the system under design.