Guide to Java: A Concise Introduction to Programming (Undergraduate Topics in Computer Science)