Smart Course Scheduler generates course schedules. Users only need to type in the courses they are planning to take in the upcoming school years. This application would scrape relevant information including the courses' required activities, sections, and class time from UBC's course registration website. All valid course schedules that do not have time conflicts would be generated in timetable format.
Technologies used in this project: Java, HTML, Jsoup, Junit testing, Constraint Networks
This application is inspired by the constraint network model I learnt from an introductory AI course. I reduced the course scheduling problem into a constraint network problem. The courses are the variables, the sections are the possible values of the variables, and time conflicts are the constraints.
This model works fine for small inputs (e.g. 3-5 courses) but soon encounters runtime problems when the number of courses grows large. Unfortunately, we failed to fix this issue, and the application can be used only as a toy prototype.
In another course we took later, we learnt that scheduling problem is NP-Hard. There exists no efficient algorithm to obtain all valid solutions. We will try to implement a heuristics algorithm to find some "good enough" timetables when we have a chance.
The setup is simple: Clone the code and run Main
(Note: This project scrapes UBC's course registeration website, and is up-to-date as of February 2020. It may no longer work if UBC changed the structure of its website.)