2023 UCF Local Programming Contest


This year's contest will involve multiple rounds!  The first two will be online only and the last is intended to be held in-person for those that qualify.

If you have trouble logging in or some other site-related issues on the day of the online rounds, please reach out to us by e-mail at This email address is being protected from spambots. You need JavaScript enabled to view it. or via Chrome to the public message system at https://tlk.io/ucfprogteam. Please be sure to check your Junk folders for email from This email address is being protected from spambots. You need JavaScript enabled to view it. and add it to your Safe Senders list.

The contest will consist of three rounds held as follows:

  • Practice Orientation Round (aka "Practice Local Contest").  This will take place online Saturday, August 26, 2023 from 2:00-5:30pm ET.  An old set of problems will be posed, and this is an opportunity for contestants and the judges to test the system.  First time competitors can see how the contest will work!  The judges will be online to answer clarifications and address any system issues during this time. 

    In addition, the practice orientation round will remain in an "extended open" state until Wednesday, August 30, 2023 at 11:59pm ET.  This allows you to continue to submit (and receive automated responses from the system) and gives late comers an opportunity to try the system.  However, the score will not be updated, and while the judges will monitor the site it will not be on a 24/7 basis.

    Attendance in this round is not required but is highly encouraged, especially for anyone who is new to this type of contest!

  • Local Programming Contest Qualifying Round.  This round will take place also online on Saturday, September 2, 2023 from 2:00-5:30pm ET.  This is the first official round where the standings count!  A completely new problem set will be posed to the contestants in this round.

    Based on the results, the coaches will advance some contestants (roughly the top 70 on the scoreboard plus returning varsity) to the Final Round.

    Since this round is a real contest, assistance will be strictly limited to system issues. If you are new to this kind of contest, please make time to participate in the earlier Practice Orientation Round, so that you can get more comprehensive help.


  • Local Programming Contest Final Round.  This round will take place in-person (planned) on Saturday, September 9, 2023 from 10:00am-7:00pm ET. Note that the Final Round is five hours long, plus we will have a contest rehearsal/practice, lunch, and an award ceremonyThis round is limited to those who advanced from the Qualifying Round.  Again, a completely new set of problems will be posed.

    Based on the results of this contest, the coaches will select the team members for the Varsity and Junior Varsity squads of the UCF Programming Team for the 2022-2023 year.  Note that these may be finalized after a few team practices and/or interviews with individuals.

  • FINAL ROUND SCHEDULE
    TimeActivityLocation
    10:00 AM   Check-in   ENG2 Atrium
    10:15 AM   Announcements   ENG2 Room 102
    10:30 AM   Contest Rehearsal   ENG2 Room 201 (Evaluation and Proficiency Center)
    11:30 AM   Lunch   ENG2 Atrium
    12:30 PM   Contest   ENG2 Room 201 (Evaluation and Proficiency Center)
    5:30 PM   Award Ceremony   ENG2 Room 102

If you have any questions, feel free to contact Dr. Orooji at (407) 823-5660 or by using our contact form
 
You may also download an announcement with this information and more, but also be sure to watch the orientation videos below!!

Eligibility & Selection Criteria

This contest is open to all UCF students.  Please note that you will require access to your Knights Mail account.

Selection of students for the UCF Programming Team for the new year will be based on published criteria.


Registration

In order to participate, you must register! Please visit the registration form and complete it. You must only register one time and not for each round! Again, please note you must use your Knights Mail account and it is this address where you will receive login information shortly before your first round.

Note that there is no fee to participate!


Format

Contestants are given at least six programming problems to solve within the given time limit. The person solving the most problems wins. Ties are broken based on the amount of time taken to solve the problems. Contestants have the option of using C/C++, Java, and/or Python on PC’s. Although it is necessary that each student be familiar with either C, C++, Java, or Python the emphasis of the contest is on problem solving rather than on the specific details of the language. Orientation videos will be provided to allow contestants to get instructions.


Contest Programming Environments

In the online rounds of the UCF Local Programming Contest, you are welcome to use any programming environment you wish, as long as your source code can be compiled/run by the judges using the methods below.

We strongly recommend that you install and configure VS Code, which supports all programming languages on many platforms. Once installed, you can find VS Code extensions that make coding and debugging easier for your preferred language. If you are using C++ on Windows, take special note of how to use GCC with MinGW. Be sure to take some time to configure the compile/run options to work as closely as possible to the judging methods below; these are likely different from the defaults.

In the final round, the lab machines will be provided with VS Code and some simple extensions, which will be pre-configured. No additional extensions will be permitted.

In all rounds, for each problems, an acceptable solution program must comply with the following:

  1. The program must be submitted as a single plain text file containing only source code.
    • Name the file as required for the problem and the language (with problem "prog" as an example: prog.c for C, prog.cpp for C++, prog.java for Java, prog.py for Python).
    • Do not submit build scripts, makefiles, custom header files, libraries, binaries, jar files, or "readme" files.
    • For Java, note that a source file name "prog.java" requires a class "prog" to be in the file with the "main" method in that class.
    • Java classes must use the default package, so don't submit a Java source file with a package statement.
  2. The program must read input only from "standard input" (stdin for C, cin for C++, System.in for Java, and sys.stdin for Python). It must not open files or network connections, nor assume the presence of any file or directory when it runs.
  3. The program must print its output only to "standard output" (stdout for C, cout for C++, System.out for Java, and sys.stdout for Python). It must not create files or directories, nor send data over network connections.
  4. The program must not display prompts such as "Enter a value" or "Press a key to continue" nor attempt to use colors or graphical/window output.
  5. The program must not require any command line arguments.

Judging Method

In all rounds, you are responsible to submit code that will work with the judging method described here.

  • The judges will not spend any time figuring out how to compile and run your code.
  • The judges will not use VS Code.

The judges will compile and run your program in Linux using command line tools and using command line redirection for input and output. These command line tools may be used within an automated framework, rather than the judges typing each command interactively. The versions of compiler/runtime that will be used for the languages are tentatively with gcc/g++ 12.2, OpenJDK 17.0, and Pypy 7.3 (Python 3.9).

Using filename "prog" as an example, the judges (or their automation) will compile and execute your submissions as follows:

C:
gcc -g -O2 -std=c11 -o prog prog.c -lm
./prog < prog.in > prog.out
C++:
g++ -g -O2 -std=c++17 -o prog prog.cpp -lm
./prog < prog.in > prog.out
Java:
javac prog.java
java -Xss64m -Xmx2048m prog < prog.in > prog.out
Python:
No compilation
pypy3 prog.py < prog.in > prog.out

Notes:

  • The judges will use the just-in-time Python compiler, Pypy, in order to allow your Python submissions to run more quickly. You may use python3 prog.py < prog.in > prog.out to test your code locally.
  • The example names of input and output files (prog.in, prog.out) are not guaranteed; due to the use of command line redirection, the judges may use any names for the input and output files.

After running your program, the judges will use automation and/or visual inspection to determine whether the output of your program is correct for the given input.

Prizes

There are no official prizes, just bragging rights! However, the results will be used to help form the UCF Programming Team (varsity) for the academic year, and potentially to help identify candidates for the UCF Developmental Programming Team (junior varsity).  UCF teams will then train to compete in the International Collegiate Programming Contest and attend regional competition.


Orientation Videos

  • Review of the UCF Programming Team and the International Collegiate Programming Contest:

  • Orientation: