University of Warsaw - Central Authentication System
Strona główna

Concurrent programming

General data

Course ID: 1000-213bPW
Erasmus code / ISCED: 11.3 The subject classification code consists of three to five digits, where the first three represent the classification of the discipline according to the Discipline code list applicable to the Socrates/Erasmus program, the fourth (usually 0) - possible further specification of discipline information, the fifth - the degree of subject determined based on the year of study for which the subject is intended. / (0612) Database and network design and administration The ISCED (International Standard Classification of Education) code has been designed by UNESCO.
Course title: Concurrent programming
Name in Polish: Programowanie współbieżne
Organizational unit: Faculty of Mathematics, Informatics, and Mechanics
Course groups: Obligatory courses for 2nd grade Computer Science
Obligatory courses for 2nd grade JSIM (3I+4M)
Obligatory courses for 2nd grade JSIM (3M+4I)
ECTS credit allocation (and other scores): 9.00 Basic information on ECTS credits allocation principles:
  • the annual hourly workload of the student’s work required to achieve the expected learning outcomes for a given stage is 1500-1800h, corresponding to 60 ECTS;
  • the student’s weekly hourly workload is 45 h;
  • 1 ECTS point corresponds to 25-30 hours of student work needed to achieve the assumed learning outcomes;
  • weekly student workload necessary to achieve the assumed learning outcomes allows to obtain 1.5 ECTS;
  • work required to pass the course, which has been assigned 3 ECTS, constitutes 10% of the semester student load.

view allocation of credits
Language: Polish
Type of course:

obligatory courses

Prerequisites:

Computer architecture and operating systems 1000-212bAKSO
Introductory programming 1000-211bWPI

Prerequisites (description):

(in Polish) Założenia dotyczą cykli od 23/24.

Short description:

The goal of the lecture is to present basic problems and techniques of programming in concurrent and distributed systems. The course is focused on two key issues: correctness and performance. In connection with fundamental problems of synchronisation such as mutual exclusion and readers-writers problem, the course presents solutions based upon shared variables and ones that require higher-level language support.

Full description:

Lecture:

- Basic concepts of concurrency: process, interleaving, concurrent execution

- Correctness of concurrent programs

- Concurrency models

- Classic concurrency problems: mutual exclusion, readers and writers, dining philosophers, producers and consumers

- Selected mutual exclusion algorithms without hardware or operating system support

- Definition and various semaphore semantics: Dijkstra semaphore, weak semaphores, strong semaphores, strongly fair semaphores

- Definition and various monitor semantics: Hoare monitor, implementation using the pthread library

- Methods for verifying the correctness of concurrent programs: LTL, model checking, deductive methods

- Synchronization methods in the distributed model: synchronous and asynchronous communication (tuple space)

- Consistency and consistency models: linearizability (or atomicity), sequential consistency, causal consistency, eventual consistency

- Performance in the concurrency model: work, span, parallelism, speedup

- Selected distributed algorithms (mutual exclusion in distributed systems, logical clock synchronization, consensus)

Laboratory:

- Processes and threads and their synchronization methods in POSIX-compliant systems

- Concurrency in Java (java.util.concurrent, monitor implementation)

Exercises:

- Mutual exclusion algorithms without hardware and operating system support

- Semaphores

- Monitors

- Synchronous message exchange

- Asynchronous message exchange

- Performance metrics of concurrent programs

Bibliography: (in Polish)

1. M. Ben - Ari, Podstawy programowania współbieżnego i rozproszonego

2. Z. Gruźlewski, Z. Weiss, Programowanie współbieżne i rozproszone w przykładach i zadaniach

3.M. Herlihy, N. Shavit, Sztuka programowania wieloprocesorowego

4. H. Casanova, A. Legrand, Y. Robert, Parallel Algorithms

5. T. H.Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction to Alghorithms, 3rd edition

6.W. R. Stevens, Programowanie w środowisku systemu UNIX

7.B. Eckel, Thinking in Java

Learning outcomes:

Knowledge – the graduate knows and understands

- Theoretical foundations of programming, algorithms, and complexity (K_W02).

- Principles of operating systems, with particular emphasis on processes, concurrency, task scheduling, and memory management (K_W07).

Skills – the graduate is able to

- Gather information from literature, knowledge bases, the Internet, and other reliable sources, integrate it, interpret it, draw conclusions, and formulate opinions (K_U02).

- Independently plan and pursue lifelong learning (K_U09).

- Describe issues related to the execution of concurrent programs (K_U10).

Social competencies – the graduate is ready to:

- Critically assess their own knowledge and received information (K_K01).

- Work with respect for intellectual integrity in their own activities and those of others, adhere to professional ethics, expect the same from others, and take care of the achievements and traditions of the IT profession (K_K02).

- Recognize the importance of knowledge in solving cognitive and practical problems, search for information in literature, and seek expert opinions (K_K03).

Classes in period "Winter semester 2024/25" (past)

Time span: 2024-10-01 - 2025-01-26
Selected timetable range:
Go to timetable
Type of class:
Classes, 30 hours more information
Lab, 30 hours more information
Lecture, 30 hours more information
Coordinators: Marcin Engel, Marcin Wrochna
Group instructors: Marcin Engel, Agata Janowska, Mirosława Miłkowska, Jakub Pawlewicz, Marcin Przybyłko, Wojciech Przytuła, Krzysztof Rządca, Marcin Wrochna, Artur Zaroda, Wiktor Zuba
Students list: (inaccessible to you)
Credit: Examination

Classes in period "Winter semester 2025/26" (future)

Time span: 2025-10-01 - 2026-01-25
Selected timetable range:
Go to timetable
Type of class:
Classes, 30 hours more information
Lab, 30 hours more information
Lecture, 30 hours more information
Coordinators: Marcin Engel
Group instructors: Marcin Engel, Agata Janowska, Mirosława Miłkowska, Marcin Przybyłko, Wojciech Przytuła, Krzysztof Rogowski, Krzysztof Rządca, Aleksy Schubert, Marcin Wrochna, Artur Zaroda, Wiktor Zuba
Students list: (inaccessible to you)
Credit: Course - Examination
Lecture - Examination
Course descriptions are protected by copyright.
Copyright by University of Warsaw.
Krakowskie Przedmieście 26/28
00-927 Warszawa
tel: +48 22 55 20 000 https://uw.edu.pl/
contact accessibility statement site map USOSweb 7.1.2.0-8 (2025-07-09)