Strumenti Utente

Strumenti Sito


Principles for Software Composition

PSC 2019/20 (375AA, 9 CFU)

Lecturer: Roberto Bruni
web - email - phone 050 2212785 - fax 050 2212726

Office hours: Tuesday 15:00-17:00 or by appointment


The objective of the course is to present:

  • different models of computation,
  • their programming paradigms,
  • their mathematical descriptions, both concrete and abstract,
  • some intellectual tools/techniques for reasoning on models.

The course will cover the basic techniques for assigning meaning to programs with higher-order, concurrent and probabilistic features (e.g., domain theory, logical systems, well-founded induction, structural recursion, labelled transition systems, Markov chains, probabilistic reactive systems, stochastic process algebras) and for proving their fundamental properties, such as termination, normalisation, determinacy, behavioural equivalence and logical equivalence. Temporal and modal logics will also be studied for the specification and analysis of programs. In particular, some emphasis will be posed on modularity and compositionality, in the sense of guaranteeing some property of the whole by proving simpler properties of its parts.


There are no prerequisites, but the students are expected to have some familiarity with discrete mathematics, first-order logic, context-free grammars, and code fragments in imperative and functional style.


Main text:

Other readings:

External resources:


Normally, the evaluation would have been based on written and oral exams.

Due to the covid-19 countermeasures, for the current period, the evaluation will be solely based on oral exams.

Registration to exams (mandatory): Exams registration system

During the oral exam the student must demonstrate

  • knowledge: his/her knowledge of the course material, and
  • problem solving: the ability to solve some simple exercises, and
  • understanding: the ability to discuss the reading matter thoughtfully and with propriety of expression.

Oral Exams: schedule

Date Time Name Place
Thursady 10/09 12:00 Lorenzo Gazzella Microsoft Teams


  • Due to the covid-19 emergency situation, there will be no mid-term exams
  • The lectures of March 5th and 6th are canceled due to the decree that suspends all University lectures until March 15th
  • as the course starts:
    Each student should send an email to the professor from his/her favourite email account with subject PSC19-20 and the following data
    (by doing so, the account will be included in the class mailing-list, where important announcements can be sent):
    1. first name and last name (please clarify which is which, to avoid ambiguities)
    2. enrolment number (numero di matricola)
    3. bachelor degree (course of study and university)
    4. your favourite topics in computer science (optional)

Lectures (1st part)

N Date Time Room Lecture notes Links
1 Wed 19/02 14:00-16:00 L1 Introduction to the course
2 Thu 20/02 14:00-16:00 N1 Preliminaries:
formal semantics, normalisation, determinacy, consistency, equivalence,
signatures, unification problem,
3 Fri 21/02 14:00-16:00 N1 Preliminaries:
logical systems, derivations, logic programs, goal-oriented derivations
4 Wed 26/02 14:00-16:00 L1 Exercises:
unification, goal-oriented derivations

Induction and recursion:
well-founded relations, well-founded induction, mathematical induction
5 Thu 27/02 14:00-16:00 N1 Induction and recursion:
proof of induction principle, structural induction,
termination of arithmetic expressions, determinacy of arithmetic expressions
6 Fri 28/02 14:00-16:00 N1 Induction and recursion:
structural induction over many-sorted signatures, termination of boolean expressions,
operational semantics of commands, divergence
induction on derivations
7 Wed 04/03 14:00-16:00 L1 Induction and recursion:
rule induction, determinacy of commands, well-founded recursion,
denotational semantics of arithmetic expressions,
consistency of operational and denotational semantics for arithmetic expressions
lexicographic precedence relation, Ackermann function, fixpoint equations
- Thu 05/03 14:00-16:00 N1 Lecture canceled due to covid-19 countermeasures
- Fri 06/03 14:00-16:00 N1 Lecture canceled due to covid-19 countermeasures
8 Wed 11/03 14:00-16:00 Google Meet Exercises:
induction and recursion, termination, determinacy, divergence

Partial orders and fixpoints:
partial orders, Hasse diagrams, chains, least element, minimal element,
bottom element, upper bounds, least upper bound, chains, limits
9 Thu 12/03 14:00-16:00 Google Meet Partial orders and fixpoints:
complete partial orders, powerset completeness,
CPO of partial functions, monotonicity, continuity, Kleene's fixpoint theorem
10 Fri 13/03 14:00-16:00 Google Meet Partial orders and fixpoints:
immediate consequences operator, denotational semantics of commands,
fixpoint computation, semantic equivalence, consistency of commands
11 Wed 18/03 14:00-16:00 Google Meet Exercises:
well-founded recursion, posets, semantics

Partial orders and fixpoints:
consistency of commands, completeness
12 Thu 19/03 14:00-16:00 Google Meet Lambda-notation:
free variables, capture-avoiding substitutions

an overview
ghci session 1
13 Fri 20/03 14:00-16:00 Google Meet Haskell:
lambda, guards, pattern matching, recursion, exercises
ghci session 2
14 Wed 25/03 14:00-16:00 Google Meet Haskell:
recursive definitions, folds, application, function composition
ghci session 3
15 Thu 26/03 14:00-16:00 Google Meet Haskell:
data types, type classes, recursive data structures, derived instances
ghci session 4

16 Fri 27/03 14:00-16:00 Google Meet Exercises:
ghci session 5

syntax, type system, type checking, type inference, principal type
17 Wed 01/04 14:00-16:00 Google Meet HOFL:
canonical forms, operational semantics, lazy vs eager evaluation

Domain theory:
Integers with bottom, cartesian product, projections
- Thu 02/04 14:00-16:00 canceled for preparation to self-assessment test
18 Fri 03/04 14:00-16:00 Google Meet Self-assessment test

Lectures (2nd part)

N Date Time Room Lecture notes Links
19 Wed 08/04 14:00-16:00 Google Meet Correction of self-assessment test
- Thu 09/04 14:00-16:00 canceled
20 Wed 15/04 14:00-16:00 Google Meet Domain theory:
switching lemma, functional domains, lifting
21 Thu 16/04 14:00-16:00 Google Meet Domain theory:
continuity theorems, apply, fix, let notation

Denotational semantics of HOFL:
definition and examples, type consistency
22 Fri 17/04 14:00-16:00 Google Meet Denotational semantics of HOFL:
substitution lemma, compositionality and other properties

Consistency of HOFL:
Counterexample to completeness, correctness of the operational semantics,
operational convergence, denotational convergence,
operational convergence implies denotational convergence,
denotational convergence implies operational convergence (optional),
operational and denotational equivalence, correspondence for type int,
unlifted semantics
23 Wed 22/04 14:00-16:00 Google Meet Exercises:
HOFL, domains
24 Thu 23/04 14:00-16:00 Google Meet Erlang:
an overview
erl session
25 Fri 24/04 14:00-16:00 Google Meet CCS:
Syntax, operational semantics, finitely branching processes,
guarded processes, value passing, abstract semantics, graph isomorphism
26 Wed 29/04 14:00-16:00 Google Meet CCS:
trace equivalence, bisimulation game, strong bisimulation,
strong bisimilarity, strong bisimilarity is an equivalence,
strong bisimilarity as a fixpoint
27 Thu 30/04 14:00-16:00 Google Meet CCS:
strong bisimilarity as a fixpoint, Knaster-Tarski's fixpoint theorem,
strong bisimilarity is a congruence, some laws for strong bisimilarity,
Hennessy-Milner logic
28 Wed 06/05 14:00-16:00 Google Meet CCS:
weak bisimulation, weak bisimilarity, weak observational congruence,
Milner's tau-laws, modelling with CCS
29 Thu 07/05 14:00-16:00 Google Meet CCS:
modelling and playing with CCS (using CAAL)
CAAL session (copy the text and paste it in the Edit panel)
30 Fri 08/05 14:00-16:00 Google Meet Exercises:
Erlang, CCS

Temporal and modal logics:
linear temporal logic (LTL)
31 Wed 13/05 14:00-16:00 Google Meet Temporal and modal logics:
computational tree logic (CTL* and CTL), mu-calculus
32 Thu 14/05 14:00-16:00 Google Meet GoogleGo:
an overview
Google Go
33 Fri 15/05 14:00-16:00 Google Meet Pi-calculus:
syntax and operational semantics, examples
34 Wed 20/05 14:00-16:00 Google Meet Exercises:
logics, GoogleGo, pi-calculus

early and late bisimilarities, weak bisimilarities
35 Thu 21/05 14:00-16:00 Google Meet Measure theory and Markov chains:
probability space, random variables, stochastic processes,
homogeneous Markov chains, DTMC, DTMC as matrices, DTMC as PTS,
next state probability, finite path probability, ergodic DTMC,
steady state distribution, negative exponential distribution
36 Fri 22/05 14:00-16:00 Google Meet Measure theory and Markov chains:
CTMC, embedded DTMC, infinitesimal generator matrix,
CTMC stationary distribution, bisimilarity revisited, reachability predicate,
CTMC bisimilarity, DTMC bisimilarity

Markov chains with actions:
reactive systems, bisimilarity for reactive systems, Larsen-Skou logic

motivation, basic ideas, PEPA workflow
37 Wed 27/05 14:00-16:00 Google Meet PEPA:
PEPA syntax, apparent rate, PEPA operational semantics,
performance analysis

probabilistic systems
- 12/06 Microsoft Teams Oral Exam
Exams registration system
- 03/07 Microsoft Teams Oral Exam
Exams registration system
- 24/07 Microsoft Teams Oral Exam
Exams registration system
- 04/09 Microsoft Teams Oral Exam
Exams registration system
- 21/01 Microsoft Teams Oral Exam
Exams registration system
- 11/02 Microsoft Teams Oral Exam
Exams registration system

Past courses

magistraleinformatica/psc/2019-20/start.txt · Ultima modifica: 08/02/2021 alle 17:42 (3 anni fa) da Roberto Bruni