It took 200 hours of skilled labor for my school to create its master schedule last year. The process was inefficient yet invaluable, and in a realm a computer could crack. The Scheduler was born with the goal of making creating school timetables easy and giving my school flexibility. There are four steps, a few button presses, and out pops optimized schedules. For those interested in how the program works, it takes the data the user enters, transforms it into a Constraint Satisfaction Problem, performs local search to optimize it some hundred or thousand or million times depending on how long its given to run, and finally spits out the answer that scored highest.


Created by Laker Newhouse. Thank you for your invaluable aid, Abhi Vedati for taking the final code and fully developing the functional and snazzy user interface beyond what I ever could have imagined; Avery Wang for showing me around the math of Constraint Satisfaction Problems; John Lubushkin for coaching me on the project and for giving me the space I needed to complete it; Kim Dow for meeting with me over many iterations of the project to ensure that it would fulfill the true needs of the school; Peter Norvig for including Constraint Satisfaction Problems in Artificial Intelligence: A Modern Approach, which was my original inspiration for embarking on this project (also thanks, Mom, for checking the textbook out from the library and suggesting that I read it); and William Chargin for showing me Chrome's Performance tab, which led to a 1000x speed improvement (the difference between 20 iterations per second and iterations that took so long I ran them overnight on my laptop).