Foundations of programming. John vince mathematics for computer graphics second edition. programming languages concepts languages and applications.