Fundamentals of parallel programming and algorithm design to speedup machine learning and scientific computation. Topics include parallel architectures with shared memory machines and clusters, GPUs, message-passing and thread programming, parallel performance evaluation and optimization, parallelization of core matrix algorithms in machine learning and scientific computing applications, and MapReduce programming for data-intensive cloud computing.