Programming languages

A.Y. 2020/2021
6
Max ECTS
48
Overall hours
SSD
INF/01
Language
Italian
Learning objectives
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.
Course syllabus and organization

Single session

Responsible
Lesson period
First semester
Teaching Methods
All the lectures will be provided in streaming on YouTube in the scheduled time frame. The interaction with the professor will be enabled through a dedicated telegram channel. All details will be published on the course webpage.

Syllabus and Books
Nothing will change on both the syllabus and the used material.

Exams
We will do a live coding examination on Microsoft Teams.
Course syllabus
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.
Teaching methods
Frontal lectures and some exercises in the exam preparation.
Teaching Resources
Web Site
- https://wcazzolalp.ariel.ctu.unimi.it
- https://cazzola.di.unimi.it/lp.html

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.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Cazzola Walter
Educational website(s)
Professor(s)