Title: Java Software Solutions : Foundations of Program Design  with Experiments in Java