Offer the students the fundamentals of massively parallel computing on modern hardware (GPUs, multicore CPUs and accelerators) based on the stream computing principle.
By the end of the course the student should have acquired familarity with the basics of parallel computing and its fundamental paradigms (embarrassingly parallel problems, reductions and scans), and with the main frameworks for the development of massively parallel applications (CUDA and OpenCL).
NVIDIA CUDA Programming Guide
OpenCL specification