Skip to content

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 programmi

License

Notifications You must be signed in to change notification settings

NoSuger-p/MIT-6.172-Performance-Engineering-of-Software-Systems

 
 

Repository files navigation

MIT-6.172-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.

See https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-172-performance-engineering-of-software-systems-fall-2018/

Calendar:

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

About

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 programmi

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 54.3%
  • Python 40.3%
  • Makefile 5.4%