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:- Jaco van de Pol (week 1,2,3,7,8)
- Marieke Huisman (week 4,5,6)
Teaching method
The course on CDP consists of:- eight lectures (see the schedule below),
- three take home assignments and
- an examination.
Material
CDP uses the following (required) text book:- Mordechai (Moti) Ben-Ari
Principles of Concurrent and Distributed Programming (2ed edition).
Addison-Wesley Professional, 2006. [companion website]
- Maurice Herlihy and Nir Shavit.
The Art of Multiprocessor Programming.
Morgan Kaufmann, 2008.
- A basic MPJ implementation can be downloaded here.
- ibis.properties
- MPIHello.java
- MPIRing.java
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 |
