CS451 Introduction to Parallel and Distributed Computing

Prerequisites

Systems Programming (CS351) or Operating Systems (CS450)


Course Description

The objective of this course is to introduce the fundamentals of parallel and distributed processing, including system architecture, programming model, and performance analysis. It will focus on the basic architectural, programming, and algorithmic concepts in the design and implementation of parallel and distributed applications. The specific topics include, but not limited to, multithreaded programming, message passing interface, GPU, and cloud computing. Some of these topics are covered in more depth in the graduate courses focusing on specific sub-domains of parallel and distributed systems, such as Advanced Operating Systems (CS550), Parallel and Distributed Processing (CS546), Cloud Computing (CS553), Data-Intensive Computing (CS554), Advanced Computer Architecture (CS570), and Fault Tolerant Computing (CS595).

While this CS451 course is not a pre-requisite to any of the graduate level courses in parallel and distributed systems, both undergraduate and graduate students who wish to be better prepared for these courses could take this CS451 course. This course involves lectures, programming assignments, and exams. Graduate students who have already taken CS546, CS553, CS554, should not take this CS451 class.



Course Materials

Recommended Textbooks

Gerassimos Barlas,
Multicore and GPU Programming
Morgan Kaufmann, 2015. ISBN: 978-0-12-417137-4

Ian Foster and Dennis Gannon,
Cloud Computing for Science and Engineering
MIT Press, 2017. ISBN: 9780262037242

Lectures

Grading: