The course treats the core concepts and techniques for concurrent (process-oriented and multithreaded) programming. This forms the basis for operating systems, reactive and real-time systems, distributed and multi-processor systems. It also provides an overview of principles of distributed and parallel programming. The course is intended to give you knowledge and skills in process-oriented programming.
Choose semester and course offering
Choose semester and course offering to see current information and more about the course, such as course syllabus, study period, and application information.
Content and learning outcomes
Parallel Programming with threads and shared variables Processes and synchronisation
Critical sections, locks, barriers, semaphores and monitors Language overview: threads in Java, Pthreads
Introduction to parallel and distributed programming with processes
Message passing, RPC, RMI and rendezvous
Overview of parallel and distributed programming environments e.g. MPI, PVM and OpenMPPerformance
Intended learning outcomes
After passing the course, the student should be able to
- compare and contrast programming models and paradigms for shared memory and distributed memory to choose the most appropriate models and the paradigms for a given problem
- justify, illustrate and explain the need of synchronisation in a concurrently executing programme
- explain, compare, choose and use the different synchronisation mechanisms in a concurrently executing programme
- explain, compare, choose and use different communication mechanisms for process interaction in distributed programmes
- implement concurrently executing and distributed programmes in C, Java or other programming languages by means of various programming environments such as pthreads, openMP, Java threads and monitors, Socket API, MPI and Java RMI
- evaluate, measure and estimate speed, performance and scalability and analyse safety and liveness properties for parallel and distributed programmes
in order to
- acquire knowledge in the basics of concurrent programming, more specifically about programming models, concepts, paradigms, techniques, synchronisation and communication mechanisms
- develop practical skills and experience in programming environments for developing parallel and distributed programmes
Literature and preparations
Knowledge of computer technology/computer architecture including multicore architectures, 6 higher education credits, equivalent to a completed course IS1200/IS1500/EP1200/HE1028.
Knowledge and skills in C-programming, 3 higher education credits, equivalent to a completed course IS1200/IS1500 or DD1388/SF2565/HI1024.
Knowledge and skills in object oriented programming, 6 credits, equivalent to completed course DD1310-DD1319/DD1321/DD1331/DD1337/DD100N/ID1018.
An Introduction to Parallel Programming, by Peter S. Pacheco, and Matthew Malensek, Morgan Kaufmann, 2021, eBook ISBN: 9780128046180, Paperback ISBN: 9780128046050.
Examination and completion
If the course is discontinued, students may request to be examined during the following two academic years.
- LABA - Laboratory Work, 3.0 credits, grading scale: P, F
- TEN1 - Examination, 4.5 credits, grading scale: A, B, C, D, E, FX, F
Based on recommendation from KTH’s coordinator for disabilities, the examiner will decide how to adapt an examination for students with documented disability.
The examiner may apply another examination format when re-examining individual students.
Examination is computer-based and should be made in place at KTH Royal Institute of Technology
Other requirements for final grade
Passed written examination (TEN1; 4.5 higher education credits) and passed programming assignments (LABA; 3.0 higher education credits)
Opportunity to complete the requirements via supplementary examination
Opportunity to raise an approved grade via renewed examination
- All members of a group are responsible for the group's work.
- In any assessment, every student shall honestly disclose any help received and sources used.
- In an oral assessment, every student shall be able to present and answer questions about the entire assignment and solution.
Further information about the course can be found on the Course web at the link below. Information on the Course web will later be moved to this site.Course web ID1217
Main field of study
Any (or any combination) of the following courses: ID2201, ID2203 Distributed Systems
IS2204 Distributed Computing, Peer-to-Peer and GRIDS
2G1511 Computer Architecture
2G1114 Parallel Computer Systems
In this course, the EECS code of honor applies, see: http://www.kth.se/en/eecs/utbildning/hederskodex.