Stanford CS149, Fall 2020
PARALLEL COMPUTING
Tues/Thurs 2:30-3:50pm
Virtual Course Only
Instructors: Kunle Olukotun and Kayvon Fatahalian
Course Description

From smart phones, to multi-core CPUs and GPUs, to the world's largest supercomputers and web sites, parallel processing is ubiquitous in modern computing. The goal of this course is to provide a deep understanding of the fundamental principles and engineering trade-offs involved in designing modern parallel computing systems as well as to teach parallel programming techniques necessary to effectively utilize these machines. Because writing good parallel programs requires an understanding of key machine performance characteristics, this course will cover both parallel hardware and software design.

Instructors and CAs
[kayvonf at cs.stanford]
Office hours:
Tuesday, 4 pm to 4:30 pm PST
Thursday, 4 pm to 5 pm PST
 
[kunle at stanford]
 
Your fun and helpful CAs:
David Durst
[durst at stanford]
Office hours:
Monday, 9:30 am to 11:30 am PST
Thursday, 6 pm to 8 pm PST
 
Fait Poms
[fpoms at cs.stanford]
Office hours:
Monday, 5 pm to 7 pm PST
Wednesday, 2:30 pm to 4:30 pm PST
 
 
Matthew Kay Fei Lee
[mattlkf at stanford]
Office hours:
Friday, 1 pm to 3 pm PST
 
Benjamin Aguilar
[benjaa at stanford]
Office hours:
Wednesday, 5 pm to 7 pm PST
Friday, 10 am to noon PST
 
 
Office Hours Calendar
Prerequisites

CS110: Principles of Computer Systems is strong prerequisite for CS149. If you have not taken CS110 and feel like you have the background to take CS149, please contact your friendly instructors and let's talk it over.

Textbook

There is no required textbook for CS149. However, you may find the following textbooks helpful. However, in general these days there's plenty of great parallel programming resources available for free on the web.

John L. Hennessy and David A. Patterson
Computer Architecture, Sixth Edition: A Quantitative Approach. Morgan Kaufmann, 2017
[ On Amazon ]

Jason Sanders
CUDA by Example: An Introduction to General-Purpose GPU Programming. 1st Edition. Addison-Wesley. 2010
[ On Amazon ]

David Kirk and Wen-mei Hwu
Programming Massively Parallel Processors, Second Edition: A Hands-on Approach. 2nd Edition. Morgan Kauffmann. 2012
[ On Amazon ]

Announcements via Piazza

All class announcements will be made via our class Piazza Page. Please make sure you sign up for the course on Piazza.

Assignments, Projects, and Exams (What You Will Do!)

Programming assignments. Students will complete four programming assignments (plus one optional assignment) using parallel programming systems such as ISPC, OpenMP, and CUDA. You are not expected to know these languages/systems in advance of the course, you will pick them up as you go.

Take home written assignments. Students will complete five take-home written assignments assigned approximately every two weeks.

One Exam. There will be one exam, scheduled about 3/4 of the way through the quarter.

Grading
  • Programming Assignments (4): 8% + 10% + 12% + 12% = 42%
  • Written Assignments (5): 25%
  • Exam: 28%
  • Participation: 5% (async lecture comments)

Late day policy: Each student has a total of seven late days for use over the entire quarter. Late days can be used either for programming assignments or written assignments.

  • A student can extend a programming assignment deadline by one day using one point. (A team of two students can extend an assignment deadline by one day using one point from each student.)
  • If a team does not have remaining late day points, late hand-ins will incur a 10% penalty per day (up to three days per assignment).
  • No assignments will be accepted more than three days after the deadline.