https://courses.physics.illinois.edu/phys596/fa2011/Assignments/Assignment_Summary_FA11.pdf