Introduction to Programming Languages - Programming in C, C++, Scheme, Prolog, C#, and SOA (3. ed.)