Course details

Parallel and Distributed Programming

PDD Acad. year 2005/2006 Winter semester

Current academic year

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

Czech, English

Completion

Examination

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.

Back to top