Concurrency: Multi-core Programming and Data Processing

This course covers the foundations of concurrent systems and multiprocessor synchronization. Students who take this course will learn the basics of multicore programming, the new paradigm of computer science. The main topics covered in the course include foundations of concurrency: concurrent objects and consistency, foundations of shared memory, the relative power of synchronization operations, universality of consensus; and practical algorithms: mutual exclusion, spin locks and contention, lock-free and wait-free algorithms, concurrent data structures (linked lists, skip lists, queues, stacks, hash tables), scheduling and work distribution, barriers, transactional memory. The course will be complemented by practical, hands-on exercises on multi-core computers.


Code 12027
Type Course
Site Neuchâtel
Track(s) T1 – Distributed Software Systems
T6 – Data Science
Semester S2024


Learning Outcomes

On successful completion of this class, you will be able to:

  • Understand how today’s multicore hardware supports concurrent programming
  • Reason about concurrent specifications and consistency models such as linearizability and sequential consistency
  • Know a collection of concurrent obstruction-free, lock-free, and wait-free data structures
  • Design scalable concurrent algorithms without locks (e.g., using atomic operations like compare-and-swap)
Lecturer(s) Pascal Felber
Language english
Course Page

The course page in ILIAS can be found at

Schedules and Rooms

Period Weekly
Schedule Thursday, 08:15 - 12:00
Location UniNE, Unimail
Room B104

Additional information


First Lecture
The first lecture will take place on Thursday, 22.02.2024 at 09:15 in UniNE, Unimail, room B104.