The teaching aim is to expose students to programming paradigms that are different from those they are used to with particular attention but not limited to functional, concurrent, declarative and object-oriented paradigms. Each paradigm taught will be faced with a specific programming language and applied to the solution of problems.
Expected learning outcomes
The student will have to demonstrate an understanding of the characteristics of the studied paradigms, he will have to develop a critical sense for different programming languages and will enable him to choose the most appropriate paradigm and therefore programming language to use in every context. In particular, the student must be able to analyze a problem and choose between the various programming paradigms learned which one is the most suitable to solve it. The student must also be able to implement the solution with the language learned for the chosen paradigm.
Lesson period: First semester
(In case of multiple editions, please check the period, as it may vary)