Activity Recommendation System Portfolio Project
Upon completing the Computer Science career path section on Trees and Graphs, I embarked on a portfolio project that entailed developing a recommendation system utilizing a data structure of my choosing.
The initiative led to the creation of an Activity Recommendation Software, designed to process various inputs such as the month, day of the week, the number of participants, and preference for indoor or outdoor activities. The system cleverly deduces the current season, discerns between weekends and weekdays, and proposes a curated list of activities tailored to the user's specifications.
This particular system was chosen with my children in mind, serving as a tool for them to discover engaging activities during holidays or after-school hours. Now, let's delve into the technical details:
- Node Definition: A Node class was crafted to encapsulate various attributes of an activity, such as the name, location, and the required number of persons, ensuring that each activity's full details aren't pulled unnecessarily.
- LinkedList: Employing the Node class, an Activity LinkedList was developed to incorporate methods for insertion at the beginning, node removal, and conversion to a string format.
- Activity Insertion: The insert_activities method takes an array of activities and constructs a LinkedList from them.
- Utility Methods: Various utility functions like check_day and find_season were implemented to ascertain the day of the week and the current season, respectively.
- Activity Filtering: The activity_filter method filters a list of activities against the specified parameters, returning a LinkedList of suitable activities.
- Data Stores: Modules like seasons and activities act as data repositories, potentially scalable to databases like Postgres or MongoDB.
- Main Driver: The main file orchestrates the user interaction, processing input to deliver a list of matching activities or prompt for a new search in the absence of suitable options.
Feel free to explore the code and see the Activity Recommendation System in action.
Note: I would love some feedback on my decision to use a Node class that has many value fields to hold each of the data points for an activity. Do you think it is the right approach to use? Or is it more efficient to just use one value field that holds an entry for an activity.
Thanks in advance for your feedback