URL study guide
https://studiegids.vu.nl/en/courses/2024-2025/X_401031Course Objective
This course provides a comprehensive presentation of the foundations and programming principles for multicore computing devices. Specific learning objectives are:- Acquiring 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. (Knowledge and understanding)
- Acquiring 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. (Knowledge and understanding)
- Analyzing algorithms for multicore computing with regard to functionality and performance: linearizability, starvation
- and wait-freeness, Amdahl's law, compute efficiency gain of parallelism. (Applying knowledge and understanding)
- Mastering elementary data structures in the context of multicore computing: lists, queues, stacks. (Applying knowledge and understanding) (Making judgements)
- Programming in multi-threaded Java, and performing experiments with such programs. (Applying knowledge and understanding) (Making judgements) (Learning skills)
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
Lectures: 4 hours per week. Exercise classes: 2 hours per week.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 must 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, for which at most a 6.0 can be achieved.Literature
Maurice Herlihy, Nir Shavit, Victor Luchangco, Michael Spear, The Art of Multiprocessor Programming (2nd edition), Morgan Kaufmann, 2020.Target Audience
Bachelor Econometrics and Operations ResearchMinor Deep ProgrammingRecommended background knowledge
Data structures & Algorithms, Computer Programming, Basic knowledge of Java.Language of Tuition
- English
Study type
- Premaster
- Bachelor