Learning Java with Algorithms