ML from Scratch, Part 3: Backpropagation (2019)