Edition 2015/2016     Previous editions


Teacher: Alessio Bechini
CFU: 6 (out of 9)
Code : 589II

Information on the other part of the course is available on the webpage maintained by G. Lettieri.


tag cloud of common Concurrent Computing terms
The course is aimed at providing students with a comprehensive vision of the foundations of concurrent and distributed programming. The main focus of the lectures is on system models and on different types of frameworks intended to support the development of concurrent systems at different abstraction levels and on different underlying platforms.

Students will acquire the basic skills to participate in the design, implementation and integration of concurrent and distributed software systems, possibly made of heterogeneous components.

Prerequisites: knowledge of Operating Systems basics, and mastering of Java and C/C++.

 

NEWS/ALERTS

From June 13, 2016 to June 17, 2016 in Pisa it will be held the conference Ada-Europe 2016 (http://www.cister.isep.ipp.pt/ae2016/).
It will be possible, for some students, to freely attend the conference tutorials (see the program at http://www.cister.isep.ipp.pt/ae2016/tutorials ). In particular, students who have attended the course "Concurrent and Distributed Systems" may found interesting the tutorial "T8 - Parallelism in Ada, C, Java and C#, Today and Tomorrow" by B. Moore, S. Michel. on June 17, 2016.
Students willing to participate are asked to contact A. Bechini (a.bechini@ing.unipi.it) to receive indications on how to get a free registration for the event.

Dates for oral exams in the 2016 Summer Session - Students are required to register through the Exam Sign-in Portal at least two days before the exam date.

1st oral exam 2nd oral exam 3rd oral exam September oral exam
Tue 14/06/2016
Lab Blu, h.9:00
Thu 30/06/2016
C31 h.9:00
Thu 21/07/2016
C31 h.9:00
Tue 13/09/2016
B23 h.14:30
 
 

SCHEDULE
First lecture on Thu. Sep. 24th, 2015

Mon. 11:30-13:30 ADInform1 (usually, Bechini); Tue. 13:30-15:30 ADInform1 (usually, Bechini); Wed. 8:30-10:30 AdInform1 (usually, Lettieri); Thu. 9:30-11:30 ADInform2 (usually, Bechini)

The lectures' schedule and relative updates, as well as exam dates, are available on a public Google Cal, which can be imported with the following ICS address:
https://www.google.com/calendar/ical/orl95i8nga1ar07d2g9fmedvg4%40group.calendar.google.com/public/basic.ics


 

SYLLABUS

A detailed description is available via the record of lessons (see the left menu item).
Hereafter, a cathegorized list of topics can be interactively explored.



 

FINAL TEST
The final test is organized as follows:

a)   development of a project; specifications must be agreed upon with the teacher; the finalized work must be shown to the teacher for final approval before the oral exam
b)   oral exam (possibly with written exercises), on all the topics covered by the course.


 

CLASS MATERIAL
The main reference material is represented by class notes.
All the course contents are covered within the textbooks and other material reported hereafter. These references can also be taken as suggestions for in-depth discussions on class topics.

Books:
 
  T1 - Title        Operating System Concepts 9th ed.
         Authors   Abraham Silberschatz, Peter B. Galvin, Greg Gagne
         Pub.        Wiley
         ISBN       9781118093757
         Notes:     A classical resource on OSs,
                       discussing synchronization problems as well.
  T2 - Title        Distributed Systems - Concepts and Design 5th ed.
         Authors   George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair
         Pub.        Addison-Wesley
         ISBN10    0132143011
         Notes:     A comprehensive overview of distributed systems,
                       addressing both theoretical and architectural issues.


Classwork material:
Provided after each lab session.

- CW01 (data races, ThreadLocal, AtomicInteger, Peterson)

- CW02 (bounded buffer with condition variables and semaphores)

- CW03 (task executors, thread pooling, futures)

- CW04 (periodic task scheduler, benchmarking)

- CW06 (RMI example)

- CW07 (basic use of Servlets)

- CW08 (EJB invoked by a Servlet); CW08_1 (with explicit lookup).

- CW09 (JMS communication)



Misc:

 S1/2/3/4 - Slides on related topics, available on the web: Generics, Nested classes, JCF, and JUnit

 S5 - Slides on Java Executor Framework (from a course at the Univ. of Birmingham)

 W1 - Tutorial on Java High Level Concurrency Objects (not all details have been mentioned at lesson)

 C1/2 - Java code for examples of non-blocking synchronization: Treiber's stack and Michael/Scott's queue

 W2 - Online paper on issues in Java benchmarking

 C3 - Pseudocode for a Bounded Buffer solution with asynchronous message passing.

 W3 - Tutorial on MPI (from Lawrence Livermore National Lab; here, another nice one).

 W4 - Tutorial on Java RMI (for "general" distributed objects: Java IDL)

 S5 - Slides (commercial-style presentation) on Akka and the related Actor model.)

 W5 - Tutorial on Java EE - massive official document: only Servlets (no asynch mode), EJBs, and JMS are in our syllabus



 

LINKS
 The following web references can be useful for practical programming.


 L1 - NetBeans IDE

 L2 - Eclipse IDE

 L3 - Cheat sheet for JCF

 L4 - MPI home, Open MPI

 L5 - Akka

 L5 - Maven slides and site






The backgroung images for this page have been obtained by reworking the "simple icons" for AWS (http://aws.amazon.com/architecture/icons/).