Judge:History

From PEGWiki
Revision as of 21:22, 4 November 2010 by Brian (Talk | contribs) (Created page with '==A brief history of the Judge== During the 2007/2008 school year, Hanson and Guru decided to devote some time to a most worthy cause: writing an autograder for the 11/12 enriche…')

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

A brief history of the Judge

During the 2007/2008 school year, Hanson and Guru decided to devote some time to a most worthy cause: writing an autograder for the 11/12 enriched CS class at Woburn. In order to encourage us to develop her students' problem-solving skills as much as possible, Ms. Plachta set high expectations for them, such as earning 1000 points by the end of the year, where a typical problem is worth between 3 and 20 points. Students who wanted to earn a 99 in the course then had to solve between 50 and 300 problems, which translated to lots and lots of marking for Ms. Plachta. Marking programs is very tedious work. She had to download the program, save it in the student's folder, compile the program, locate the test data, run the program once for each case, then compare its output with the expected output. If the program failed, she often tried to figure out why, to give feedback to the student, and if it worked, she had to update the points spreadsheet.

The last task is the only one that should require human intervention, and it was clear that Ms. Plachta was spending far too much time on the other tasks. In the periods of time immediately preceding report card mark submission deadlines she was literally spending day and night marking, marking, marking. As she was in poor health due to the cancer it became clear that this would be too much of a burden for her. The more experienced students in class could give feedback to students whose programs didn't work, but it would have been impossible for them to mark everyone’s programs; it would have been too much work for students who had their own work to do too. And so the PEG Judge was born. Though its creators did not anticipate this, the Judge would have the added benefit of encouraging students to code.

On September 23rd, 2008, the first source file was submitted to the PEG Judge, which at the time supported only C and C++ (with Pascal being added soon afterward). The Judge was hosted on one of the school’s machines, a Dell OptiPlex with a dual-core Intel CPU and 4MB L2 cache using Jacob’s home internet connection with Rogers. As hosting servers on residential internet contracts is typically not allowed, Hanson decided to run the server on some port other than 80, in case the ISP was scanning for unauthorized activity on port 80. After trying various ports he determined that 5050 is the only port above the reserved range (i.e., the range 1-1023 to which, on some operating systems, permission to bind is withheld by the kernel and granted only to users with sufficient privilege) that isn't actually filtered by the school board's firewall. So there we sat at http://pegjudge.ath.cx:5050/ . The Judge at that time was very new; it had a very basic set of features, but it got the job done. Guru wrote most of the back end, particularly the grader itself, and Hanson wrote most of the front end.

The 2008/2009 school year saw a dramatic improvement in the interface as Hanson completely overhauled the front end, leaving the interface cleaner, crisper, and more professional-looking. He also overhauled the back end, switching from the ad hoc PHP functions being used before to the CodeIgniter framework. (The grader, though, has been tweaked only slightly since the inception of the Judge.)

By the end of that year the Judge in its current form was essentially complete, a good thing as Hanson was off to university and would likely have other things on his mind. As Brian had started using Linux the previous year, he was in an ideal position to take over the administration of the Judge (but he had to trick Hanson into giving him root access). In November he added a wiki to the site and he has also gradually populated the allowed languages list.

With the passing of Ms. Plachta the Judge was never as popular as before, for students were no longer being pushed to earn 1000 points. But there were still some PEG members using it; Canada’s IOI teams trained on it; and Brian and a friend from Waterloo C.I. tried to run a mock DWITE contest. And so the Judge went on. When the Plachta house was sold in June, the Judge was migrated to Brian's laptop, again illicitly. When Brian left for university, he could not risk violating the residence contract, so the Judge was left without hosting. Brian, Jacob, and Hanson were hopeful about convincing the Center for Education in Mathematics and Computing at the University of Waterloo to grant PEG hosting, for this is the organization primarily involved with high achievement in computer science at the high school level, running the Canadian Computing Competition and sending Team Canada to the IOI. Almost all problems from CCCs of years past, both stage 1 and stage 2, were already in the PEG Judge's archive, the interface had taken two years of work, the grader had been tweaked precisely, and, all in all, the PEG Judge was the first in Canada with a level of sophistication on par with those of the major online judges of the time. PEG's request was denied by the CEMC, forcing Brian to look elsewhere.

Luckily, some very good VPS plans exist; IntoVPS, for example, offers 512 MB guaranteed RAM, 30 GB disk space, 500 GB monthly bandwidth, and a quad-core CPU for only $10 USD/month. The PEG Judge was initially migrated to an IntoVPS server; a month later it was again migrated to hosting by Virpus, which offers 1 GB guaranteed RAM, 50 GB disk space, 1600 GB monthly bandwidth, and six CPU cores. As hosting is now legitimate, the :5050 suffix was dropped and the site is now http://pegjudge.ath.cx/