Prospectus

nl en

Multiprocessor Programming

Course
2024-2025

Admission requirements

Recommended prior knowledge

This course builds upon several other bachelor courses:

  • First year courses: Programmeermethoden, Programming Techniques

  • Second year courses: Concepts of Programming Languages, Operating Systems, Computer Architecture, Data structures

Description

This course introduces third-year bachelor students to the world of multi-core processors, the cornerstone of nearly all modern computer chips. As we have entered an era where single-core processors have become nearly extinct, the ability to effectively harness the power of multi-core architectures becomes essential to push the boundaries of computing power and efficiency. Here, we explore the fundamental principles and challenges of multi-core computing, from designing thread-safe data structures to analyzing the performance of multi-core applications. This course is not just about learning to code for multiple cores; it's about rethinking the approach to programming and problem-solving in a multiprocessor environment. It prepares students for the real world, where multi-processor and concurrent programming are not just advantageous, but essential for tackling computing challenges.

Course objectives

By the end of the course students will be able to:

  • Understand the fundamental notions of multiprocessor programming and their relation to practice, including mutual exclusion, consensus, locks, atomic read-modify-write operations

  • Understand algorithms and frameworks for multiprocessor programming and their application in multi-threaded programs, including mutual exclusion algorithms, spin locks, barriers

  • Analyze multi-threaded applications with regard to functionality and performance, including properties such as progress conditions, consistency models, linearizability, scalability and speedup in compute performance

  • Analyze implementations of fundamental concurrent data structures, such as lists, queues, and stacks in terms of consistency and progress conditions

  • Create multi-threaded applications through the construction of thread-safe data structures using fine-grained synchronization primitives

Timetable

The most updated version of the timetables can be found on the students' website:

You will find the timetables for all courses and degree programmes of Leiden University in the tool MyTimetable (login). Any teaching activities that you have sucessfully registered for in MyStudymap will automatically be displayed in MyTimetable. Any timetables that you add manually, will be saved and automatically displayed the next time you sign in.

MyTimetable allows you to integrate your timetable with your calendar apps such as Outlook, Google Calendar, Apple Calendar and other calendar apps on your smartphone. Any timetable changes will be automatically synced with your calendar. If you wish, you can also receive an email notification of the change. You can turn notifications on in ‘Settings’ (after login).

For more information, watch the video or go the the 'help-page' in MyTimetable. Pleas note: Joint Degree students Leiden/Delft have to merge their two different timetables into one. This video explains how to do this.

Mode of instruction

  • Lectures (2 hours per week)

  • Exercise classes (2 hours per week)

Course load

Total hours of study: 168 hrs. (= 6 EC)
Lectures: 24:00 hrs.
Tutorials: 24:00 hrs.
Practical work: 48:00 hrs.
Self-study: 72 hrs.

Assessment method

  • Exam

  • Programming assignment

The exam counts for 70% and the programming assignment for 30% of the final mark.

Both for the exam and the programming assignment at least a 5.5 must be obtained. Students can be offered a resit opportunity for the programming assignment, in which case at most a 6.0 for the assignment can be achieved. A non-completed assignment is graded as 0.

The teacher will inform the students how the inspection of and follow-up discussion of the exams will take place.

Reading list

Maurice Herlihy, Nir Shavit, Victor Luchangco, Michael Spear, The Art of Multiprocessor Programming (2nd edition), Morgan Kaufmann, 2020.

Registration

From the academic year 2022-2023 on every student has to register for courses with the new enrollment tool MyStudymap. There are two registration periods per year: registration for the fall semester opens in July and registration for the spring semester opens in December. Please see this page for more information. An exemption is the fall semester for 1st year bachelor students, the student administration will enroll this group.

Please note that it is compulsory to register for every exam and retake. Not being registered for a course means that you are not allowed to participate in the final exam of the course.

Extensive FAQ on MyStudymap can be found here.

Contact

Remarks