Computer Science
CS 450 - Parallel Programming
Description: Parallel computing is a widespread technology because of the invention of multi-core processors. For instance, many consumer electronics such as laptops, and smart phones contain multiple CPU cores that can be programmed to execute a program faster than only using a single core. Why do we care about CPU cores in smart phones and other modern computers? CPU clock speeds have become stagnant. Consequently, the number of processors packed onto a single chip continues to increase. No longer can an individual wait for a faster (e.g., higher clock speed) processor to be released to decrease the time it takes to run a program or to improve program responsiveness. Instead, computational resources need to be carefully exploited to reduce the time it takes to execute a program. Given the ubiquitous nature of multi-core computers, there is great demand for programmers that know how to exploit parallel architectures in industry, academia, and government labs. This course introduces students to parallel computing concepts in addition to a hands-on experience using key technologies and approaches used to program multi-core and many-core architectures. Students will learn about program optimization and performance evaluation for sequential and parallel programs. The hands-on approach is intended to ensure that students matriculating from the course will have the confidence needed to address the challenges of parallel computing in the real-world. Types of parallel programs that will be studied include shared-memory programs for the CPU and an introduction to programming the many-core GPU architecture. We will use NAU's cluster, Monsoon, for the GPU component of the course, heavily using the C programming language. Co convened with CS 550. Letter grade only.
Units:
3
Sections offered:
Spring 2025
Requirement Designation:
Prerequisite: CS 249 with a grade of C or better