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. The course programming language is C.
Week | Lectures | Recitations | Key Dates |
---|---|---|---|
1 | L1: Intro and Matrix Multiplication | R1: Basic Tools | HW1: Basic Tools, C Primer assigned |
2 | L2: Bentley's Rules L3: Bit Hacks |
R2: Profiling | HW2: Profiling assigned Project 1 Beta assigned |
3 | L4: Architecture and Vectorization L5: C to Assembly |
No recitations | HW3: Vectorization assigned Project 1 Beta Writeup due Project 1 Final assigned |
4 | L6: Multicore Programming L7: Races and Parallelism |
R3: Cilk and Reducers | HW4: Cilk, Reducer Hyperobjects assigned Project 1 MITPOSSE deadline |
5 | L8: Analysis of Multithreaded Algorithms L9: What Compilers Can and Cannot Do |
R4: Analysis of Multithreaded Programs | HW5: Theory of Performance Engineering assigned Project 1 Final due Project 2 Beta assigned |
6 | L10: Measurement and Timing | R5: Quiz #1 Review | Project 2 Beta due Project 2 Final assigned |
7 | L11: Storage Allocation | R6: Simple, Straightforward Memory Allocation | Quiz #1 HW6: Simple Storage Allocation assigned Project 2 MITPOSSE deadline |
8 | L12: Parallel Storage Allocation L13: The Cilk Runtime System |
R7: Compiler-Inserted Instrumentation | HW7: Dynamic Analysis Tools assigned Project 2 Final due Project 3 Beta assigned |
9 | L14: Caching and Cache-Efficient Algorithms L15: Cache-Oblivious Algorithms |
R8: Chaching and Cachegrind | HW8: Caching and Cachegrind assigned Project 3 Beta due Project 3 Final assigned |
10 | L16: Nondeterministic Programming L17: Synchronization without Locks |
R9: Deterministic Execution | HW9: Deterministic Execution assigned Project 3 MITPOSSE deadline |
11 | L18: DSLs and Autotuning L19: Leiserchess Code Walk |
R10: Quiz #2 Review | Project 3 Final due Project 4 Beta 1 assigned |
12 | No lectures | No recitations | Quiz #2 |
13 | L20: Speculative Parallelism/Project Parallelization Strategies L21: Guest Lecture |
R10: Synchronization Primitives and Examples | HW10: Data Synchronization assigned Project 4 Beta 1 due Project 4 Beta 2 assigned |
14 | L22: Graph Optimization L23: Guest Lecture |
No recitations | Project 4 Beta 2 due Project 4 Final assigned Project 4 MITPOSSE deadline |
15 | No lectures | No recitations | Student Presentations due |