FONDAMENTI E LINGUAGGI PER LA PROGRAMMAZIONE DISTRIBUITA
Anno accademico 2016/2017 - 1° anno - Curriculum Sistemi di Rete e Sicurezza
Docente: Franco BARBANERA
Crediti: 6
Organizzazione didattica: 150 ore d'impegno totale, 126 di studio individuale, 24 di lezione frontale
Semestre: 2°
Crediti: 6
Organizzazione didattica: 150 ore d'impegno totale, 126 di studio individuale, 24 di lezione frontale
Semestre: 2°
Obiettivi formativi
Conoscenza di base delle basi teoriche della programazione concorrente e distribuita.
Capacita' di comprensione del significato degli aspetti teorici della programmazione concorrente e distribuita.
Capacita' di utilizzare nozioni teoriche nella comune pratica di programmazione concorrente e distribuita.
Capacita' di valutare, giudicare ed utilizzare linguaggi, metodologie e tecniche per la programmazione concorrente e distribuita nel contesto piu' generale ed astratto delle teorie fondazionali.
Prerequisiti richiesti
Frequenza lezioni
Non obbligatoria.
Contenuti del corso
- Concurrent and distributed programming in non-imperative programming paradigms. Introduction to Functional Programming.
- Main functional-programming concepts: Order of evaluation, Recursion; Higher-order functions; Anonymous functions; Curryfication; Lists; Recursion; Correctness proofs.
- Short review of the Lambda-calculus
- Types for functional programming.
- Introduction to Haskell; Polymorphic types; Pattern Matching; Type Classes. Infinite structures.
- Tail recursion
- The actors model of concurrent programming; A Concurrent functional language: Erlang
- Concurrent Programming in Erlang
- Process calculi: Introduction to the Pi-calculus;.
- Process calculi: Sketchy introduction to contextual equivalence and bisimulation
- Introduction to the PICT language; Core Pict.
- Overview of Session Types.
- Session and Refinement Types: the language SePi.
- Introduction to Scribble
- An experimental language with multiparty session types
- Overview of process calculi for distributed programming.
- Basics of distributed programming in Erlang.
Testi di riferimento
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
Scritto e orale.
Esempi di domande e/o esercizi frequenti
http://www.dmi.unict.it/~barba/FOND-LING-PROG-DISTR/ESERCIZI/index.html