Scheda programma d'esame
PARADIGMI DI PROGRAMMAZIONE
PAOLO MILAZZO
Anno accademico2022/23
CdSINFORMATICA
Codice733AA
CFU9
PeriodoPrimo semestre
LinguaItaliano

ModuliSettoreTipoOreDocente/i
PARADIGMI DI PROGRAMMAZIONEINF/01LEZIONI72
PAOLO MILAZZO unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Imparare i principi alla base dei principali paradigmi di programmazione (funzionale, object-oriented e concorrente) e del funzionamento dei linguaggi di programmazione moderni.

Knowledge

Learn the fundamental principles of the main programming paradigms (functional, object-oriented and concurrent) and behind modern programming languages.

Modalità di verifica delle conoscenze

Esame finale, scritto e orale

Assessment criteria of knowledge

Final exam. Written and oral tests.

Capacità

Imparare a ragionare sul funzionamento dei linguaggi di programmazione in astratto, tramite modelli formali del loro comportamento. Imparare ad apprendere nuovi linguaggi di programmazione. Imparare a programmare nel linguaggio OCaml.

Skills

Learn how to reason about the funcioning of programming languages in an abstract way, through formal models of their behaviour. Learn how to learn new programming languages. Learn functional programming in OCaml.

Modalità di verifica delle capacità

Esercitazioni durante il corso ed esame finale

Assessment criteria of skills

Exercises and final exam

Comportamenti

Programmare in modo consapevole, avendo cognizione di cosa accade al programma in fase di compilazione ed esecuzione.

Behaviors

Being an aware programmer that understands what happens to the program at compile-time an run-time.

Modalità di verifica dei comportamenti

Esercitazioni durante il corso ed esame finale

Assessment criteria of behaviors

Exercises and final exam

Prerequisiti (conoscenze iniziali)

- Elementi di linguaggi formali, semantica e programmazione visti nei corsi del primo anno

- Linguaggio JavaScript

Prerequisites

- Notions of formal languages, semantics and programming from the 1st year courses

- JavaScipt programming language

Indicazioni metodologiche

Lezioni frontali con slides e uso dei jupyter notebooks in OCaml

Programma (contenuti dell'insegnamento)

- Paradigma di programmazione funzionale

L’essenza: il λ-calcolo; Il linguaggio OCaml; Formalizzazione di un linguaggio funzionale; Implementazione in OCaml di un interprete del linguaggio funzionale; Sistemi di tipi nei linguaggi funzionali;

- Paradigma di programmazione object-oriented

L’astrazione dei dati e gli oggetti; Modularità, incapsulamento, ereditarietà, principio di sostituzione, e class-based vs object-based; Formalizzazione di linguaggi object-oriented; Sistemi di tipi nei linguaggi object-oriented; Tecniche di implementazione di linguaggi class-based (es. Java Virtual Machine); Esempi di implementazione in OCaml

- Paradigma di programmazione concorrente

Concetti di base: esecuzione non sequenziale; Formalizzazione di un modello di concorrenza; Costrutti di programmazione concorrente nei linguaggi moderni

Syllabus

Functional programming:

- lambda calculus

- the OCaml programming language (functional core)

- formalization of a functional programming language and implementation of an interpreter in OCaml

- type systems in functional languages

Object-oriented programming:

- Abstract data types

- Modularity, incapsulation, inheritance and substitution principle

- Class-based vs object-based langauges

- Types in OOP languages

- Aspects of implementation of OOP languages (es. Java Virtual Machine)

Concurrent programming

- non-sequential execution

- formalization of a model of concurrency

- concurrency in modern programming languages

 

Bibliografia e materiale didattico

Materiale didattico:

- Slides e dispense fornite dal docente

- Jupyter notebooks in OCaml

- Registrazione delle lezioni

Libri di testo consigliati (per approfondimenti):

- Real World OCaml ( https://dev.realworldocaml.org/ )

- Peter Sestoft, Programming Language Concepts

- Maurizio Gabrielli e Simone Martini, Linguaggi di programmazione

Indicazioni per non frequentanti

Nessuna

Modalità d'esame

Scritto e orale

Note

Nessuna

Ultimo aggiornamento 09/08/2022 22:59