Concurrency & Multithreading

2019-2020

Course Objective

This course provides a comprehensive presentation of the foundations and
programming principles for multicore computing devices.

Specific learning objectives are:
* To provide insight into fundamental notions of multicore computing and
their relation to practice: locks, read-modify-write operations, mutual
exclusion, consensus, construction of atomic multi-reader-multi-writer
registers, lost wakeups, ABA problem.
* To provide insight into algorithms and frameworks for multicore
computing and their application in multi-threaded programs: mutual
exclusion algorithms, spin locks, monitors, barriers,
AtomicStampedReference class in Java, thread pools in Java,
transactional memory.
* Analyzing algoritmes for multicore computing with regard to
functionality and performance: linearizability, starvation- and wait-
freeness, Amdahl's law, compute efficiency gain of parallelism.
* Mastering elementary datastructures in the context of multicore
computing: lists, queues, stacks.
* Programming in multi-threaded Java, and performing experiments with
such programs.

Course Content

The course consists of the following topics: Shared memory, mutual
exclusion, synchronization operations, concurrent data structures,
scheduling, transactional memory, and a multithreaded programming
assignment.

Teaching Methods

4 hours per week HC, 4 hours per week WC.

Method of Assessment

The written exam counts for 75% and the programming assignment for 25%
of the final mark.

Both for the written exam and the programming assignment at least a 5.0
must be obtained (and the overall average mark should be at least 5.5).

Only students that achieved at least a 3.0 for their initial programming
assignment are offered a resit opportunity for this assignment.

Literature

Maurice Herlihy, Nir Shavit, The Art of Multiprocessor Programming,
Morgan Kaufmann, 2008.

Target Audience

3CS

Additional Information

The homepage of the course is at http://www.cs.vu.nl/~tcs/cm/

Recommended background knowledge

Datastructures & Algorithms

Programming in Java

General Information

Course Code X_401031
Credits 6 EC
Period P1
Course Level 400
Language of Tuition English
Faculty Faculty of Science
Course Coordinator prof. dr. W.J. Fokkink
Examiner prof. dr. W.J. Fokkink
Teaching Staff prof. dr. W.J. Fokkink

Practical Information

You need to register for this course yourself

Last-minute registration is available for this course.

Teaching Methods Seminar, Lecture
Target audiences

This course is also available as: