Main Navigation
Apply Now Request Info


CS 475 - Parallel Programming

Parallel programming techniques for shared-memory and message-passing systems; process synchronization, communication; example languages. Programming in C with MPI OpenMP.


CS 250/CS 280A1 (Computer Systems Foundations) or CS 270 (Computer Organization); CS 320 (Algorithms--Theory and Practice); CT 301 (C++ Fundamentals); Prerequisite course(s) must be completed with a grade of C or better.

Important Information

Software/Hardware requirements: Reliable access to the Internet and email access to computer for lessons and programming assignments.

Textbooks and Materials

See for detailed course information and required textbooks.


Sanjay Rajopadhye
Sanjay Rajopadhye

9704917323 |

Sanjay Rajopadhye is Professor in the Computer Science Department. He also holds a joint appointment in the Electrical and Computer Engineering Department. He joined the faculty at CSU in 2001 and was previously a CNRS researcher at Irisa, Rennes, France, where he headed the COSI research group. Rajopadhye received the B. Tech (honors) degree in Electrical Engineering from the India Institute of Tech. , Kharagpur and a PhD in Computer Science from the University of Utah.

Rajopadhye’s interests cover parallel algorithms and architectures, embedded systems, functional programming, high performance computing on multi- and many-care architectures, automatic parallelization and optimization. He is one of the original developers of the polyhedral model, a formalism for reasoning about an important class of compute-and data-intensive programs. The model, originally developed in the context of automatic synthesis of systolic arrays from recurrence equations has found increasing application from compilation to multi- and many-core architectures.