Implementing algorithms and solving problems using Java