Course: Parallel Programming

« Back
Course title Parallel Programming
Course code KMI/PARA
Organizational form of instruction Lecture + Exercise
Level of course Bachelor
Year of study not specified
Semester Summer
Number of ECTS credits 5
Language of instruction Czech
Status of course Compulsory-optional, Optional
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Outrata Jan, doc. Mgr. Ph.D.
  • Krupka Michal, doc. RNDr. Ph.D.
  • Motyčková Lenka, doc. Ing. CSc.
  • Laštovička Jan, Mgr.
  • Osička Petr, Mgr. Ph.D.
Course content
Knowledge of tools and techniques of parallel programming is today, due to the development of hardware (multicore processors, hundreds of processors in graphic cards usable for general computing), one of the basic demands on a good-class programmer. In the course students will learn both advantages and problems coming up in parallel programs with shared memory, both in classical synchronization problems and in experience, and learn to solve them by synchronization methods. Programming is held in C/C# languages using interfaces provided by operating systems a also in Common Lisp language in which extensions for parallel programming, which nowadays become part of modern programming languages, are introduced. The course is followed by some courses in master study of Computer Science in which the areas of parallel programming and also distributed systems, which become popular with the development of computer and other (e.g. mobile) networks, are discussed in a more details. 1. Parallel program: features, advantages, problems. Atomic actions and their support by HW. 2. Synchronization, reentrancy, active a passive waiting. 3. Demonstration of basic problems, producer-consumer problem. 4. Critical section and its usage. A lock (mutex), mutual exclusion, conditional waiting. 5.,6. Barrier and its usage in critical section and data parallel algorithms. Problems which can be solved by data parallel algorithms. 7. Semaphore and its usage in solving critical section, barriers and the producer-consumer (bounded buffer) problem. 8. The readers and writers problem and its various solutions. 9. Further typical synchronization problems: dinning philosophers, sleeping barber, tobacco smokers and other. 10. Monitor and conditional variable. Their usage in solutions of synchronization problems. 11. Support for paralellization in programming languages, new means of parallel programming in .NET and MacOS X.

Learning activities and teaching methods
Lecture, Demonstration
Learning outcomes
The students become familiar with basic concepts of parallel programming.
3. Application: Indetify and solve obstacles in developing parallel programs.
Prerequisites
unspecified

Assessment methods and criteria
Oral exam, Written exam

Active participation in class. Completion of assigned homeworks. Passing the oral (or written) exam.
Recommended literature
  • ANDREWS G. R. (1991). Concurrent programming: principles and practice. Addison-Wesley.
  • ANDREWS G. R. (2000). Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley.
  • Ben-Ari M. (2006). Principles of concurrent and distributed programming. Addison-Wesley.
  • MAGEE J., KRAMER J. (1999). Concurrency, State Models and Java Programs. John Wiley and Sons Ltd.
  • Schneider F. B. (1997). On concurrent programming. Springer.


Study plans that include the course
Faculty Study plan (Version) Branch of study Category Recommended year of study Recommended semester
Faculty of Science Bioinformatics (1) Informatics courses 2 Summer
Faculty of Science Computer Science (1) Informatics courses 2 Summer
Faculty of Science Applied Computer Science (1) Informatics courses 2 Summer