Equips readers with the programming skills and experience needed to solve nontrivial optics problems using the completely free Python programming language. The book is divided into two parts: (1) a "first-order toolbox" for optical systems and (2) more sophisticated tools "beyond the toolbox".