The list of the arguments of the
course, together with the material to study.
- Concurrent and distributed programming in non-imperative programming paradigms. Introduction to Functional Programming. [FB].1-5, [FBb]
- Main functional-programming concepts: Order of evaluation, Recursion;
Higher-order functions; Anonymous functions; Curryfication; Lists; Recursion; Correctness proofs. [FB].6-12
Introduction to Haskell; Polymorphic types; Pattern Matching; Type Classes. Infinite structures. [HPF],[B2]
Types for functional programming. [FB].14
- Introduction and Short review of the λ-calculus:
λ-terms, free and bound variables, α-conversion, substitution; theory of β-reduction and some fundamental results; overview of the theory of β-conversion. [FBb], [FB].13
- λ-definible functions. [FB].13,
Tail recursion in functional programming. [B3]
- The Curry approach to types. Type assignement. [FB].14 (no pp algorithm, no unify algorithm),
- The actors model of concurrent programming; Sequential programming in Erlang [AS],[FB5],[JAetal](For the sequential part of Erlang it is enough the Hands-on tutorial whose link is in the Interpreters and manuals section below.)
- Concurrent Programming in Erlang [JAetal],[FB5]
- Program examples in Erlang [AAVV]
- Process calculi: Introduction to the Pi-calculus; Structural congruence; Scope extrusion; reduction semantics.. [PS]
- Sketchy introduction to Labelled transition semantics, contextual equivalence and bisimulation [BP2]
- Introduction to the PICT language; Core Pict; Programming in PICT; PICT types. [BP],[FB3]
- Subtyping in PICT; Pattern matching; responsive channels. [BP],[FB3]
- Overview of Session Types. [FB7]
- Introduction to the language SePi. [FVM],[FV]
- Programming in SePi. [FVM],[FV]
- Introduction to Scribble [AVscr], [AVscr2],
- Overview of process calculi for distributed programming. [PS]
- Basics of distributed programming in Erlang. [STetAl]
Reading Material
-
[FB] Franco Barbanera
Short Introduction to Functional Programming and the Lambda-Calculus (no pp algorithm, no unify algorithm)
(html file, last update: March 2016)
-
[FBb] F.Barbanera Computazioni, Programmazione funzionale e Preludio al lambda-calcolo (file .pdf, updated 1 Dic 2017) (LaTeX source)
-
[B2]
Franco Barbanera Notes on Data Types in Haskell (html file, last update: 11 Jan 2010)
[B3]
Franco Barbanera Notes on Tail Recursion (html file)
-
[HPF]
P.Hudak, J.Peterson, J.H.Fasel
A Gentle Introduction to Haskell 98 (pdf file) (To be studied: Ch.s 1-3; Ch. 4: only pag.15; Ch.5: only up to the first half of page 25; Ch.7: up to page 33 included)
- [AS]A.Shali Actor Programming in Chapel (.pdf file; Section 2(no 2.5))
- [FB5]F.Barbanera Short Notes On Erlang and Actors (.html file) last update: 18 June 2012
- [JAetal1]J.Armstrong et al. Concurrent Programming in Erlang (.pdf file; 5.1-5.4)
- [AAVV] Erlang Examples (.txt file;)
-
[PS] P.Sewell
Applied Pi, A brief tutorial
(pdf file) Chapters 1(except 1.5), 2
-
[BP] B.Pierce
Programming in the Pi-Calculus, A Tutorial Introduction to Tamed Pict
(pdf file)(Chapters 1,2.2,2.5.2,3,4,6(only pag.49 and first example of 50))
[BP2] B.Pierce
Foundational Calculi for Programming Languages
(pdf file)(Section 3.3)
- [FB3] F.Barbanera
Summary of [BP] with a few extra notes (file .txt) last update: 6 May 2012.
- [FB7] F.Barbanera
A sketchy overview of Session Types (file .html)
- [FV] J. Franco, V. T. Vasconcelos
Introduction to SePi
- [FVM] J. Franco, V. T. Vasconcelos, D. Mostrous
SePi by Example
- [AVscr] AA.VV.
Scribble Tutorial
- [AVscr2] AA.VV.
Informal description of Scribble (pdf file) Section 3
- [D-EtAl] Simon Thompson et Al., Erlang Programming. (Book) Published by O'Reilly Media.
Chapter 11, up to section "Node Connections" (excluded)
Interpreters, Compilers and Manuals:
Optional Reading Material