Syllabus

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.

More on Why should I learn Software Performance Engineering (SPE)?

This class 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 20%
Quizzes 30%
Project 1 15%
Project 2 15%
Project 3 15%
Class Participation 5%

The course is brand new, experimental, and under active development this term; you should expect rough edges. But we are excited to have you along on the journey with us, and are eager share what we know while also learning together with you!