Parallel Computing


Stanford School of Engineering



Most new computer architectures are parallel, requiring programmers to know the basic issues and techniques for writing this software. This course is an introduction to the basic issues of and techniques for writing parallel software.

You will be provided with an advanced foundation in various programming models and varieties of parallelism in current hardware.

Significant parallel programming assignments will be given as homework. 


This course is open to students who have completed the introductory CS course sequence through CS110 and have taken CS143 .

Topics include

  • Fast networks, multicore, accelerators and vector instruction sets
  • Implicit vs. explicit parallelism
  • Shared vs. non-shared memory
  • Synchronization mechanisms such as locking, atomicity, transactions and barriers
  • Parallel programming models such as threads, MapReduce, Apache Spark and SIMT

Note on Course Availability

This course is typically offered Autumn quarter.

The course schedule is displayed for planning purposes – courses can be modified, changed, or cancelled. Course availability will be considered finalized on the first day of open enrollment. For quarterly enrollment dates, please refer to our graduate certificate homepage.

Thank you for your interest. The course you have selected is not open for enrollment. Please click the button below to receive an email when the course becomes available again.

Request Information