Site Software Requirements Last modified Thu Aug 28 09:27 2003
Operating Systems

You must use a modern 32 or 64-bit operating system such as Windows NT/2000/XP, Mac OS X, or any recent flavor of Linux, BSD, or commercial Unix. The important features of these operating systems are (1) support for writing programs using a flat 32-bit memory model, and (2) preemptive multitasking, which means that if a program crashes it shouldn't take the whole OS with it, requiring a reboot. Windows 95 or lower, any flavor of DOS, and Mac OS 9 or lower are not acceptable. Windows 98/98SE/ME are marginally acceptable, but because they use 16-bit legacy code internally their use may be deprecated in the future.

Programming Languages

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

General Requirements

  1. All compilers must support a flat 32-bit memory model. This prohibits ancient compilers such as Turbo Pascal and Turbo C++, which only support a segmented 16-bit memory model with a limit of 64K per object and 640K total memory.
  2. 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 C/C++ compiler, a Java compiler, and a Pascal compiler.
  3. 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, 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.
  4. 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.
  5. 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.

Language-Specific Requirements

C
The compiler must support the Standard C (1989) specification, as documented in Harbison & Steele's C: A Reference Manual (5/e). All modern compilers do. Support for the newer 1999 specification is not currently required.
C++
The compiler must support the Standard Template Library as defined in Stroustrup's The C++ Programming Language 3/e. In particular, it must support the modern iostream library, strings, container classes, algorithms, and function objects.
Java
The minimum requirement is compatibility with Sun's Java 2 SDK 1.2 or higher. No Microsoft Java or J++ compiler is acceptable.
Pascal
Any 32-bit compiler is acceptable. Compatibility with Borland Pascal 7.0 and/or Delphi is highly desirable. You do not have to provide a Pascal compiler if you have confirmation from all team coaches attending your site that none of their teams will be using Pascal.

Free Compilers and IDEs

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 and IDEs.

Borland C++ 5.5
A very good Windows C/C++ compiler. Turbo Debugger is also available.
Borland Kylix 3 Open Edition
Supports C++ and Delphi for Linux.
Eclipse
"An open extensible IDE for anything and nothing in particular." For Windows and Linux.
Free Pascal
Compatible with Borland Pascal 7.0 and parts of Delphi. For Windows, Linux, and *BSD.
JBuilder 9.0 Personal
A nice Java IDE for Windows, Linux, and Solaris.
MinGW (Minimalist GNU for Windows)
A native Windows version of gcc and friends. Get a recent version that provides gcc 3.2 or higher.
NetBeans
A very good Java IDE, for Windows and Linux. Can be a memory hog.
Open Watcom
An open-source version of Watcom's C/C++ compilers, for Windows.
Sun's Java 2 SDK 1.4.2
The latest version of Sun's Java Development Kit, for Windows, Linux, and Solaris.
Virtual Pascal
Compatible with Borland Pascal 7.0 and Delphi. For Windows.