Concurrency & Multithreading

Vrije Universiteit Amsterdam

Course Description

  • Course Name

    Concurrency & Multithreading

  • Host University

    Vrije Universiteit Amsterdam

  • Location

    Amsterdam, The Netherlands

  • Area of Study

    Computer Programming

  • Language Level

    Taught In English

    Hours & Credits

  • ECTS Credits

    6
  • Recommended U.S. Semester Credits
    3
  • Recommended U.S. Quarter Units
    4
  • Overview

    Period 2

    Level: 400

    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
    Lecture, Seminar.

    TYPE 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.

    RECOMMENDED BACKGROUND KNOWLEDGE
    Datastructures & Algorithms Programming in Java

Course Disclaimer

Courses and course hours of instruction are subject to change.

Some courses may require additional fees.