Lesson: optimization

Optimization is a common problem in all fields of computation. We start with classic strategies like the conjugate gradients algorithm and follow all the way to modern machine learning algorithms such as neural networks, genetic algorithms and Monte Carlo trees.