Introduction to Java and Software Design