How to Think Like a Computer Scientist: JAVA Programming