Programming EnvironmentStudents will be provided with a programming environment described below. It is very similar to the one used at 2018 ICPC World Finals. The programming environment will be distributed on a bootable USB flash drive. The flash drive must be returned to the instructor at the completion of the course (or at withdrawal from the course). FilesThe student's home directory in the provided environment will be reset to the initial state at each login. All files and customization will be deleted at each login. The student's source code uploaded to the judging server during the weekly mini-contests and exams will become available for download from the server at the completion of the contest and will be downloadable for one week. The files will become permanently unavailable starting at noon on Friday the following week. SoftwareThe software configuration for the course will consist of the following:
Compilation of SubmissionsDuring the contest, students will submit proposed solutions to the contest problems to the Judges using the DOMJudge contest control system. Source files submitted to the Judges will be compiled using the following command line arguments for the respective language:
gcc -g -O2 -std=gnu11 -static ${files} -lm
g++ -g -O2 -std=gnu++14 -static ${files}
javac -encoding UTF-8 -sourcepath . -d . ${files} The “${files}” in the above commands represents the list of source files from the submission which will actually be compiled. Files with the following suffixes (and only files with these suffixes) will be submitted to the compiler:
Execution of SubmissionsFor each language, if the above compilation step is successful then the submission will be executed as follows:
java -Dfile.encoding=UTF-8 -XX:+UseSerialGC -Xss64m -Xms1920m -Xmx1920m Execution as described above will take place in a “sandbox”. The sandbox will allocate 2GB of memory; the entire program, including its runtime environment, must execute within this memory limit. For Java the runtime environment includes the JVM interpreter. The sandbox memory allocation size will be the same for all languages and all contest problems. For Java, the above command shows the stack size and heap size settings which will be used when the program is run in the sandbox. For C and C++, the heap and stack sizes are limited only by the total amount of memory available in the sandbox. Reference MaterialsThe following packages will be available on lab machines:
|