6.106 | Spring 2025 | Undergraduate

Software Performance Engineering

Location, Time
Instructor: Xuhao Chen
Office Hours: Time, Location

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.

This 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.

Prerequisites

The course programming language is C. The prerequisites for this class are:

Grading

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%

Textbook

Reading materials will be posted on the class website.

Computing Resources

SpeedCode

CSAIL Slurm

Satori

NCSA delta

Engaging

Schedule and Slides (subject to change)

Week 01 Intro and Matrix Multiplication [video] HW1 assigned [HW1 Materials]
Week 02 Bentley’s Rules [video]
Bit Hacks [video]
HW2 assigned [HW2 Materials]
Project 1 Beta assigned
[Project 1 Materials]
Week 03 Computer Architecture [video]
C to Assembly [video]
Vectorization
HW3 assigned [HW3 Materials]
Project 1 Beta Writeup due
Project 1 Final assigned
Week 04 Multicore Programming [video]
Races and Parallelism [video]
HW4 assigned
Project 1 deadline
Week 05 Parallel Algorithms I [video]
Parallel Algorithms II
HW5 assigned
Project 1 Final due
Project 2 Beta assigned
[Project 2 Materials]
Week 06 Measurement and Timing [video] Project 2 Beta due
Project 2 Final assigned
Week 07 Storage Allocation [video] HW6 assigned [HW6 Materials]
Quiz #1
Project 2 deadline
Week 08 Parallel Storage Allocation [video] HW7 assigned
Project 2 Final due
Project 3 Beta assigned
[Project 3 Materials]
Week 09 Cache-Efficient Algorithms [video]
Cache-Oblivious Algorithms [video]
HW8 assigned
Project 3 Beta due
Project 3 Final assigned
Week 10 Nondeterministic Parallel Programming [video]
Synchronization without Locks [video]
HW9 assigned [HW9 Materials]
Project 3 deadline
Week 11 Speculative Parallelism [video] Project 3 Final due
Project 4 Beta 1 assigned
[ Leiserchess Rules (PDF)]
[Project 4 Materials]
Week 12 No lectures Quiz #2
Week 13 GPU Programming [video] HW10 assigned
Project 4 Beta 1 due
Project 4 Beta 2 assigned
Week 14 What Compilers Can and Cannot Do [video] Project 4 Beta 2 due
Project 4 Final assigned
Project 4 MITPOSSE deadline
Week 15 No lectures Student Presentations due
Week 16 TBD TBD