6.172 | Fall 2018 | Undergraduate

Performance Engineering of Software Systems


Course Meeting Times

Lectures: 2 sessions / week; 1.5 hours / session


The prerequisites for this class are 6.004 Computation Structures, 6.006 Introduction to Algorithms, and 6.031 Software Construction (formerly 6.005 Software Construction). The course programming language is C.

Course Description

Modern computing platforms provide unprecedented amounts of raw computational power. But with great power comes great complexity, to the point that making useful computations exploit even a fraction of the computing platform’s potential becomes a substantial challenge. Indeed, obtaining good performance requires a comprehensive understanding of all layers of the underlying platform, deep insight into the computation at hand, and the ingenuity and creativity required to obtain an effective mapping of the computation onto the machine. The reward for mastering these sophisticated and challenging topics is the ability to make computations that can process large amounts of data orders of magnitude more quickly and efficiently and to obtain
results that are unavailable with standard practice.

6.172 is an 18-unit class that provides a hands-on, project-based introduction to building scalable and high-performance software systems. Topics include performance analysis, algorithmic techniques for high performance, instruction-level optimizations, caching optimizations, parallel programming, and building scalable systems.


Reading materials will be posted on the class website. 


Each assignment will describe how you will be graded. The scores you receive on each assignment will be combined to produce your final grade after being weighted approximately.

Assignments Percentages
Weekly Homeworks 10%
Quizzes 30%
Project 1 10%
Project 2 12%
Project 3 12%
Project 4 24%
Class Participation 2%

Course Info

Learning Resource Types
Lecture Videos
Programming Assignments
Lecture Notes
Exams with Solutions