This course is dedicated to master students. At the end of this course, the students

- will know the main features of different programming paradigms: procedural, object-oriented, functional, logical, component-based, event-based

- will have a good understanding of the following terms and concepts: variable, object, data type, component, interface, polymorphism

- will learn the similarities and differences between component-based programming and object-oriented programming in the frame of inheritance and composition issues

- will understand the importance of component's scale, granularity, and architectural aspects