Parallel Programming

Teachers

Included in study programs

Teaching results

Students will acquire the following competencies:
A. in more advanced object-oriented programming principles in Python.
B. with the paradigms of sequential, concurrent (competing), and parallel programming.
C. introduce students to variants of parallelism and concurrent computation.
D. to implement competing versions of originally sequential algorithms developed in Python.
E. apply performance metrics of parallel and competing code.
F. implement Python tools for competitive and parallel programming (threads, processes, locks, ...).
G. Understand the benefits, limitations, and features of parallel programming.
H. Figure out how to create a responsive and high-performance program.
I. Implement a parallel algorithm on a graphics processor using the PyCUDA module.
Upon completion of the course, the student should be able to:
A. Students will master the paradigm of competitive and parallel programming in an object-oriented environment.
B. Students will learn to create competitive and parallel algorithms and programs that can utilize all the computational capacity of variably powerful computer systems.
C. Listeners will gain information about threads, processes, locks, synchronization, communication, deadlocks, and more.
D. Listeners will understand the benefits, limitations, and features of a parallel program.
F. Listeners will improve their Python programming skills with more advanced, multi-threaded, and multi-process tasks.

Indicative content

1. algorithm and programming languages,
2. data types in programming languages
3. principles of object-oriented programming in programming languages,
4. paradigm of concurrent and parallel programming from the point of view of theoretical and applied informatics,
5. benefits and risks of concurrent and parallel algorithms,
6. memory management of parallel and concurrent algorithms,
7. threads, processes, synchronization, locks,
8. using of Python libraries for concurrent and parallel algorithms,
9. communication between processes and between threads,
10. deadlock and solution proposals,
11. parallel programming using graphics processors,
12. parallel architectures,
13. implementation of parallelism in the Python programming language.

Support literature

1. Gove, D.: Programování aplikací pro vícejádrové procesory: Vydavateľstvo Computer press, Addison Wesley, 2011. ISBN: 978-80-251-3487-0.
2. Hanák, J.: Moderné paralelné programovanie, 2. vydanie. Bratislava : Vydavateľstvo EKONÓM, 2013.
3. Ben-Ari M.: Principles of Concurrent and Distributed Programming, 2nd Edition. Addison Wesley, 2006. ISBN 032131283X3. Andrews G. R.: Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, 2000. ISBN 0201357526

Requirements to complete the course

Requirements to complete the course:
Individual work
independent work
combined examination
1. Activity on the exercise (40%). The achieved level of skills A, - E. is verified.
2. Combined examination (60 %, of which the written part of the examination 30 % and the oral part of the examination 30 %). The theoretical part verifies the level of competence A. - I.

Student workload

Total study load (in hours): 4 credits x 26 h = 104 h
Student load distribution
participation in exercises, seminars 26 h,
preparation for seminars 26 h,
preparation for individual written work 26 h,
preparation for the exam 26 h.

Language whose command is required to complete the course

slovak

Date of approval: 10.02.2023

Date of the latest change: 18.05.2022