The goal of this course is to introduce students to the fundamental theoretic and practical principals of concurrency, with emphasis on the correctness, design and implementation of models of concurrent computation using shared memory architectures.

  • The 1st part of the course is more fundamental using an algebra for processes.
  • This 2nd part of the course will focus on the programming aspect, using the Scala language to study several concurrency patterns and libraries in Java Virtual Machines.
  • Other links:
    • Moodle: management of the presence of students and other links;
    • Sigarra@FCUP: the official plan of this course.

Lectures

  • 19 Feb 26: [T] Introduction to the course (1-intro.pdf). Transition systems (2-trans-sys.pdf).
  • 20 Feb 26: [P] Exercises on transition systems (exerc01.pdf)
  • 26 Feb 26: [T] Sequential CCS (3-seq-ccs.pdf).
  • 27 Feb 26: [P] Exercises on sequential CCS (exerc02.pdf)
  • 5 Mar 26: [T] Paralel composition. Input and output actions. Synchronization. (4-ccs-par.pdf).
  • 6 Mar 26: [P] Exercises on parallel composition and synchronization. (exerc03.pdf)
  • 12 Mar 26: [T] Bisimilarity and weak bisimilarity. (5-equiv.pdf, slides 1-15)
  • 13 Mar 26: [P]Exercises on observational equivalences (exerc04.pdf)[(exercises/p1/exerc04.pdf) and exerc04_sol.pdf

Literature and Material

Slides

  1. Introduction to the course
  2. Labelled transition systems
  3. Sequential CCS
  4. Full CCS (with concurrency)
  5. Equivalences
  6. CCS with data

Exercises

  1. Exercises on labelled transition systems
  2. Exercises on sequential CCS
  3. Exercises on full CCS (with concurrency)
  4. Exercises on observational equivalences and solutions

Examples of exams and tests

Main books

  • Reactive systems modelling, specification and verification; Luca Aceto, Anna Ingólfsdóttir, Kim Guldstrand Larsen, Jiri Srba; 2007 (Chap. 1-4 and 7)
  • Introduction to Concurrency Theory; Roberto Gorrieri and Cristian Versari; 2015
  • Communication and Concurrency; Robin Milner; Prentice Hall International Series in Computer Science, 1989.
  • Learning Concurrent Programming in Scala, Aleksandar Prokopec; ISBN: 1786466899

Previous years

Teaching methods and learning activities

Lectures; intermediate test (mandatory) and final test or final exam.

The lectures mix the presentation of new material (introducing concepts, main algorithms and some results) with interactive discussion of their application when solving real problems.

The homework focus is on practical application of algorithmic concepts, consolidating the learned material.

The final exam and intermediate tests (closed book), globally evaluates the knowledge acquired by the students.

Evaluation Type

Distributed evaluation with final exam

Assessment Components

designation Weight (%)
Exam 70,00
Assignment 30,00

Eligibility for exams

Students must attend at least 75% of the practical classes to be admitted to the exams.

Calculation formula of final grade

Distributed evaluation will include both modelling (EM) and program implementation (EI). The final grade (FG) is obtained by weighting the distributed assessment scores and final exam (FE) as follows:

  • FG = 3 * EM + 3 * EI + 14 * FE.

Exam dates

  • First test (covering module 1): 10 April, 14h-16h, room FC6.142

Lecturers

Edit the content of this page here.