# Performance Engineering of Software Systems

- Institution: Massachusetts Institute of Technology
- Department: Electrical Engineering and Computer Science
- Taught by: Prof. Charles Leiserson, Prof. Julian Shun
- Term: Fall 2018
- Level: Undergraduate
- Language: English
- Subjects: Computer science, Engineering, Art, architecture and design
- Source: [MIT OpenCourseWare](https://ocw.mit.edu/courses/6-172-performance-engineering-of-software-systems-fall-2018/)
- Licence: [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) (Non-commercial use only.)
- Syllabus: [at the source](https://ocw.mit.edu/courses/6-172-performance-engineering-of-software-systems-fall-2018/pages/syllabus/)
- Readings: [at the source](https://ocw.mit.edu/courses/6-172-performance-engineering-of-software-systems-fall-2018/pages/readings/)
- Who can watch: Tweens profiles and older (sources give no ratings; placed by Invisible Network from the source's own words)

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.

## Lectures

1. [Lecture 1: Introduction and Matrix Multiplication](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/d0c24a04c894), 1 h 1 min (Video)
2. [Lecture 2: Bentley Rules for Optimizing Work](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/dd2c0982feb0), 1 h 21 min (Video)
3. [Lecture 3: Bit Hacks](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/2aff35e4310d), 1 h 19 min (Video)
4. [Lecture 4: Assembly Language & Computer Architecture](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/050cd13a428b), 1 h 18 min (Video)
5. [Lecture 5: C to Assembly](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/8443f00446ed), 1 h 22 min (Video)
6. [Lecture 6: Multicore Programming](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/a4e32b85d71d), 1 h 17 min (Video)
7. [Lecture 7: Races and Parallelism](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/b67d1b63d9a6), 1 h 15 min (Video)
8. [Lecture 8: Analysis of Multithreaded Algorithms](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/a125d9a00af6), 1 h 18 min (Video)
9. [Lecture 9: What Compilers Can and Cannot Do](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/655a2b1240eb), 1 h 19 min (Video)
10. [Lecture 10: Measurement and Timing](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/49e5f0f57337), 1 h 22 min (Video)
11. [Lecture 11: Storage Allocation](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/e4a1795e5b15), 1 h 6 min (Video)
12. [Lecture 12: Parallel Storage Allocation](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/9fa3ed896773), 1 h 18 min (Video)
13. [Lecture 13: The Cilk Runtime System](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/719732cdd085), 1 h 22 min (Video)
14. [Lecture 14: Caching and Cache-Efficient Algorithms](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/8c37c9dc7c42), 1 h 19 min (Video)
15. [Lecture 15: Cache-Oblivious Algorithms](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/b244827c216a), 1 h 22 min (Video)
16. [Lecture 16: Nondeterministic Parallel Programming](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/fbd4f18342e5), 1 h 23 min (Video)
17. [Lecture 17: Synchronization Without Locks](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/83e6f1f7fb73), 1 h 21 min (Video)
18. [Lecture 18: Domain Specific Languages and Autotuning](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/5ff4767d017e), 1 h 12 min (Video)
19. [Lecture 19: Leiserchess Codewalk](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/5de052157d89), 1 h 13 min (Video)
20. [Lecture 20: Speculative Parallelism & Leiserchess](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/9b117976da59), 1 h 24 min (Video)
21. [Lecture 21: Tuning a TSP Algorithm](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/dd9b2a22f969), 1 h 21 min (Video)
22. [Lecture 22: Graph Optimization](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/5d6e41a5550a), 1 h 19 min (Video)
23. [Lecture 23: High Performance in Dynamic Languages](https://invisiblenetwork.ai/learn/mit/6-172-performance-engineering-of-software-systems-fall-2018/da53d7945679), 1 h 26 min (Video)
