I’m always looking for new ways to apply my programming knowledge to real-life problems, and when I learned that I was too late to enroll in major-essential classes and that they had all been filled up, I had a big problem on my hands. Either I could take general requirement classes and focus on the hard-hitters later in my college career, or I could step up to the plate and devise a way to save my planned schedule for the year.

Having created many programs in the past that interact with webpages and simulate user input, I devised a concept that, if executed correctly, would allow me to sneak my way into all of the classes that I could not enroll in. The software would log into the college’s class scheduling site, check the class availability at a user-defined interval, and enroll in the class as soon as it saw an opening. With the idea mapped out, I grabbed a cup of coffee and locked myself in my room. Three hours later, I had a working product.

The class checker, doing nothing now that I am completely enrolled.

The class checker, doing nothing now that I am completely enrolled.

The webpage parsing was straightforward, but the automatic enrolling was a bit of a hassle. Without going into specifics though, I had to find a way to deal with the automatic timeout, JavaScript functions, and the form submission [HTTP POST]. With all of that taken care of, I woke up at 8am, started up the program on my desktop, and went back to bed.

How the scraper navigates through the schedule builder's tables

How the scraper navigates through the schedule builder’s tables

I awoke four hours later, and to my surprise, everything had worked on the first try. Not only did the program properly pull all of the data from the web app, but it also had successfully enrolled me in every single class I was hoping to get into. For three hours of programming and another four of letting the program run while I slept, having a 100% success rate is not too shabby.

The program and its respective source will not be released in order to prevent abuse.