Course details
Parallel and Distributed Programming
PDD Acad. year 2005/2006 Winter semester
The course gives a global view on concurrent programming and covers its individual variants - from performance-oriented parallel programming in scientific computing, over the distributed processing of network applications, up to multithreaded programs and Web-based computing. Clarification is made of fundamental concepts, process and thread interaction techniques and the means of their description by language constructs with regard to program correctness and possibly to performance. The emphasis is put on practical aspects and implementation, frequent examples complete the treatment.
Guarantor
Language of instruction
Completion
Time span
- 39 hrs lectures
Department
Subject specific learning outcomes and competences
To learn how to write parallel, distributed and multithreaded programs for solution of real problems. To be able to utilize parallelism and communication at thread- and process level. To get acquainted with state-of-the-art standard interfaces, language extensions and other tools for the types of concurrent programming above.
Distributed and shared memory architectures, programming in C/C++, basic numerical methods.
Learning objectives
To clarify core concepts and techniques of parallel, distributed and multithreaded programming. To learn solving problems in parallel, the design of correct programs and get to know selected real-world parallel applications.
Prerequisite knowledge and skills
Distributed and shared memory parallel architectures, programming in C/C++, basic numerical methods
Study literature
Fundamental literature
- Pacecho, P.: Introduction to Parallel Programming. Morgan Kaufman Publishers, 2011, 392 s., ISBN: 9780123742605
- Kirk, D., and Hwu, W.: Programming Massively Parallel Processors: A Hands-on Approach, Elsevier, 2010, s. 256, ISBN: 978-0-12-381472-2
Syllabus of lectures
- Parallel and distributed computing.
- Shared variable programming: processes and synchronization.
- Locks and Barriers.
- Shared resources, semaphores.
- Synchronization techniques, monitors.
- Implementation of synchronization primitives.
- Distributed programming: message passing.
- RPC and rendezvous.
- Paradigms for Process Interactions.
- Implementation of message passing.
- Parallel programming: scientific computing.
- Languages, compilers, libraries, and tools.
- Case studies of parallel applications.
Progress assessment
Study evaluation is based on marks obtained for specified items. Minimimum number of marks to pass is 50.
Controlled instruction
Defence of a software project based on a variant of concurrent programming.