Problem Solving With Data Structures Using Java: A Multimedia Approach by Mark Guzdial & Barbara Ericson