An Online Programming Judge System
This page chronicles the design of an online programming judge system. The system consists of a web interface that allows user to view problems, submit solution programs, and view reports on how the programs performed. This document also includes a specification of the grading process and how to specify programming problems.
Candidate Tools
- Ruby as glue.
- Ruby on Rails for the web interface.
Programming Problem Specification
A programming problem is specified a collection of files contained inside a directory. The structure of the director is as follow.
<problem_id>/ public_html/ --- All the files that the user can see and download via the Internet. index.html --- The problem statement. test_cases/ --- Contains all test data. all_test.cfg --- A configuration file for all the test data. <test_number>/ --- Contain files related to a particular test data. test.cfg --- A configuration file specific to this test data. <other files #1> <other files #2> . . . script/ compile --- A shell or ruby script that compiles a source code. run --- A script that runs and grade the programming solution. grade --- A script that collects information from various runs and tally the points.