Concurrent programming 1000-213bPW
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
Type of course
Prerequisites
Prerequisites (description)
Course coordinators
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).
Additional information
Information on level of this course, year of study and semester when the course unit is delivered, types and amount of class hours - can be found in course structure diagrams of apropriate study programmes. This course is related to the following study programmes:
Additional information (registration calendar, class conductors, localization and schedules of classes), might be available in the USOSweb system: