NOTE: As of Monday, October 16, 2006, CourseManager will no longer be updated. The university provided Class Schedule Planner is the recommended tool for class scheduling.

CourseManager |
A free software course scheduling application for Iowa State University.
General Information | Screenshots | Links | News | Downloads

Monday, October 16, 2006
Received an email from ITS stating that the webpage used to collect data for the CourseManager catalogs will no longer be available after 2006. CourseManager catalogs will not be updated after today.

Monday, June 12, 2006
Update the homepage to remove dead links and add a 'last catalog update' to indicate that the catalogs are still being updated.

Monday, February 20, 2006
Updated the catalog builder now that all 2005 years have been removed. Uploaded CourseManager v0.5.4.

Wednesday, March 30, 2005
Updated the catalog builder to handle changes the University made to the 'Schedule of Classes' page. Also updated the catalog builder to submit one query per catalog to workaround their recently-imposed limit. Added support for multi-section classes (e.g., PHYS 221). Uploaded CourseManager v0.5.3.

Saturday, March 6, 2004
Updated the catalog builder to handle changes the University made to the 'Schedule of Classes' page a few months ago. Uploaded CourseManager v0.5.2.

Monday, October 27, 2003
Glanced over the changes I made a few months ago and then uploaded CourseManager v0.5.1. With this version, it should be possible to ignore first meeting conflicts. The schedule files it creates will be incompatibile with previous versions. I'll fix it later.

Tuesday, August 26, 2003
Added features list and 'macosx installer' to the webpage. Starting work on 'ignore first meeting', but I don't like how it's turning out.

Sunday, August 24, 2003
Cleaned up the 'release' ant target. Uploaded CourseManager v0.5. Noticed that RegMan is back.

Saturday, August 23, 2003
Made a few UI tweaks. Set up nightly generation of catalogs. Added an 'archived news' link to this page as it was getting too lengthy. Uploaded CourseManager v0.4.11.

Friday, August 22, 2003
Fixed a few bugs in the catalog generator and profile code.

Thursday, August 21, 2003
Merged MacOS X installer fix from Andrew Hanson. Fixed inability to resize table columns.

Monday, August 18, 2003
Made the Windows installer create shortcuts that work when WinRAR is installed (as well as other programs that register themselves to handle the .jar extension). Made a few minor UI tweaks. Finished the help files I was planning to write. Added in an integrated help system. Building and executing now requires the JavaHelp libraries. Uploaded CourseManager v0.4.10 with these changes.

Painfully discovered that jar-in-jar is simply not feasible. Spent forever trying to find a way to package the JavaHelp jar files in with the main jar file. Finally figured out that they just have to reside side-by-side in the same directory with an appropriate Class-Path property in the manifest.

Monday, August 18, 2003
Fixed a minor bug in the schedule display code. Added accelerators to the menu items in the schedule dialog. Add 'Ign. Rec.' column to course table. Worked on help files. Uploaded CourseManager v0.4.9 with these changes.

Sunday, August 17, 2003
Added 'ignore recitation conflicts', which might be more useful than 'edit ignorable recitation conflicts'. Since the work for the latter is already done, I'll leave it for now :). Fixed a few display bugs when overlapping times are drawn. Added 'page setup' to the schedule dialog. Tested and fixed printing. My door now proudly displays a Fall 2003 printout :). Uploaded CourseManager v0.4.8 with these changes.

Saturday, August 16, 2003
Worked on getting course titles from the course description pages. Fixed a few bugs. Uploaded CourseManager v0.4.7 with the updates and fixes from the last few days. Print support for schedules is enabled, but untested.

Friday, August 15, 2003
Fixed a few bugs with the file manager. Finished work on ignorable recitation conflicts. Begin work on adding printing support to the schedule dialog.

Thursday, August 14, 2003
Added 'view section conflicts'. Fixed a few bugs and cleaned up a few things. Made good progress on allowing conflicts with recitations to be ignored.

