Friday, December 17, 2010

Schedule Creator

Here's a utility which will let you find schedules that work together. You input the name of the classes you want to take and all of the times each class is offered. This utility will then show you all the possible schedules that can be made. The best way to understand how to use it is by looking at the pre-populated sample text. Disclaimer: This isn't a very robust application, and it might cause unpredictable behavior if no schedule can be created. I'll try to improve this in the future whenever I have more free time.

Step 1: Enter in your classes

Instructions: Enter in a tab delimited set of data consisting of: class name, instance id, days, times. For classes that have complicated day/times, enter multiple lines for the class using the same ID (see examples 6126 and 7546). Tip: You can use a spreadsheet application such as Excel to format your data into this format, then copy and paste into the above text area. Note: Days must be one of the following: Sun, M, T, W, Th, F, Sat, and times must be in the range of 1-12. -- You can also add a letter at the end which specifies the location of the class. Furthermore, you can then enter in the amount of time it takes to commute from one area to another in the format "A>B=60", meaning that it takes 1 hour to go from A to B.

Step 2: Select your classes

Class Time Options

Instructions: Choose which class instance you want to use. Most of the time you should leave all of them as "Auto select". Choose "optional" for those classes which aren't mandatory and should only be added to the schedule if there is an available space for them. Choose "required" if the class is mandatory. And choose a letter if one or more classes can be used to satisfy the same requirement (e.g. if MATH101 and MATH115 are interchangeable, you can set them both to "A").

Step 3: Choose your schedule

Tip: Place your mouse over one of the colored blocks in the week view to see the name of the class and its exact times.
Class ID Times


  1. Hey, I was researching this particular top and stumbling upon your blog. It is a really cool and unique application you got there.
    I am trying to make a similar thing for my school in and xml or sql database.
    Did you do this entire thing in javascript?
    Can you give me some tips how you do this project? Especially the data structure: How do you store a class section and compare if they overlap or not. And to get a schedule, do you just basically DPF through all possibilities?

    Thank you

  2. @Khoi Tran:


    Yeah, it was all done in JavaScript, which means you can take a look at the code if you want.

    The data structure is similar to:

    Class (e.g. ENGL101) -> Instances (e.g. 5412) -> Times (e.g. M 10:00 am - 12:30 pm)

    As far as the algorithm goes, I just try every single combination and only keep those that don't conflict. It's not super efficient, but it seems to be sufficient.

  3. This is absolutely amazing! I had 6 courses to sign up for; with multiple sections of each, there were a total of 33 courses. This software sorted them without a problem. Some of the classes start at 7:00 am and some run from 5:00 to 9:00 pm. This made it 1000 times easier to avoid starting at 7:00 am and finished at 9:00 pm. I have searched and searched the web for this exact kind of application. You really need to develop this into an App for iPad. This is beautiful!

  4. Hi, I'm trying this application but it doesn't seem to work for me :(
    I don't now why.
    I've really been looking for this in the entire internet.

  5. This is amazing!! You could make so much money if you made this into an app!! Thank you!