Head over to the scheduler: http://www.scheduler.uni.cc/
Every decent college or university needs a decent scheduling utility, and most such utilities allow one to easily organize courses and visualize one’s academic week. Columbia University, which I consider decent (you may have other opinions), lacks a visualization mechanism, leaving students to draw their own schedules based on a textual representation. This feature is one of the most useful because it makes an otherwise-tedious task fun. So I whipped out Notepad and made my own program to fill the need. It parses course information off the online bulletin, stores it in a MySQL database, and draws weekly calendars for users. (Later, I would discover that Barnard College, associated with Columbia, does have this function in its scheduling utility. Not fair!)
It was all very good, until I decided to update the system to a newer version of the bulletin — the new and old course numbers overlapped, among other things, so I had to make numerous adjustments. Also, the parser was not quite up to par; it could not read courses that took place at multiple locations. So I decided to spend a day rewriting the program from scratch.
The new system uses Sqlite as a database mechanism. This makes it incredibly easy to make a copy of the course data — just copy the database file. Because each semester has its own database file, it’s easy to change to a different semester — just swap database files. Updating is a breeze — delete the old database file and regenerate it using new data. And because the database would mostly be used only for reading data, and only occasionally for writing, it would be fast.
Maintaining the system involves some steps. First, the new course data has to be downloaded off the bulletin. This is cached, so that the database can be regenerated many times without incurring network overhead (actually, I did regenerate the database many times while figuring out a workable format). The database handler is then fired up, which first deletes the current semester’s database if it’s available, then creates the tables and inserts the data all over again.
Using the system is pretty straightforward. Now that it has a complete mirror of the online bulletin, it can generate its own directory of courses. The user can navigate through the course listing and select courses to add to his/her schedule, and the weekly calendar is built up course by course. The new system also supports multiple locations, days, times, and instructors per course, which is an immense improvement. In addition, users can browse courses by instructor and by location.
Well, if you’re a Columbia student, I hope you find the new calendar system useful. It won’t register your courses for you, but it should help you make good use of your time.