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)
Functional Languages - Overview di ML/OCaML e Recursion - Native Datatype in ML/OCaML - Modules and Functors - Polymorphism in ML/OCaML - Playing with Fun - ML in Action Concurrent Languages - Starting with Erlang - Actors in Erlang - Error Handling - Distribution in Erlang - Erlang in Action OO languages - Scala Overview - Traits - Advance in Object-Orientation - DSL - Parser Combinators
Prerequisites for admission
Knowing how to write and debug programs that use the basic constructs of imperative and object-oriented programming. Knowing how to solve an algorithmic problem. Knowing at least one programming language.
It is strongly needed to have passed the exams of Programming and Programming II. It is advisable to have passed also the exam of Algorithms and Data Structures.
Frontal lectures and some exercises in the exam preparation.
Books - Jason Hickey, "Introduction to Objective CaML", 2007, Cambridge University Press. - Joe Armstrong, "Programming Erlang", 5ª edition, 2011, Pragmatic Bookshelf. - Dean Wampler e Alex Payne, "Programming Scala", 2009, O'Really.
Assessment methods and Criteria
The exam is written (at the computer) and it will last 4 hours. Each session proposes three exercises: - the exercises are marked from 0 to 11; - each exercise is about one of the three studied paradigms; and - to pass the exam you need a grade of at least six for every exercise. The final grade will be given by the sum of the marks achieved in the three exercises.