Concurrent programming
General data
Course ID: | 1000-213bPW |
Erasmus code / ISCED: |
11.3
|
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
|
Language: | Polish |
Type of course: | obligatory courses |
Prerequisites: | Computer architecture and operating systems 1000-212bAKSO |
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 |
Go to timetable
MO LAB
CW
TU CW
CW
LAB
LAB
CW
LAB
W WYK
CW
LAB
CW
LAB
TH FR LAB
LAB
CW
LAB
LAB
CW
|
Type of class: |
Classes, 30 hours
Lab, 30 hours
Lecture, 30 hours
|
|
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 |
Go to timetable
MO LAB
CW
TU CW
CW
LAB
LAB
CW
LAB
W WYK
CW
CW
LAB
LAB
LAB
TH FR LAB
LAB
LAB
CW
LAB
CW
|
Type of class: |
Classes, 30 hours
Lab, 30 hours
Lecture, 30 hours
|
|
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 |
Copyright by University of Warsaw.