Matthew Beckler's Home Page

Home :: Blog :: General :: Software :: Hardware :: Microcontrollers :: Artsy

Class Scheduler

This application was written to help me schedule my classes at the University of Minnesota. I first create a configuration file containing the classes I want to take for the next semester. I enter in all the possible times and days that each course-component (Lecture, Discussion, Lab) is offered, and it will eliminate all the 'impossible' schedules, those being the schedules where course options overlap each other. It reduces all the possibilities for schedules down to a (hopefully) reasonable number of permutations.

Scheduler - Screenshot

The configuration file is an un-namespaced XML file. It was designed to be pretty simple, so hopefully you won't have trouble understanding and modifying for your own use. Each config file has one root element, the <courses> element, with an attribute of desc, which adds a nice title to the output. Inside the root element, each course-component has an element of course, with a variable number (at least one), option element inside. The enabled="true" is used to indicate if the scheduler should even consider that entry. This makes it easy to say, "Well, I really don't want to have circuits lab from 5:30 - 8:30 on Friday, so don't even consider it." This will reduce the number of combinations. I'm sure you will be able to understand with an example file.

By far, the worst part of this process is creating the config file. After that, it's relatively easy. I've already contacted the University of Minnesota's Office of Information Technology, which is in charge of maintaining all their websites and data warehouses. Once I got a reply from an actual programmer/engineer, who actually knew what I was talking about, I learned that they are going to eventually transition to web services for the university, which would allow my scheduling program to automatically request scheduling information from the university's computers, freeing the user from manual data entry.

I have packaged the application itself and all required libraries (mostly related to parsing the XML config file), into a JAR file for distribution. The source code is also included, licensed under the GPL. It'd be awesome if you'd let me know if you're using my source code. You can download it below.

There are a number of ways to run this executable JAR file. Windows users can probably just double-click on the JAR file. Linux/Unix users can execute the command java -jar Scheduler-1.0.jar.


Homepage Made with Vim! Validate HTML Email Me! Made with Inkscape! Validate CSS

Copyright © 2004 - 2017, Matthew L. Beckler, CC BY-SA 3.0
Last modified: 2009-07-23 11:54:49 AM (EDT)