CS 377P Programming for Performance (Unique Number 50901)
Sreepathi Pai
M,W 11:00-12:30 GDC 1.304
Office Location
POB 4.118
Office Hours
Friday 2PM-5PM
Henrique Fingler
TA E-mail
TA Office
TA Station 3
TA Office Hours
T, Th 12:30PM -- 1:30PM
Download (PDF)
Final Exam Date
December 12, 7PM--10PM
Canvas, Piazza



To obtain the high level of end-to-end performance needed in problem domains like graphics, computer games, and scientific computing, it is necessary for programs to exploit many of the features of modern computer architectures. In this course, we will study the performance-critical features of modern computer architectures, and discuss how applications can take advantage of them to obtain high performance. This is not a course on software tricks; rather, the emphasis is on abstractions of computer architecture, understanding performance, and obtaining performance when you need it.

See the schedule for a list of the topics to be covered in this class.


The diligent student will learn to:

  • Identify performance bottlenecks in programs,
  • Reason about underlying causes,
  • Evaluate strategies for mitigation (including cost/benefit tradeoffs using models)
  • Implement such strategies on modern systems comprising multicore architectures and accelerators.


This course requires a background in computer architecture. Most projects will involve programming using C/C++ and therefore a strong maturity in programming is expected.


The grades for this class will be determined based on performance in homeworks, assignments and a project (including a project presentation) as follows:

  • Homeworks: 15%
  • Assignments: 60%, comprising 4 assignments, each 15%
  • Project: 25%, 1 project

Plus and Minus grades will be used for final course grade. Attendance will not be used for grading.

All homeworks and assignments will involve substantial amounts of programming, experimentation and interpretation of experimental data.

The project will involve substantial programming, writing a project report and a short presentation. Detailed instructions on the structure of the project will be posted later here. The presentation must be given on the final exam date.

There is no required textbook for this course.

Links to materials for each topic will be provided separately and will include system manuals, programming manuals, research papers, etc.

A refresher to computer architecture can be found in any recent edition of the textbook by Hennessy and Patterson, ``Computer Architecture: A Quantitative Approach'' published by Morgan Kaufmann. We will not use this book in this course.

Academic Accommodations

Students with disabilities may request appropriate academic accommodations from the Division of Diversity and Community Engagement, Services for Students with Disabilities, 512-471-6259,

Previous Incarnations

This course has been offered before as CS 378 Programming for Performance. Here are the links to some recent offerings: