This course explores programming problems related to data parallelism and multi-threading, as well as frameworks for computing efficiently on GPUs. The course is focused on programming, but covers topics related to optimization and computer architectures.