I linguaggi concorrenti, ed in particolar modo i linguaggi mobili (cioe' con  mobilita'
di codice), sono ormai largamente e rappresentano uno strumento cruciale per lo
sviluppo di applicazioni Internet.

Comunque, a differenza dei linguaggi sequenziali, per i quali negli ultimi decenni sono
stati sviluppati vari modelli per descriverne formalmente la semantica, la programmazione
attraverso linguaggi concorrenti/mobili e' raramente suffragata da solide basi semantiche.
Di conseguenza, in assenza di una semantica precisa, risulta estremamente difficile
interpretare il comportamento di un sistema concorrente complesso in cui le numerose
componenti evolvono in parallello ed interagiscono tra di loro.  Cio' puo dar luogo a seri
(e costosi) inconvenienti, come ad esempio l'esplosione del razzo Ariane 5, nell'ottobre del
1994, oppure i "capricci" di Mars Pathfinder nel Luglio del 1997.

Obiettivi formativi:

Lo scopo del corso non e' quello di studiare un qualche linguaggio di programmazione,
ma fornire quei concetti e principi fondamentali che sono alla base di  una corretta
programmazione concorrente con o senza mobilita' di codice. A tal scopo verranno
considerati dei modelli algebrici, vale a dire dei linguaggi molto semplici, che racchiudono
tutte le caratteristiche principali dei linguaggi concorrenti reali. Tali modelli, chiamati
calcoli di processo (quali CCS, Pi-calcolo, Mobile Ambient), essendo piu semplici dei
linguaggi reali, ben si prestano allo studio delle problematiche tipiche della concorrenza.
Durante il corso verrano forniti vari esempi ed applicazioni.

Infine, nell'ultima parte del corso verrano mostrati modelli distribuiti in cui agenti
concorrenti migrano all'interno di reti di calcolatori.


Attivita' formative:

Il corso e' costituito da 44 ore di lezione frontale. Nelle 44 ore di lezione sono comprese
15 ore di di esercitazione durante le quali gli studenti devono risolvere problemi specifici
sotto la guida del docente.

Programma del corso: