High School Programming Contest

The 2025 High School Programming Contest, sponsored and run by George Fox University’s Computer Science program, will be held on Saturday, April 12, 2025. We hope that this page holds all of the information necessary for competitors in the competition.

New For 2025

We will be offering both on-campus and virtual contests. The in-person, on-campus contest will be held in conjunction with the Oregon Computer Science Teachers Association conference at GFU.

There is no limit on number of teams from a single school in the virtual contest, however there is a limit on the total number of teams on campus due to space considerations.

While the problem sets will be the same for like divisions whether a team competes on site or virtually, in-person teams will only be competing against other in-person teams and virtual teams will only be competing against other virtual teams.

Registration

Teams must be verified to compete. All team registrations will be considered tentative until verified by a teacher at your school.

Before registering, you’ll need to gather the following information:

  • School name
  • Teacher’s name and email
  • Team name (have fun, but be appropriate)
  • Which division to compete in (Division I, II, or III; please see below)
  • On-campus at GFU or virtual participation
  • Name and email for each team member (minimum of 2, maximum of 3)

Registration is open through Wednesday, April 9.

Download and complete the contest registration spreadsheet for all teams competing from your school. Send the completed registration spreadsheet to the site director, Dr. Brent Wilson, via email at bwilson@georgefox.edu.

Schedule

We offer a couple of different options for schools to be involved in different capacities.

In the week leading up to the actual contest on Saturday, there will be a non-competitive practice contest that will run Monday through Friday. Problems will be available to solve via the contest system.

Teachers can use these problems as projects during the week, or to give various students additional practice before the actual contest. How you use this week’s problems is entirely up to you. Teachers should contact the site director for a classroom set of credentials if you wish to utilize this resource.

The tentative schedule of events for the actual competitive contest on Saturday, April 12 is as follows:

8:30–9:30 AM Team check-in at Edwards-Holman Science Center; virtual teams check in via Zoom
9:30–10:00 AM Team briefing
10:00 AM Contest begins
3:00 PM Contest ends

All times are Pacific Time.

Contest Divisions

There are three divisions available:

  • Division I: college problems
  • Division II: intermediate to advanced HS problems
  • Division III: easy to intermediate HS problems

Choose each team’s division placement wisely and appropriately based on the experience and capabilities of the students on each team.

We desire for all participants to have a good experience. The best way to ensure that is to place teams in the correct division, such that problems are not too trivially easy or too impossibly difficult.

To assist in determing the proper placement of your teams, we provide the following information:

Division III

Division III is suited for teams consisting of students who are in the beginning stages of developing their algorithmic problem-solving skills. Division III teams may have competed before, but probably only solved a small handful of problems.

Division III problems include:

  • Formatting output
  • Control structures (branching, looping)
  • Boolean logic
  • String manipulation
Division II

Division II is suited for teams with students who have been coding for at least a year and may have competed in the contest in previous years. They probably would have completed over half of the problems but would have not previously placed 1st, 2nd, or 3rd in a similar division.

Division II problems include:

  • All Division III topics
  • Multi-dimensional lists/arrays
  • Recursion
  • Searching and sorting
  • Basic data structures (e.g., trees, graphs)
Division I

Division I is decidedly a significantly more difficult division. The majority of the problems will be similar to programming contest problems at the college/university level. This division is truly for the advanced students who want to challenge themselves and “go for the glory!”

Division I problems include:

  • All Division II and Division III topics
  • Advanced algorithms
  • ...it’s a surprise!

Contest Logistics & Rules

On-Site Teams

On-site teams participating in person will be provided a workspace consisting of a table and three chairs, along with an AC power strip.

Each team needs to bring one computer with the ability to connect to a wireless network for the competition. That one computer, with its one keyboard and one mouse, becomes a shared resource that each team must decide how to best utilize.

The computer can be a laptop or desktop. Only one enabled display is permissible, including the built-in laptop display. If bringing an external display for a laptop, screen mirroring is not permissible, but disabling the built-in laptop display and enabling only the external display is permissible.

On-site teams may also bring one printer (for printing work-in-progress source code or program output for further analysis). Teams may also bring any printed materials (such as textbooks, printed API reference, or example source code for common algorithms).

Virtual Teams

Teams will work remotely and utilize their own communication channel (Discord, Slack, SMS/RCS group chat, audio or video call, etc) for discussing and sharing information, code, and so on with all team members.

Teams may use one computer for each team member. Each team will receive one set of login credentials to the contest system. The contest system purposefully does not allow for two or more simultaneous logins from the same account. The one team account becomes a shared resource that each team must decide how to best utilize.

Contest Flow

At the start of the contest, each team will open their set of programming problems. On-site teams will receive printed paper copies from the contest staff; virtual teams will be provided links to download the problem set for their division as a PDF document.

Students will write programs to solve as many of these problems as they can. Students within a single team may distribute tasks among themselves and work cooperatively in any way they wish.

As soon as a team believes it has implemented a correct solution to a problem, it should submit their program through the online web-based submission system.

If the team’s program does not correctly solve the specified problem on the first attempt, the team is allowed to submit one or more revised solutions. Beyond simply incrementing the count of problems correctly solved, each correct solution will also receive a “time score” which represents the total elapsed time in minutes since the start of the contest, plus any time penalties for incorrect submissions. The time scores only come into play when there is a tie for a given count of problems correctly solved.

Scoring Example
  • Team 1 correcly solves its first problem in 30 minutes on its first submission for that problem. Team 1 now has a score of 1 (correctly-solved problem) with a time score of 30 (minutes).
  • 20 minutes later (i.e., 50 minutes into the contest), Team 1 solves a second problem on its first submission. Team 1 now has a score of 2, with a time score of 80 (i.e., 30 + 50).
  • Meanwhile, Team 2 submits an incorrect solution for its first problem 15 minutes into the contest. They are able to fix their submission and resubmit it at the 45 minute mark of the contest. Team 2 now has a score of 1, with a time score of 65 (solution at 45, plus a 20-minute penalty for the incorrect submission on the problem).
  • If the contest ended at this point, Team 1 would win due to having 2 correctly-solved problems. The time score would only be considered if both teams were tied with 2; in that case, the lowest time score wins.
Contest Problems

Contest problems have a very wide range of difficulty. Divisions I, II, & III have separate problem sets; however, there is typically some overlap. For example, the same problem might appear as an “easier” problem Division I and as a “harder” Division II problem. Moreover, we try to include at least a couple problems that every team should be able to solve.

The Division II problem set and Division III problem set from the 2021 contest are available for familiarization and practice purposes. Note that all inputs should be read from standard input, and all output should be written to standard output.

Supported Languages and Compilers

Our contest judging system supports the following programming languages. Submitted programs will be compiled using the specified compiler flags below:

Language Version Compiler Flags
Java 17 OpenJDK javac 17.0.10
C C99 GCC gcc 11.4.0 -std=c99
C++ C++11 GCC g++ 11.4.0 -std=c++11
Python 3.10 Python 3.10.12

Only these languages/versions are supported by the judging system; no other languages/versions shall be used during the contest.

Prizes

Plaques will be awarded for first, second, and third place teams for each division.

All prizes courtesy of the GFU Computer Science program.