Algorithms, data structures and exercises in Java