Site Compiler Requirements

Teams may elect to program in C, C++, Java, or Pascal. You must provide compilers for these languages.

General Requirements

  1. You may not have more than one compiler per language. For example, you cannot provide both Visual C++ and gcc. Sometimes code that works fine with one compiler will not work with a different compiler, and we can't risk that happening during the contest. (It actually has happened in the past, hence the rule.) Since most modern C++ compilers also compile C, in practice most sites will have three compilers: a Pascal compiler, a C/C++ compiler, and a Java compiler.
  2. If a compiler has an IDE, it must also have a command-line equivalent. Contestants will prefer to use the IDE, but the judging utilities require a command-line compiler. Most modern IDEs also provide a command-line equivalent. It is your responsibility to ensure that the default settings for both the IDE and command-line compiler match! If they use different settings for optimization, debugging, memory model, etc., it may happen that a program will work correctly for the contestant when using the IDE but fail when the judges test it. This too has happened in a previous contest.
  3. You may not provide teams with a CD-ROM or other removable media that contains the compiler to be used during the contest. (Of course you may distribute whatever you want after the contest.) Some books and promotional materials contain CDs with a working compiler, and in the past at least one site asked to use such a CD during the contest. The idea was to give each team a CD that they would then use during the contest, rather than installing a compiler on each machine. The problem is that all CDs (and Zip disks, etc) look alike, so it is very difficult to ensure that teams don't have a CD that they're not supposed to.
  4. You are not required to provide a symbolic debugger for each language. Virtually all IDEs provide one, but many command-line-only compilers do not.
  5. You must provide compilers for all supported languages unless you have written confirmation from all team moderators attending your site that a particular language will not be used.

Language-Specific Requirements

C
The compiler must conform to the ANSI C specification. All modern compilers do.
C++
The compiler must support the Standard Template Library as defined in Stroustrup's The C++ Programming Language 3/e. There are at least three different implementations of the STL in use by the major C++ compilers, each with its own idiosyncracies, so expecting 100% conformance is unrealistic at present. As a practical matter it is sufficient for the implementation to support the modern iostream library, strings, and the basic containers (including vector, list, stack, queue, deque, priority_queue, set, and map).
Java
The minimum requirement is compatibility with Sun's JDK 1.1.x, although we strongly encourage you to provide a compiler based on Java 2 SDK 1.2 or higher. Sites using JDK 1.1.x should also provide the JDK 1.1 Collections package, available at http://java.sun.com/beans/infobus/index.html#DOWNLOAD_COLLECTIONS (Look for the Continue button for the JDK 1.1 collections, then you get led through the Terms And Conditions .... Make sure the package is accessible from your classpath.)
Pascal
Select either Turbo Pascal 5.5 or Turbo Pascal 7.0 for MS-DOS.

Free Compilers

You will probably just use the compilers that you normally provide for your students. If they are not acceptable, or if you want to consider other alternatives, here are a few free compilers.

Borland C++ 5.5
A very good C/C++ compiler. No debugger. For Win 9x/NT/2000.
djgpp
A version of gcc that runs under plain old DOS. Make sure you get the latest release, which is based on gcc 2.95.2.
gcc 2.95.2
The excellent gcc C/C++ compiler for Win 9x/NT/2000. Select the mingw32 version.
Java 2 SDK 1.3
The latest version of Sun's Java Development Kit, the standard by which others are judged. For Win 9x/NT/2000.
Turbo Pascal 5.5
A bit long in the tooth, but supports all the important features of Turbo Pascal 7.0.

Last modified Thu Aug 31 20:57:35 2000