Skip to content

Arrange course schedule for you with constraint networks!

Notifications You must be signed in to change notification settings

Yuhua-Wang/SmartCourseScheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Course Scheduler

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

Inspirations

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.

Problems

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.

Get Started

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.)

Overview

Demo.mp4

About

Arrange course schedule for you with constraint networks!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages