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

ModuliSettoreTipoOreDocente/i
PARADIGMI DI PROGRAMMAZIONEINF/01LEZIONI72
FABIO GADDUCCI unimap
FRANCESCO GAVAZZO 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) as well as those 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 functioning 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 a programmer that understands what happens to a program at compile-time and 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. Conoscenza del linguaggio JavaScript.

Prerequisites

Notions of formal languages, semantics and programming from the 1st year courses. Knowledge of the JavaScript programming language.

 

Indicazioni metodologiche

Lezioni frontali con slide e uso dei jupyter notebook in OCaml.

Programma (contenuti dell'insegnamento)
  1. 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.
  2. 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; Ssstemi di tipi nei linguaggi object-oriented; tecniche di implementazione di linguaggi class-based (es. Java Virtual Machine); Eeempi di implementazione in OCaml.
  3. Paradigma di programmazione concorrente. Concetti di base: esecuzione non sequenziale; formalizzazione di un modello di concorrenza; costrutti di programmazione concorrente nei linguaggi moderni.
Syllabus
  1. 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.
  2. Object-oriented programming. Abstract data types; modularity, incapsulation, inheritance and substitution principle; class-based vs object-based langauges; types in OO languages; aspects of implementation of OO languages (es. Java Virtual Machine).
  3. Concurrent programming. Non-sequential execution; formalization of a model of concurrency; concurrency in modern programming languages.
Bibliografia e materiale didattico

Materiale didattico

- slide e dispense fornite dal docente

- Jupyter notebook in OCaml

Libri di testo consigliati (per approfondimenti)

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

- P. Sestoft, Programming Language Concepts, Springer, 2017.

- M. Gabrielli e S. Martini, Linguaggi di programmazione: Principi e Paradigmi, McGraw-Hill, 2006.

Modalità d'esame

Scritto e orale.

Ultimo aggiornamento 02/10/2022 22:55