UC Berkeley CS267 Home Page

Applications of Parallel Computers

Spring 2018

Tu/Th 11am-12:30pm, 306 Soda Hall


Teaching Assistants:

  • Ben Brock (send email), Office Hours: Mondays and Fridays 2:00-3:00pm, Soda 569
  • Aditya Devarakonda (send email), Office Hours: By appointment on Tuesdays and Thursdays.
  • Grace Dinh (send email), Office Hours: Wednesdays 3:00-5:00pm, 557 Cory

To contact the teaching staff, send email to cs267.sp18@gmail.com. This email is monitored by all of us and will therefore lead to a faster response than emailing one of us individually.

Lectures: 11-12:30 in 306 Soda or live streamed: Several people are waitlisted for this course, but we are working on approvals to let everyone enroll. We can only allow ~100 students in the lecture room.


  • HW0: 1%
  • HW1: part 1: 10%, part 2: 5%
  • HW2: part 1: 5%, part 2: 10%, part 3: 9%
  • HW3: 10%
  • Project: 50%

Syllabus and Motivation

CS267 was originally designed to teach students how to program parallel computers to efficiently solve challenging problems in science and engineering, where very fast computers are required either to perform complex simulations or to analyze enormous datasets. CS267 is intended to be useful for students from many departments and with different backgrounds, although we will assume reasonable programming skills in a conventional (non-parallel) language, as well as enough mathematical skills to understand the problems and algorithmic solutions presented. CS267 satisfies part of the course requirements for the Designated Emphasis ("graduate minor") in Computational Science and Engineering.

While this general outline remains, a large change in the computing world started in the mid 2000's: not only are the fastest computers parallel, but nearly all computers are becoming parallel, because the physics of semiconductor manufacturing will no longer let conventional sequential processors get faster year after year, as they have for so long (roughly doubling in speed every 18 months for many years). So all programs that need to run faster will have to become parallel programs. (It is considered very unlikely that compilers will be able to automatically find enough parallelism in most sequential programs to solve this problem.) For background on this trend toward parallelism, click here.

This is a huge change not just for science and engineering but the entire computing industry, which has depended on selling new computers by running their users' programs faster without the users having to reprogram them. Large research activities to address this issue are underway at many computer companies and universities, including Berkeley's ASPIRE project, and its predecessor the ParLab. A summary of the ParLab's research agenda, accomplishments, and remaining challenges may be found here.

While the ultimate solutions to the parallel programming problem are far from determined, students in CS267 will get the skills to use some of the best existing parallel programming tools, and be exposed to a number of open research questions.

CS267 Master Schedule Sp18: Tentative Syllabus