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
ID1217 Concurrent Programming 7.5 credits
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.
Information per course offering
Information for Spring 2025 Start 14 Jan 2025 programme students
- Course location
KTH Campus
- Duration
- 14 Jan 2025 - 16 Mar 2025
- Periods
- P3 (7.5 hp)
- Pace of study
50%
- Application code
60141
- Form of study
Normal Daytime
- Language of instruction
English
- Course memo
- Course memo is not published
- Number of places
Places are not limited
- Target group
Open to all programmes as long as it can be included in your programme.
- Planned modular schedule
- [object Object]
- Schedule
- Part of programme
Bachelor's Programme in Information and Communication Technology, åk 2, Mandatory
Bachelor's Programme in Information and Communication Technology, åk 3, Mandatory
Bachelor's Programme in Information and Communication Technology, åk 3, Recommended
Degree Programme in Computer Engineering, åk 2, Mandatory
Degree Programme in Computer Engineering, åk 3, DPU2, Recommended
Degree Programme in Computer Engineering, åk 3, SAIN, Recommended
Degree Programme in Electronics and Computer Engineering, åk 3, Recommended
Degree Programme in Information and Communication Technology, åk 2, Conditionally Elective
Degree Programme in Information and Communication Technology, åk 3, Conditionally Elective
Master's Programme, Computer Science, åk 1, CSST, Recommended
Master's Programme, Computer Science, åk 1, CSTC, Recommended
Master's Programme, Computer Science, åk 2, CSST, Recommended
Master's Programme, Computer Science, åk 2, CSTC, Recommended
Master's Programme, Embedded Systems, åk 1, INMV, Recommended
Master's Programme, Embedded Systems, åk 2, INMV, Recommended
Contact
Al-Shishtawy, Ahmad
Course syllabus as PDF
Please note: all information from the Course syllabus is available on this page in an accessible format.
Course syllabus ID1217 (Spring 2024–)Content and learning outcomes
Course contents
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
Specific prerequisites
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.
Equipment
Literature
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.
Grading scale
Examination
- 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
Examiner
Ethical approach
- 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
Course room in Canvas
Offered by
Main field of study
Education cycle
Add-on studies
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
Contact
Supplementary information
In this course, the EECS code of honor applies, see: http://www.kth.se/en/eecs/utbildning/hederskodex.