Courses

CSci 493.65, Parallel Computing

I created this long-overdue course because it is essential that students who get a degree in computer science know something about how to design parallel algorithms, and to have some practical experience in writing parallel programs. In 2008, the Joint ACM/IEEE Computer Socieyt Task Force on Computing Curricula, in their report, Computer Science Curriculum 2008, considered parallel computing to be an elective knowledge area for the undergraduate student. In 2013, the Task Force made this a core competency. This change was a second reason for the creation of this course.

The course is an introduction to parallel algorithms and parallel programming in C and C++, using the Message Passing Interface (MPI) and the OpenMP application programming interface. It also includes a brief introduction to parallel architectures and interconnection networks. It is both theoretical and practical, including material on design methodology, performance analysis, and mathematical concepts, as well as details on programming using MPI and OpenMP.

Lecture Notes

Course Lecture Notes

Course Home Pages

Home page for Fall 2019

Home page for Fall 2017

Home page for Fall 2016

Home page for Spring 2015

Home page for Spring 2014