Tuesday, August 12, 2003
Added keyboard shortcuts to all menus and popup menus. Bound 'delete' on the course table to 'remove course'. Uploaded CourseManager v0.4.6.

Sunday, August 10, 2003
Miscellaneous cleanups.

Thursday, August 7, 2003
Cleaned up the catalog objects. Hopefully, this means the next incompatible catalog change won't be for a long while. Also, integrated the file manager more completely. Uploaded CourseManager v0.4.5 with these enhancements.

Wednesday, August 6, 2003
Made minor webpage tweaks. Uploaded CourseManager v0.4.4 that includes the file manager that I've been working on. Also worked on improving the method for generating nightly catalogs.

Tuesday, August 5, 2003
Worked on ensuring compatibility between releases. Switched 'generated date' on catalogs to 'last updated', which is acquired from the webpage. Got a large chunk of work done on the new 'file manager' feature.

Friday, July 11, 2003
Uploaded CourseManager v0.4.3. It has updated MacOS X installer build files and a few other minor tweaks.

Monday, July 7, 2003
Uploaded CourseManager v0.4.2 with comments, a few minor tweaks, and installer build files for MacOS X, courtesy of Andrew Hanson.

Monday, June 30, 2003
Appropriately use the command key on MacOS rather than the control key for menu shortcuts.

Sunday, June 29, 2003
Cleaned up a few items dealing with building and more extensively commented some of the trickier aspects of the main classes.

Wednesday, June 25, 2003
Spent a long time playing with Ant. Created a build.xml file for CourseManager, so there's no longer a need to have any of the .bat files. Uploaded CourseManager v0.4.1 with the changes.

Monday, June 23, 2003
More UI cleanups. Released CourseManager v0.4 with separated catalog files and a Windows installer. Played with XML/XSLT for this page. Hopefully nothing broke.

Sunday, June 22, 2003
Small UI cleanups. Added statistics to the schedule dialog.

Saturday, June 21, 2003
Added a box for 'add' to the main window. Cleaned up some code.

Friday, June 20, 2003
Uploaded CourseManager v0.3.2 with some new GUI features and a directory structure rearrangement.

