The course covers both theoretical and practical elements of parallel programming and algorithms, to help the students make efficient use of modern multiprocessor and multicomputer hardware (including supercomputers) for solution of computationally demanding task from various application fields. A variety of algorithms and hardware and software tools for parallel and High Performance Computing are introduced, but the focus lies on the so-called loosely coupled systems (without shared memory), where the interaction of parallel activities is based on message passing. Individual approach, allowing application and intensification of the gained knowledge in the student's specific field of Ph.D. study, is supposed.