  By putting together an abstract view on quantum mechanics and a
quantum-optics picture of the interactions of an atom with light, we develop a
corresponding set of C++ classes that set up the numerical analysis of an atom
with an arbitrary set of angular-momentum degenerate energy levels, arbitrary
light fields, and an applied magnetic field. As an example, we develop and
implement perturbation theory to compute the polarizability of an atom in an
experimentally relevant situation.
