Course Meeting Times
Lectures: 2 sessions / week; 1.5 hours / session
Prerequisites
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.
Textbook
Reading materials will be posted on the class website.
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% |