This repo is a documentation of the process of learning algorithms and datastructures with java
Although java is a OOP language, it is encouraged to limit the solutions to using functional programming patterns. Those may include:
- Recursion
- Higher order functions (lambdas)
- Streams / iterables for processing sequences (whenever possible)
- Avoid state mutation as much as possible
Also, it is required that each class for a problem solution has both unit and property tests. Unit tests are managed using JUnit 5, whereas property testing is managed using jqwik.