Linguaggi di programmazione

A.A. 2021/2022
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento ha l'obiettivo di introdurre gli studenti a paradigmi di programmazione differenti rispetto a quanto studiato negli anni precedenti con particolare attenzione ma non limitandosi ai paradigmi funzionale, concorrente, dichiarativo e orientato agli oggetti. Ogni paradigma insegnato sarà affrontato con uno specifico linguaggio di programmazione e applicato alla risoluzione di problemi.
Risultati apprendimento attesi
Lo studente dovrà dimostrare di aver capito le caratteristiche dei paradigmi studiati, dovrà sviluppare un senso critico nei confronti di linguaggi di programmazione differenti e dovrà saper scegliere il linguaggio e quindi il paradigma più appropriato da dover applicare in ogni frangente. In particolare, lo studente dovrà essere in grado di analizzare un problema e scegliere tra i vari paradigmi di programmazione appresi qual è quello più adatto per risolverlo. Lo studente dovrà anche essere in grado di realizzare la soluzione con il linguaggio appreso per il paradigma scelto.
Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Primo semestre
Metodi didattici
Le lezioni saranno erogate in streaming su YouTube e saranno fruite sincronamente sulla base dell'orario del primo semestre. A supporto ci sarà un canale telegram per l'interazione col docente. I dettagli saranno riportati sulla pagina del corso gestita dal docente.

Programma e materiale di riferimento
Il programma e il materiale di riferimento non subiranno variazioni.

Modalità di verifica dell'apprendimento
L'esame cambierà da scritto a sessioni orali di live coding gestite sulla piattaforma Microsoft Teams.
Programma
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
Prerequisiti
Saper scrivere e debuggare programmi che usano i costrutti base della programmazione imperativa e orientata agli oggetti. Avere conoscenze di problem solving. Conoscere e sapere usare con profitto almeno un linguaggio di programmazione.

È fortemente consigliato il superamento dell'esame di Programmazione e Programmazione II. È suggerito l'aver passato l'esame di Algoritmi e Strutture Dati.
Metodi didattici
Lezioni Frontali ed alcune esercitazioni in preparazione dell'esame. Frequenza fortemente consigliata.
Materiale di riferimento
Sito web
- https://wcazzolalp.ariel.ctu.unimi.it
- https://cazzola.di.unimi.it/lp.html

Libri di Riferimento
- 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.
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame è scritto al calcolatore e durerà 4 ore. Ogni appello propone tre esercizi:
- ogni esercizio vale 11 punti
- ogni esercizio riguarda uno dei 3 paradigmi di programmazione insegnati e
- per passare l'esame bisogna svolgere tutti gli esercizi e conseguire per ognuno un voto pari almeno a 6.
Il voto totale dell'esame è dato dalla somma dei voti dei tre esercizi.

Sia l'iscrizione agli esami che la loro verbalizzazione (e comunicazione del voto) avverrà tramite SIFA/UNIMIA.
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente: Cazzola Walter
Docente/i
Ricevimento:
L'orario di ricevimento dipende dal corso che seguite: consultate la pagina del corso.
Ufficio 5009 Via Celoria 18