Linguaggi di programmazione
A.A. 2024/2025
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.
Periodo: Primo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento può essere seguito come corso singolo.
Programma e organizzazione didattica
Edizione unica
Responsabile
Periodo
Primo semestre
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
- 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.
È 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://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.
- 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.
- 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
Turni:
Turno
Docente:
Cazzola WalterDocente/i