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:
In MyTimetable, you can find all course and programme schedules, allowing you to create your personal timetable. Activities for which you have enrolled via MyStudyMap will automatically appear in your timetable.
Additionally, you can easily link MyTimetable to a calendar app on your phone, and schedule changes will be automatically updated in your calendar. You can also choose to receive email notifications about schedule changes. You can enable notifications in Settings after logging in.
Questions? Watch the video, read the instructions, or contact the ISSC helpdesk.
Note: Joint Degree students from Leiden/Delft need to combine information from both the Leiden and Delft MyTimetables to see a complete schedule. This video explains how to do it.
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
As a student, you are responsible for enrolling on time through MyStudyMap.
In this short video, you can see step-by-step how to enrol for courses in MyStudyMap.
Extensive information about the operation of MyStudyMap can be found here.
There are two enrolment periods per year:
Enrolment for the fall opens in July
Enrolment for the spring opens in December
See this page for more information about deadlines and enrolling for courses and exams.
Note:
It is mandatory to enrol for all activities of a course that you are going to follow.
Your enrolment is only complete when you submit your course planning in the ‘Ready for enrolment’ tab by clicking ‘Send’.
Not being enrolled for an exam/resit means that you are not allowed to participate in the exam/resit.
Contact
Remarks
Software
Starting from the 2024/2025 academic year, the Faculty of Science will use the software distribution platform Academic Software. Through this platform, you can access the software needed for specific courses in your studies. For some software, your laptop must meet certain system requirements, which will be specified with the software. It is important to install the software before the start of the course. More information about the laptop requirements can be found on the student website.