An Introduction to Programming with Mathematica - Gaylord, Richard J; Kamin, Samuel N; Wellin, Paul R (Cambridge University Press, 2005)