This Java project was created as the final project for the university course Advanced Programming. It takes a predefined list of songs and their parameters, trains an algorithm, and provides recommendations for songs a user may enjoy.
About the application
The application has a graphical interface built with JavaFX and uses Maven for project management. It also includes unit tests to verify the recommendation algorithms and CSV file reader.
Algorithms
Users can choose between two recommendation algorithms:
- K1NN: a nearest-neighbour algorithm for similarity-based recommendations.
- KMeans: a clustering algorithm that groups songs by similar characteristics.
Design patterns
Several design patterns were used to improve the project structure:
- Strategy: makes it possible to switch recommendation algorithms dynamically.
- Template Method: defines the general structure of the recommendation process.
- MVC: separates model, view, and controller for a clean architecture.
Academic goal
The project demonstrates the practical application of algorithms and design patterns, combining academic theory with a working music-recommendation system.