The list of the arguments of the
course, together with the material to study.
- Introduction to Functional Programming; Functional programs; Introduction to Scheme [FB].1-5
- Order of evaluation, Recursion;
Higher-order functions; Anonymous functions; Curryfication; Definitions; Lists; Recursion on flat and nested lists; Correctness proofs; Typed languages. [FB].6-12
- Introduction to Lambda-calculus; Free and Bound Variables; alpha conversion; Beta-reduction and related results and notions [FB].13
- Introduction to typed lambda-calculi; Type assignment 'a la Curry. [FB].14
- Type substitution; Principal pairs; Introduction to Haskell; Functions; Recursive Types. [FB].14, [B2]
- Polymorphic types; Pattern Matching; Type Classes. [HPF],[B2]
- Infinite structures in Haskell; Introduction to Monads and I/O in Haskell. [HPF] ,[JN]
- Typed lambda-calculus 'a la Church; Type Checking; Extensions of lambda-calculus and their type system a' la Curry; Introduction to Subtyping. [FB].14-15
- A calculus for reasoning on Java-like languages: Featherweight Java, sintax and reduction. [IPW].1,2;
- Typing rules for FJ; Properties. [IPW].2;[FB6]
- Introduction to Type systems for OO-languages; Fundamental concepts of OO-languages using OCaml. [FB2]
- Type safety issues in OO-languages; Subtyping in OO-languages using OCaml [FB2]
- Process calculi: Introduction to the Pi-calculus; Reduction semantics; LTS; Pi-calculus variants. [PS]
- Introduction to the PICT language; Core Pict. [BP],[FB3]
- Overview of Session Types. [FB7]
- Introduction to Prolog. [PL],[FB4]
- Prolog programming; Cut. [PL],[UE],[JRF]
- Tail recursion in Haskell and Prolog [JRF],[B3]
- The dataflow computational model; declarative concurrency [vR],[LH]
- The actors model of concurrent programming; Introduction to concurrent programming in Erlang [AS],[FB5],[JAetal](For the non concurrent 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],[AAVV]
- Syncronous Reactive programming: Lucid-Syncrone [vR],[MP]
Reading Material
-
[FB] Franco Barbanera
Short Introduction to Functional Programming and the Lambda-Calculus
(html file, last update: 27 March 2013)
-
[B2]
Franco Barbanera Notes on Data Types in Haskell (html file, last update: 11 Jan 2010)
[B3]
Franco Barbanera Notes on Tail Recursion and call/cc (html file, last update: 20 May 2012)
-
[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)
- [JN]
Jeff Newbern
All About Monads (link to external html file, a version also in here )(downlodable .zip version) (To be studied: Part I: all, except Zero and Plus in The monads laws and except Monad support in Haskell. Part II: Maybe, List, IO.
-
[IPW] A.Igarashi, B.Pierce, P.Wadler
Featherweight Java, A minimal core calculus for Java and GJ (pdf file) (Sections 1, 2)
-
[FB6] About rule (T-SCast) in FJ and downcasting in Java (html file)
-
[FB2] Notes on type systems for OO languages and OCaml
-
[PS] P.Sewell
Applied Pi, A brief tutorial
(pdf file) (Chapters 1(except 1.5), 2(only grouping and hierarchy))
-
[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))
- [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)
-
[AC] Alison Cawsey The Basics of Prolog (html file, excerpt from AI Programming in Prolog, by Alison www.macs.hw.ac.uk)
- [FB4] F.Barbanera Short Notes on Prolog (.html file)
-
[PL] P.Lucas Introduction to Prolog (.pdf file; 4.6 and 4.7 optional)
- [UE] U.Endriss An Introduction to Prolog Programming (.pdf file; pages 35-43)
-
[JRF] J.R.Fisher. A few programming examples in Prolog: Chess Queens (html file),
Paths in graphs (html file),
Map coloring-I (html file),
Map coloring-II (html file),
(Excerpts from Prolog Tutorial),
Map coloring-III (html file)
(Excerpt from Prolog Programming in depth)
-
[vR] Peter Van Roy Programming Paradigms for Dummies: What Every Programmer Should Know (pdf file)(Sections 2,4,5.3,6(no functional reactive progr.))
The paradigms diagram(pdf version) (jpg format version)
- [LH]B.Lee,A.R.Hurson Issues in Dataflow Computing (.pdf file; Sections I and II)
- [AS]A.Shali Actor Programming in Chapel (.pdf file; Section 2)
- [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;)
- [MP]M.Pouzet Lucid-synchrone Tutorial (.pdf file; Subsections 1.1.1-1.1.5, 1.2.1)
Interpreters, Compilers and Manuals:
Optional Reading Material
- The Benchmark Game
-
Functional Programming in the real world
- Scribble: a language (based on session types) to describe application-level protocols among communicating systems.
-
[KB] Kim B. Bruce;
Foundations of Object-Oriented Programming Languages: Types and Semantics;
The MIT Press; ISBN 0-262-02523-X (a couple of copies are available in the library) (Ch.s 1-7, except Sect. 4.2)
(not strictly needed: Relevant points and sentences of [KB]
Ch.1-2
Ch.3
Ch.4-5
Ch.6-7 (files .txt)
- [CH] F. Cardone, R. Hindley, Storia del lambda-calcolo (
file .ps of a few introductory pages.)
-
[BV] B. Venneri
Slides I on [IPW];
Slides II on [IPW] (pdf files, in
Italian)
- Francesco Cesarini, Simon Thompson;
Erlang Programming
A Concurrent Approach to Software Development