00:00:35 Recap 00:02:35 Quicksort 00:06:51 Three-address code 00:08:55 Basic blocks 00:16:32 Local optimizations 00:21:30 Global optimizations 00:39:45 Loop Optimizations 00:42:25 Move code out of the loop 00:48:25 Eliminate induction variables 00:51:10 Reduce strength of operations 01:00:55 Loop unrolling 01:10:10 Tail call optimization 01:17:05 Code Generator Learned a lot, thanks! Too bad the course site is geofenced. Fortunately there are workarounds. P.S. There is a bug in the inner loop of quicksort, it should be `while (a[j] > v && j > 0);`, otherwise it will throw a *runtime error: index -1 out of bounds* P.P.S The flickering projector is painful to look at.