Skip to main content

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.

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.

Application

For course offering

Spring 2025 Start 14 Jan 2025 programme students

Application code

60141

Headings with content from the Course syllabus ID1217 (Spring 2024–) are denoted with an asterisk ( )

Content and learning outcomes

Course contents

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

  1. 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
  2. justify, illustrate and explain the need of synchronisation in a concurrently executing programme
  3. explain, compare, choose and use the different synchronisation mechanisms in a concurrently executing programme
  4. explain, compare, choose and use different communication mechanisms for process interaction in distributed programmes
  5. 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
  6. 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.

Recommended prerequisites

No information inserted

Equipment

No information inserted

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

A, B, C, D, E, FX, F

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

No information inserted

Opportunity to raise an approved grade via renewed examination

No information inserted

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

Registered students find further information about the implementation of the course in the course room in Canvas. A link to the course room can be found under the tab Studies in the Personal menu at the start of the course.

Offered by

Main field of study

Information Technology, Technology

Education cycle

First 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

Al-Shishtawy, Ahmad

Supplementary information

In this course, the EECS code of honor applies, see: http://www.kth.se/en/eecs/utbildning/hederskodex.