Thursday, June 19, 2003
Added an "add course by reference number" feature. It adds the owning course to the current schedule (if it isn't already present) and makes the specified section the only active section. Uploaded CourseManager v0.3.1 with the changes from the last few days.

Wednesday, June 18, 2003
Worked with Tim Hanson on creating some icons for the Windows installer. I think we came up with something that looks nice. Made a few other minor UI enhancements.

Tuesday, June 10, 2003
Played with Inno Setup for a while to see if I could make a Windows Installer, and I managed to get one working. I need to come up with some icons, then the next version will have a Windows installer with it (start menu/desktop shortcuts, uninstaller, file associations).

Sunday, June 8, 2003
Added "reserve times" feature. A combobox exists to more easily manipulate the reserved times. Using the right/middle mouse button and control and/or shift keys also produces different manipulations. Uploaded CourseManager v0.2.4 with these changes.

Continued working, and added various enhancements:

Uploaded CourseManager v0.2.5 with these changes.

Compression measurements
Fall 2003 CourseManager catalog file
Modification Cache Hits Accesses Hit Rate Catalog Size Savings
Unmodified N/A N/A N/A 849K N/A
String 12,012 16,220 74% 728K 121K (14%)
TimeSlot 5,843 7,459 78% 804K 44K (5%)
String + TimeSlot 17,855 23,679 75% 671K 178K (20%)
GZIP + String + TimeSlot N/A N/A N/A 180K 669K (79%)

Uploaded CourseManager v0.2.6 with these changes. The code is the largest it's ever been, but the download is the smallest due to the compressed catalog files.

Moved back to enhancing the UI and added a "unique schedules" option to the schedule dialog. This was the last thing I wanted to add before v0.3, so I released CourseManager v0.3 after adding this feature.

Tuesday, May 27, 2003
Uploaded CourseManager v0.2.3 with a few minor changes.

Sunday, May 18, 2003
Minor cleanups. Continued work on parsing course titles and descriptions.

Wednesday, May 7, 2003
Minor code, GUI cleanups.

Tuesday, May 6, 2003
Got asynchronous loading of catalog and schedule files working (along with a progress bar). Initial window is now centered on screen. Several minor gui cleanups to 'add course' dialog. Uploaded CourseManager v0.2.2 with these changes. Worked on parsing course titles and descriptions.

Monday, May 5, 2003
Played with asynchronous loading of catalog a schedule files coupled with a wait cursor. Failed miserably in my attempts generate any code that didn't look horrid.

Sunday, May 4, 2003
Moved scheduling logic to from Multiple courses can be selected in the 'add course' dialog. Merged many changes from David Faden including BuildCatalog split up, semester name in window title, and various other code cleanups. Uploaded CourseManager v0.2.1 with these changes.

Saturday, May 3, 2003
Implemented a new scheduling algorithm idea that had been floating around in my head for a few days. It seemed to do pretty well, so I thought I'd do some timings of before the changes, after the changes, and with an equivalent schedule on RegMan . The RegMan timings have a large uncertainty (10s, maybe) since I didn't have a way to exclude GUI time and I don't have a way to measure other than using a regular clock.

Time taken to generate schedules (866MHz Pentium III)
First 8 chemistry classes selected from Fall 2003 catalog
Application Trial 1 Trial 2 Trial 3 Trial 4 Trial 5 Trial 6 Trial 7 Trial 8 Trial 9 Trial 10 Average
RegMan 75s 80s 82s 85s 90s 84s 83s 84s 86s 81s 83s
CourseManager v0.2 11.146s 10.585s 8.903s * * * * * * * 10.21s
CourseManager v0.2.1 0.411s 0.4s 0.411s 0.401s 0.41s 0.39s 0.39s 0.401s 0.421s 0.41s 0.4045s
* java.lang.OutOfMemoryError was thrown

Interesting. I then proceeded to select the first 11 chem courses and CHEM 331 (the 12th course, CHEM 211, creates a conflict and you end up with no possible schedules) and selected every possible section. CourseManager reports that this is 17,947,754,496,000 combinations and proceeds to find 119,136 schedules in 13s. While that IS a rather large number of schedules, I'm still not entirely satisfied with the performance.

Friday, May 2, 2003
Fixed a few minor issues with CourseManager v0.2 and a major one with the catalog generation. Uploaded a new file that contains the fixed catalogs.

Thursday, May 1, 2003
Created an initial webpage. Added credit totals. Added menus. Released CourseManager v0.2. Improvements include:

Wednesday, April 30, 2003
Add/use 'Schedule' and 'Catalog' classes. Mostly finished file saving/loading. Clean up passing of ArrayList all over the place.

I found out today in COM S 311 that general scheduling is an NPC problem. Does anyone have a clever way of reducing the number of combinations that have to be checked by taking advantage of the fact that we only have events that are half-hour aligned? This probably doesn't even matter and means we're stuck with a slow algorithm.

Tuesday, April 29, 2003
Merged changes from David Faden so that it works on MacOS X (and in particular, Java 1.3). Began work on save files.

Monday, April 28, 2003
Added 'active' checkboxes to courses and sections, and it properly filters based on their settings. Fixed parsing of the Spring 2004 catalog (there were numerous inconsistences with the other catalogs). Initial post to Strangetalk of CourseManager v0.1.

Sunday, April 27, 2003
The GUI portion of the program is started. The main screen and add course dialog are both functioning. Generating section combinations is hard. Schedule dialog, display, active section listing, next/previous buttons are all working. Remove course works. More bugs in the parsing ironed out.

Saturday, April 26, 2003
Work begins. It can parse all course listings for the Fall 2003 semester from local files.

Send feedback to .