Introduction

Dit is de website van Concurrent & Distributed Programming. Informatie is alleen beschikbaar in het Engels.

This is the website for Concurrent and Distributed Programming (CDP) 2011/2012, kw2. This website will hold important information on the course, e.g.,

Course description

The aim of the Concurrent and Distributed Programming course is to study the theory and practice of concurrent and distributed programming. The student will acquire the skills necessary to succeed in a world where almost every aspect of computing is concurrent and/or distributed.

Content: processes, concurrent program, concurrency abstraction, synchronization, communication, criticial section, linear time temporal logic (LTL), manual proof, SPIN, distributed algorithms, multi-threaded programming, etc.

Objectives

CDP has the following learning objectives:
  • level of application: understanding the fundamental concepts of concurrent and distributed algorithms;
  • level of application: manual proof of correctness of concurrent algorithms;
  • level of application: the use of the model checker SPIN to model and verify concurrent algorithms;
  • level of application: manual translation of an abstract Promela model to a corresponding Java implementation.

Organizational Matters

Teachers

CDP is taught by:

Teaching method

The course on CDP consists of: The lectures are meant to explain basic and advanced concepts of concurrent and distributed programming. The take home assignments are meant to get experience with (i) LTL proofs, (ii) the model checker SPIN and concurrent programming with Java, and (iii) distributed programming in Java with MPJ. The examination is used to assess the knowledge and application level of the student.

Material

CDP uses the following (required) text book: The following book is (highly) recommended: MPJ is a Java implementation of MPI. During the course's course, additional material (e.g., tutorials, scientific papers) might be added. This additional material will be made available through this website.

Prerequisites

Prerequisites for this course include:
  • Insight in the functions and structuring of operating systems.
    This is covered during: Operating systems (211045).
  • Programming skills.
    This is covered in the courses: Programming 1 (213500) and Programming 2 (213505).
  • The use of mathematical techniques and corresponding software tools for modeling and analysis of software systems.
    This is covered during: Formal Methods for Software Engineering (213520).

Assessment

The course CDP is assessed by means of three practical assignments and a written examination. The students work individually on the three take home assignments. The written examination is used to assess the knowledge and application level of the student w.r.t. the contents of CDP.

The final mark for CDP is the sum of the marks obtained for the three take home assignments (max. 30 points) and the written examination (max. 70 points).

Take home assignments (30 out of 100 points)

General rules:
  • The homework assignments have been designed to give you hands-on experience with the course material. You probably need this training to sit the exam.
  • You are encouraged to discuss the course material with your peers and to help each other understand the material. However, you must always hand in your own work and not a copy or a near copy of someone else's work.
  • No marks are awarded for work that is handed in late. Note that there is a deadline roughly every two weeks to help you keep up with the pace of the course.
  • Marks earned during previous years cannot be carried over.

The assignments will be made available below:

assignment available deadline
Assignment 1 - Proofs Tuesday, 22 November 2011 Tuesday, 6 December 2011, 23:59u
Assignment 2 - Shared Memory Tuesday, 13 December 2011 Tuesday, 10 January 2012, 23:59u
Assignment 3 - Distributed Memory Tuesday, 10 January 2012 Tuesday, 24 January 2012, 23:59u

Examination (70 points)

The (open book) examination takes place on Friday, 03 February 2012.
The (open book) re-examination takes place on TBA.

Schedule

There will be eight lectures, which all take place in room CR 2N on Tuesdays at 3+4.
The lectures will be given in English.

# date topic (+ slides) material teacher
1 15 Nov Introduction Ch 1 & 2 Jaco van de Pol
2 22 Nov Mutual Exclusion and Linear Temporal Logic Ch. 3 & 4 Jaco van de Pol
3 29 Nov Progress Proof and Model Checking with SPIN Ch. 3 & 4 + slides Jaco van de Pol
4 13 Dec Memory Models, Atomicity, Performance slides+ TAMP, Ch. 3 Marieke Huisman
5 20 Dec Lock-free & Wait-free Data Structures slides + TAMP, Ch. 8, 10, Sect. 1.5 Marieke Huisman
6 21 Dec Concurrent Programming slides + TAMP, Ch. 10 Marieke Huisman
7 10 Jan Distributed Algorithms in MPI (I) slides Jaco van de Pol
8 17 Jan Distributed Algorithms in MPI (II) slides + MPJ examples Jaco van de Pol