Parallel Computer Architecture and Programming (CMU 15-418)
CMU 15-418, Spring 2013
Tues/Thurs 9:00 - 10:20am
Baker Hall A51 (Giant Eagle Auditorium)
Instructor: 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.


Kayvon Fatahalian
[kayvonf at]
Gates-Hillman Center 7005
Office hours: drop by anytime, or by appointment

Your fun and helpful TAs:
Hongyi Xin
Office hours:
Wednesday 1400-1500 EST
CIC 4th (Go right after the lobby
I sit in the far end)
Alex Reece
Office hours:
Wednesday 1330 - 1430 EST in GHC 3K
Anytime on #15418 on Freenode
By demand (email me)
Manish Burman
Office hours:
Thursday 1630 - 1800 EST
West Wing Cluster
Parag Dixit
Office hours:
Friday 1630 - 1730 EST
CIC 4th Floor ISTC

15-213 (Intro to Computer Systems) is a strict prerequisite for this course. We will build directly upon the material presented in 15-213, including memory hierarchies, memory management, basic networking, etc. While 18-447 (Intro to Computer Architecture) would be helpful for understanding the material in this course, it is not a prerequisite. Students are expected to be strong C/C++ programmers as there will be exposure to a variety of "C-like" parallel programming languages in this course. Previous experience with operating systems (15-410), distributed systems (15-440), or compilers (15-411) may prove to be very helpful.


There is no required textbook for 15-418 this semester. In fact, you will be writing the class reference text yourself! However, the following two textbooks will be put on reserve in the library and you may find it valuable to purchase a copy for your own use.

David E. Culler and Jaswinder Pal Singh, with Anoop Gupta
Parallel Computer Architecture: A Hardware/Software Approach. Morgan Kaufmann, 1998
[ On Amazon ]

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

Discussion Boards

We will be using Piazza for discussions. The 15-418 Spring 2013 Piazza page is located here.

Assignments, Projects, and Exams (What you'll be doing!)

Programming assignments. Students will complete four programming assignments. Assignment 1 will be performed individually. The remaining three assignments may be performed in groups of at most two. Although it is not necessary to have a partner in 15-418, it is highly recommended.

Creation of study aid comments and articles. The class will collaborate to create our own online set of articles that will serve as a reference and study guide for the course! The class will be divided into teams of four students, and each team will be responsible for writing a mini-chapter explaining a lecture. To help the team writing the explanation for a lecture, each student must individually contribute one interesting comment per lecture using the course web site.

Final project. Over the last five weeks of the course students will propose and complete a self-selected final project. The final project can be performed individually or in groups of two. Each team will present the project orally during the 15-418 Parallelism Competition and produce a detailed write-up describing their work and results.

Exams. There will be two in-class exams.

  • Programming Assignments (4): 5% + 10% + 13% + 10% = 38%
  • Exams (2): 28%
  • Final Project: 28%
  • Participation (on-line comments + explanation articles): 6%

Late hand-in policy. Each student is allotted a total of five late-day points for the semester. Late-day points are for use on programming assignments only. (They cannot be used for final projects or lecture explanations) Late-day points work as follows:

  • A one-person team can extend a programming assignment deadline by one day using one point.
  • A two-person team can extend a programming assignment deadline by one day using two points.
    (e.g., 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.
Collaboration Policy

Students in 15-418 are absolutely encouraged to talk to each other, to the TAs, to the instructors, or to anyone else about course assignments. Any assistance, though, must be limited to discussion of the problems and sketching general approaches to a solution. Each programming project team must write their own code and produce their own writeup. Consulting another student's or team's solution is prohibited and submitted solutions may not be copied from any source. These and any other form of collaboration on assignments constitute cheating. If you have any question about whether some activity would constitute cheating, just be cautious and ask the instructors before proceeding!

You may not supply code, assignment writeups, or exams you complete during 15-418 to other students in future instances of this course or make these items available (e.g., on the web) for use in future instances of this course (just as you may not use work completed by students who've taken the course previously). Make sure to make repositories private if you use public source control hosts like github.