This project received a score of 29/30. The 1-point deduction was due to a mistake in answering a theoretical question during the project presentation rather than due to the project itself.
The full requirements and a detailed analysis of the solutions can be found in the respective files.