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,[HPF]
- A calculus for reasoning on Java-like languages: Featherweight Java, sintax and reduction. [IPW].1,2;
- Typing rules for FJ; Properties. [IPW]; [BV]
- 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. [PS]
- Pi-calculus variants. LTS. [PS]
- Introduction to the PICT language; Core Pict. [BP],[FB3]
- 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: 6 May 2012)
-
[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)(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 f
or Java and GJ (pdf file) (Sections 1, 2)
-
[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.
-
[AC] Alison Cawsey The Basics of Prolog (html file, excerpt from AI Programming in Prolog)
-
[PL] P.Lucas Introduction to Prolog (.pdf file; 4.6 and 4.7 optional)
- [FB4] F.Barbanera Short Notes on Prolog (.txt1 file;)
- [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 (html file),
Map coloringII (html file),
(Excerpts from Prolog Tutorial),
Map coloringB (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,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)
- [JAetal1]J.Armstrong et al. Concurrent Programming in Erlang (.pdf file; 5.1-5.4)
- [FB5]F.Barbanera Short Notes On Erlang and Actors (.html file) last update: 18 June 2012
- [AAVV] Erlang Examples (.txt file;)
- [MP]M.Pouzet Lucid-synchrone Tutorial (.pdf file; Subsections 1.1.1-1.1.5, 1.2.1)
Interpreters and Manuals:
Optional Reading Material
- The Benchmark Game
-
Functional Programming in the real world
-
[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