Performance Engineering of Software Systems
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.
Syllabus
- 1 Lecture 1: Introduction and Matrix Multiplication
- 2 Lecture 2: Bentley Rules for Optimizing Work
- 3 Lecture 3: Bit Hacks
- 4 Lecture 4: Assembly Language & Computer Architecture
- 5 Lecture 5: C to Assembly
- 6 Lecture 6: Multicore Programming
- 7 Lecture 7: Races and Parallelism
- 8 Lecture 8: Analysis of Multithreaded Algorithms
- 9 Lecture 9: What Compilers Can and Cannot Do
- 10 Lecture 10: Measurement and Timing
- 11 Lecture 11: Storage Allocation
- 12 Lecture 12: Parallel Storage Allocation
- 13 Lecture 13: The Cilk Runtime System
- 14 Lecture 14: Caching and Cache-Efficient Algorithms
- 15 Lecture 15: Cache-Oblivious Algorithms
- 16 Lecture 16: Nondeterministic Parallel Programming
- 17 Lecture 17: Synchronization Without Locks
- 18 Lecture 18: Domain Specific Languages and Autotuning
- 19 Lecture 19: Leiserchess Codewalk
- 20 Lecture 20: Speculative Parallelism & Leiserchess
- 21 Lecture 21: Tuning a TSP Algorithm
- 22 Lecture 22: Graph Optimization
- 23 Lecture 23: High Performance in Dynamic Languages
Course materials
- Course on MIT OpenCourseWare β website