From smart phones, to multi-core CPUs and GPUs, to the world's largest supercomputers and web sites, parallel processing is ubiquitous in modern computing. The goal of this course is to provide a deep understanding of the fundamental principles and engineering trade-offs involved in designing modern parallel computing systems as well as to teach parallel programming techniques necessary to effectively utilize these machines. Because writing good parallel programs requires an understanding of key machine performance characteristics, this course will cover both parallel hardware and software design.
Aug 29 |
Syllabus
Parallelism Demos
|
Aug 31 |
Assignment 1 Out - Sep 1
|
Sep 2 | |
Sep 5 |
No Class (Labor Day)
|
Sep 7 | |
Sep 9 | |
Sep 12 |
Assignment 1 Due
|
Sep 14 |
Assignment 2 Out
|
Sep 16 | |
Sep 19 | |
Sep 21 | |
Sep 23 | |
Sep 26 |
Assignment 2 Due
|
Sep 28 |
Assignment 3 Out
|
Sep 30 | |
Oct 3 | |
Oct 5 | |
Oct 7 |
Exam I
|
Oct 10 | |
Oct 12 | |
Oct 14 |
Assignment 3 Due
Assignment 4 Out
|
Oct 17 | |
Oct 19 | |
Oct 21 |
No lecture: Fall Break
|
Oct 24 | |
Oct 26 |
Assignment 4 Due
|
Oct 28 |
Meeting to discuss project ideas
|
Oct 31 |
Project Proposal Due
|
Nov 2 | |
Nov 4 | |
Nov 11 |
Exam II
|
Nov 21 |
Project Milestone Meetings
Project Milestone Due
|
Special thanks to the Intel Corporation, the NVIDIA Corporation, and to DELL for equipment donations and/or financial support for course development. Kayvon has extended the original version of 15-418 and the course follows his vision. Thanks to Matt Pharr for technical assistance with ISPC. Alex Reece, Manish Burman, and Cary Yang developed the course web site.