The Problem
When planning the new semester, a situation often arises where you want to take a lot of courses. However, creating an optimal timetable can be difficult. Most courses have different groups with different times for practical sessions, and each student has their own preferences for how they would like the new timetable to look. Currently, students have to plan their upcoming semesters in the SIS 2 environment. The Study Information System or SIS is the official information exchange environment for the organization of studies at the University of Tartu. In the SIS 2 environment, timetable creation is cumbersome, as every student knows. In order to see possible timetables, one currently has to manually change the groups of their registered courses one by one. Additionally, it is required to ensure that the times of the lectures and practical classes of different groups do not overlap. This process is unnecessarily difficult and usually takes hours to finally get a timetable that you are happy with.
The Solution
To simplify the process, we (Daglas Aitsen and Johan Kirikal) have developed a website that generates all possible timetables for students, along with their respective groups. The student can select the courses they want to register for by entering the course code found in the SIS 2 environment. Additionally, students can deselect groups that they want to avoid, such as those taught in different languages, or choose not to have lectures and practical sessions on specific days or times. The website generates all the different possible variations of the timetable and ensures that no two lessons overlap. From these timetables, the student can then select the most optimal one for themselves.
Student Project Contest
The project won first place at the 2023 University of Tartu Student Project Contest. Find out more about the competition here.
How Does It Work?
1. Select Courses
We used web scraping in Python to collect the data for all 2,700 university courses and stored it in a sorted JSON file. When a user enters a course code, we use binary search to retrieve the relevant course information and save it in an array that contains the data of all selected courses.
2. Generate All Possible Timetable Variations
To generate all possible variations of the timetable, we employ a recursive algorithm. Firstly, we sort the selected courses based on the number of available study groups they offer. If a course has only one study group, it can only be scheduled in a single slot on the timetable. Next, we iterate through the sorted array, adding each course along with its corresponding study groups to the timetable. In case of conflicting lecture timings, we ensure that only one lecture is included. The algorithm concludes by returning an array that encompasses all the distinct possible timetables.
Check Out The Project
If you are interested in exploring the project firsthand, you can visit the website here.