An introduction to deep learning that builds a framework for arbitrary feedforward neural networks. Implements layer-wise automatic differentiation and uses this for efficient optimisation.