Graphics processors contain hundreds of parallel processing elements and thus enable us to explore this realm of massively parallel computing today. The high number of parallel cores poses a great challenge for software design that must expose massive parallelism to benefit from the new hardware. The main purpose of the practical course is to experience and practice the design of massively parallel applications on a student selected topic. The aim is to take a computationally hard problem, to analyze tasks and necessary data structures, to design a demanding parallel application, and to finally turn it into an efficient massively parallel implementation.