Simply Java Programming: An Application-Driven Tutorial Approach