Course: Introduction to Parallel Programming

» List of faculties » FAV » KIV
Course title Introduction to Parallel Programming
Course code KIV/UPP
Organizational form of instruction Lecture + Tutorial
Level of course Bachelor
Year of study not specified
Semester Summer
Number of ECTS credits 4
Language of instruction Czech
Status of course Compulsory
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Brenkus David, Ing. Ph.D.
Course content
1. Introduction to the subject, terminology; proces, thread, task; task type overview; Flynn taxonometry; speedup 2. Problem analysis considering parallel data processing; variable types, concurrent memory access 3. Critical section, basic synchronization primitives (lock, mutex, condition variable; spurious wakeup) 4. Advanced synchronization primitives (barrier, monitor, ), atomic variable 5. "Parallel-for" task type and parallelism - work distribution, farmer-worker, static and dynamic scheduling, problem examples 6. "Parallel-reduce" task type and parallelism; problem examples 7. POSIX interface (parallelism and synchronization) 8. OpenMP 9. Distributed computing and parallelism; MPI technology 10. Miscellanous parallelism libraries (parallel STL, Boost) 11. Case study (selected parallelism problems from real software) 12. Introduction to quantum computing

Learning activities and teaching methods
  • Contact hours - 39 hours per semester
  • Individual project (40) - 38 hours per semester
  • Preparation for an examination (30-60) - 30 hours per semester
prerequisite
Knowledge
To know a programming language such as C, Java, Python, C# or any other.
To understand basic abstract data types and to know how to correctly use them.
To know the basic principles of computer operation - CPU and peripherals.
Skills
To be able to analyze and decompose a given problem, propose algorithmic solution and implement it.
Competences
N/A
learning outcomes
Knowledge
To know basic principles and models of parallel programming.
To have a general knowledge about parallel technologies and implementation techniques.
To know basic and selected advanced synchronisation primitives and principles of their use.
Skills
To be able to analyze a problem for later parallelisation and to select appropriate techniques.
To be able to write a parallel code for data processing using selected technology.
To be able to evaluate parallel code correctness and effectivity.
Competences
N/A
teaching methods
Knowledge
Lecture
Lecture with visual aids
Skills
Individual study
Competences
Lecture supplemented with a discussion
assessment methods
Knowledge
Written exam
Oral exam
Skills
Oral exam
Competences
Oral exam
Recommended literature
  • Balaji Pavan. Programming Models for Parallel Computing. MIT Press Ltd., 2015. ISBN 978-0262528818.
  • Gebali Fayez. Gebali Fayez. Algorithms and Parallel Computing. Wiley, 2011. ISBN 978-0470902103.
  • Roman Trobec, Boštjan Slivnik, Patricio Bulić, Borut Robič. Introduction to Parallel Computing. Springer Nature Switzerland, 2018. ISBN 978-3-319-98832-0.
  • Williams Anthony. C++ Concurrency in Action: Practical Multithreading.. Manning Publishing, 2012. ISBN 978-1933988771.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester