Free Programming Contest Control system- PC^2

PC2 (the Programming Contest Control system, pronounced “P-C-squared” or sometimes just “P-C-Two” for short) is a software system designed to support programming contest operations in a variety of computing environments. PC2 allows contestants (teams) to submit programs over a network to contest judges. The judges can recompile the submitted program, execute it, view the source code and/or execution results, and send a response back to the team. The system also supports an “automated judging” mode where judging is performed by software rather than by human judges.


The system automatically timestamps and archives submitted runs, maintains and displays current contest standings in a variety of ways, and allows the judges to retrieve and reexecute archived runs. It also provides a mechanism for contestants to submit clarification requests and queries to the judges, and for the judges to reply to queries and to issue broadcast bulletins to teams. In addition, PC2 supports contests being held simultaneously at multiple sites by automatically transmitting contest standing information between sites and generating a single contest-wide standings scoreboard at each remote site.

A wide variety of configurable options allow the contest administrator to tailor the system to specific contest operations. For example, the number of teams, problems, and languages in the contest; the scoring method being applied; which problems are handled by which judges; whether teams are automatically notified of the result of a submission; and the frequency of automatic scoreboard updates are all configurable. There are also mechanisms provided for editing the internal scoring database, and for recovering from various types of soft and hard errors. The system is designed to allow teams to use any language development tool which can be invoked from a command line and generates an executable file.

PC2 was developed at California State University, Sacramento (CSUS), and is available on the World Wide Web at

The most recent version, V9, is written in Java (using Eclipse) and is intended to run on any Java 1.5 (or greater) platform, including Windows (98/ME/2000/XP/Vista/7), Mac OS X (10.4+) and a variety of Unix-based systems including Solaris, Linux, and FreeBSD.

Download PC^2 System : Click Here

Complete Documentation : Click Here


1. Install the Java Standard Edition (SE) Software Development Kit (SDK) or Java Runtime Environment (JRE), version 1.5 or later on each machine. The remainder of this manual assumes that “$JAVAHOME” represents the SDK installation directory. For information on obtaining the Java SDK, visit
2. Ensure “$JAVAHOME/bin” is contained in the PATH environment variable on each machine (i.e., for each user).
3. Go to the PC2 home page (see Chapter 1, under References), navigate to the “Download” page, and download the latest PC2 “.zip” or “.tar.gz” file to the directory where you wish to install PC2 (this can be any directory of your choice).
4. Unzip the downloaded file, being sure to tell the unzip program to “retain directory hierarchy” and “preserve case sensitivity”. This will create a directory named (for example) pc2-9.2.0, which for the remainder of this manual we refer to as the $PC2HOME directory. The $PC2HOME directory contains bin, lib, doc, samps and other directories, plus a default “pc2v9.ini” file (see the following chapter) along with several text files giving basic information such as the system version number. The doc and samps directories contain the system documentation and a variety of sample scripts, files, and other goodies you might want to examine. The file “doc/index.html” can be used to browse the documentation. (NOTE: all files and directories which comprise a PC2 distribution (.zip or .tar.gz file) will unzip into the $PC2HOME directory. See the appendices for a complete description of PC2 distribution contents.)
5. Add the PC2 “bin” directory (that is, the directory $PC2HOME/bin) to the PATH environment variable on each machine.

Quick Start

Edit the pc2v9.ini file to point servers and clients to the server IP:port and to specify the appropriate site server name; put the modified .ini file on every server and client machine
 Start a PC² server using the command “pc2server”
 Login using the name “site1” and password “site1”
 Enter a contest password (this contest security password will be required to be reentered for all subsequent server startups)
 Start a PC² Administrator module using the command “pc2admin” and login using the name “root” and password “administrator1”
 Configure at least the following contest items via the Admin:
 Accounts (generate the necessary accounts)
 Problems (create one or more contest problems, specifying the problem input data file if there is one)
 Languages (create one or more contest languages, specifying the language name, compile command line, executable filename, and program execution command line)
 Press the “Start ALL” button on the Administrator module Time tab
 Start a PC² client on each Team machine (using the command pc2team) and each Judge machine (using the command pc2judge) and log in using the Admin-created accounts and passwords.
 Start a PC² client (using the command pc2board) on the Scoreboard machine and log in using the “board1” Scoreboard account/password; arrange for the scoreboard-generated HTML files to be accessible to user’s browsers..