FOUNDATIONS AND LANGUAGES FOR DISTRIBUTED PROGRAMMING

Academic Year 2016/2017 - 1° Year - Curriculum Sistemi di Rete e Sicurezza
Teaching Staff: Franco BARBANERA
Credit Value: 6
Taught classes: 24 hours
Term / Semester:

Learning Objectives

Basic knowledge of the foundational bases of concurrent and distributed programming.

Ability of understanding the intrinsic meaning of the foundational theories of concurrent and distributed programming.

Ability of using theoretical notions in the common practice of concurrent and distributed programming.

Ability of evaluating, judging and using concurrent and distributed programming in the general and abstract context of foundational theories.


Detailed Course Content

  • 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.