Fundamentals of OOP and data structures in Java - Wiener, Richard (Cambridge Cambridge University Press, 2000)