This project is a PHP implementation of my idea for a schedule generator.  This means entering in all the courses that you want to take along with the available sections and the times it meets, then generating every possible non-conflicting schedule.

You can use the schedule generator project here.
You can use the University of Richmond specific version here.

The code is available on my GitHub here.
And the manual version is here.

Please comment or email with your questions, suggestions, etc.


The new algorithm implemented by commit 9102865 is the Bron-Kerbosch maximal clique finding algorithm. I realized that the scheduling program could be thought of as a graph where vertices represent a section of a class and edges exist between vertices that are compatible (can be taken together).

Representing the problem as a graph means that possible non-conflicting schedules are maximal cliques. Therefore, to find all possible schedules, I implemented the Bron-Kerbosch maximal clique finding algorithm. This does run faster than my old algorithm and generates fewer total schedules because the old algorithm generated some schedules that were included in larger ones (sub-graphs).

Old Algorithm

Below is an illustration of how the schedule generating algorithm generally works.



  1. Hello Mr. Michael. I’ve been trying to submit schedules in the schedule generator page, but every time failed and this error comes out HTTP ERROR 500

  2. Did you able to check the problem? I am also investigating but same vendor files doesn’t create any problem on Unofficial Richmond Scheduler. I install dependencies in the same way and I was able to launch URC in my shared hosting.

  3. Thank you I fix the problem as well. I want to ask another think. Is there any way to launch site without escapeshellarg() and shell_exec() modules? Since I am trying to launch on a shared hosting, these modules are not exist. I am asking this because in Unofficial Richmond Scheduler there is no problem similar to this.

  4. // Long URL

    I came across with the same problem in this URL. If you can check it out, I would be appreciative.

    Thank you for your time and project.

    1. Thanks for sending me the URL. I determined the issue was that the URL is too long. I have increased the limit and now I verified that your request works.

    1. I’ve never really tried with that many options, it may well time out while calculating the options. Any additional information would be helpful so I might try to debug.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.