Saturday 15th September
10:30am - 3:30pm
The 2018 UTS Programming Competition (sponsored by WiseTech Global) will see entrants race the clock to solve as many problems as they can over four hours. The problems will range from simple beginner level problems, to more challenging problems. A free pizza lunch will be provided on the day!
Registration for this Competition is free and open to all UTS students from any faculty. We encourage both beginners and more experienced programmers to compete. Entrants may enter as teams of two or three. Prizes will be awarded to the best teams. All entrants will receive certificates of participation.
This Competition is the first step towards participating in the International Collegiate Programming Contest (ICPC), the world's annual elite programming competition for undergraduate university students!
Cash prizes (prize pool of $3000)
- First place - $1500
- Second place - $900
- Third place - $600
WiseTech merchandise for all entrants
Sponsorship for the ICPC
Registrations close on Monday the 3rd of September at 6:00PM AEST
This Competition is open to current UTS students of any Faculty.
To enter the Competition you must fill in this registration form. There are no registration fees.
To participate in the Competition, you must be a member of a team.
Each team must have 2 or 3 people. EACH TEAM MEMBER MUST FILL IN THE REGISTRATION FORM.
Note that you are not required to nominate your team on the form, however you may do so if you have already formed a team.
If you have not formed a team, don't worry. Please fill in the form, then attend our Information Session on the 3rd of September, where you will be able to meet other unassigned individuals and form a team with them.
If you find a team you wish to be a part of before the Information Session, but have not nominated one on the form, feel free to resubmit the form to let us know. Note that each team member should resubmit, confirming their intent to form a team.
This Competition is the first step towards participating in the ICPC. If you intend on competing in later stages of the ICPC as a representative team of UTS, please notify your intention on the form.
Note that certain eligibility requirements apply to participating in the ICPC (please see the Eligibility Decision Tree for 2018-2019), in addition to performing well in the Competition. Being ineligible for the ICPC does not preclude you from entering this Competition, however.
You must be in a team of 3 for this Competition if you intend on competing in the ICPC.REGISTER NOW!
Information and Practice Sessions
An information and registration finalisation session will be held on: Monday 3rd September 2018, 6.00PM at The Loft (upstairs)
Come along for some free pizza and drinks! Bring your laptop with you as well!
In this session, we will be doing the following things:
- Forming your teams! If you haven't got a team yet, don't worry -- just come to this session and we'll find you one :)
- Providing an overview of how the Competition will be run on the day.
- Showing you how to use DOMJudge, the software you will be using to submit your solutions to your problems for judging. We will also explain how problems are judged and scored.
- Allowing you to have a go at a few practice problems!
- Providing an overview of the ICPC.
A practice session before the Competition will be held on: Thursday 13th September 2018, 4.30PM, in the CB11.07 Networking Labs.
Just look for the ProgSoc (+ possibly Cyber Security) banners and come on in! We'll be doing a practice contest and answering more of your questions.
Programming Languages, Marking and Scoring
Competition programming languages
The following is a list of languages that can be used by contestants to complete solutions to Competition problems, as well as the version number of the compilers used on the adjudication server (subject to change):
- Java (Java SE Runtime Environment build 1.8.0_171)
- C (gcc version 8.2.0)
- C++ (g++ version 8.2.0, C++11 enabled)
- Python 2.7.15+
- Python 3.6.6
Text editors and IDEs
The following is a list of text editors and Integrated Development Environments (IDEs) available on the lab machines for contestants to write their code with:
- Eclipse 3.6.1 (Helios)
- NetBeans IDE 8.1 (Build 201510222201)
- Code::Blocks 10.05
- gedit 2.28.4
- XEmacs 21.5.31
- VIM 7.4.629
Marking of answers
Only the output of your code will be assessed for correctness.
Solutions to problems that are uploaded to the marking system are called submissions. Each submission is judged as accepted or rejected and the team is notified of the results as soon as possible.
Note: you have to submit the source code of your program (i.e. do not submit a compiled program or the output of your program). The marking system compiles submissions.
A submission can be adjudicated as follows:
|CORRECT||The submission passed all tests: you solved this problem!|
|COMPILER-ERROR||There was an error when compiling your program.|
|TIMELIMIT||Your program took longer than the maximum allowed time for this problem. Therefore it has been aborted. This might indicate that your program hangs in a loop or that your solution is not efficient enough.|
|RUN-ERROR||There was an error during the execution of your program. This can have a lot of different causes like division by zero, incorrectly addressing memory (e.g. by indexing arrays out of bounds), trying to use more memory than the limit, etc. Also check that your program exits with exit code 0|
|NO-OUTPUT||Your program did not generate any output. Check that you write to standard output.|
|WRONG-ANSWER||The output of your program was incorrect. This can happen simply because your solution is not correct, but remember that your output must comply exactly with the Problem Description.|
|TOO-LATE||You submitted after the competition ended! Your submission is stored but will not be processed any more.|
See here to get an idea of what the marking system looks like.
Rankings on the scoreboard are determined by the following criteria (in order):
- The largest number of problems solved (i.e. correct accepted submissions), then by
- The lowest total elapsed time, in minutes, for solved problems.
You can see that this is the case by looking at this scoreboard as an example.
Note that each incorrect submission for a problem incurs a time penalty of 20 minutes on top of the submission time for the problem, so it is in contestants' best interests to submit solutions to problems as early as possible, in as few attempts as possible.
The following rules govern the conduct of the Competition while it is taking place. All correctly registered entrants shall follow these rules in order to be eligible for prizes, and should familiarise themselves of the rules prior to competing.
- Entrants will have a total of 4 hours to solve as many problems as possible.
- Entrants are free to leave the competition room at any time for breaks.
- The competition clock will not be paused for lunch breaks.
- Printed reference materials, including books, and handwritten notes, may be taken into the room. The only use of the Internet is to access the competition/marking system. All other uses of online resources are prohibited and will be blocked. Entrants must not attempt to circumvent the blocking put in place.
- Mobile phones, tablet devices, smart watches and other personal computing devices must be switched off for the duration of the contest and must be given to competition staff for safekeeping.
- Each team will have access to one, and only one, PC running Linux with a single monitor, mouse and keyboard. Entrants may bring their own keyboard and/or mouse.
- Prior to the start of the contest, entrants are to login to their PCs and the marking system, using the credentials provided. Once logged in, entrants must not touch their keyboard, nor the question booklet provided, until the start of the contest.
- Solutions must be coded in either C, C++, Java or Python. Solutions that execute shell commands or spawn a shell to run some other scripting language will be rejected.
- Solutions must not be obfuscated, and should clearly show the algorithm used to solve the problem.
- Supervisors cannot answer any questions related to the competition problems. However, you can request for clarification using the marking system and a judge will get back to you. (See the right side of this this image). Entrants must not request a clarification in person from a judge, as the judging room is off-limits' by entrants for the duration of the contest.
- The judges' decision is final.
- Violation of any of the above-mentioned rules by entrants may result in disqualification.
Preparing for the Competition
How to prepare
The best way to prepare for the Competition is, of course, to practice!
This would involve familiarising yourself with, and becoming adept at:
- at least one of the four official programming languages (C/C++, Java and Python);
- how to read from standard input and write to standard output in your language(s) of choice;
- the ICPC question format, examples of which are provided on this page (the Competition intentionally follows the ICPC format);
- as many data structures and algorithms as possible, and knowing how and where to apply them -- this is what the Competition is really all about!
You will also need to learn how to work effectively as a team, so doing practice contests with your team mates, be it at home or even in the CB11.B1 labs or the CB11.05 FLP, is essential to success.
You and your team will be subjected to the following constraints during the Competition:
- You will only have one computer -- one monitor, one keyboard, one mouse -- at your disposal.
- You will only have four hours to attempt the problems.
- You will not have access to the Internet.
- You will have a printer to print your code with, however.
This necessitates coming up with some kind of time and resource management strategy. There are two or three of you in your team. All of you need to be active participants.
It is actually possible to be working on more than one problem at a time! Start by unstapling the problem set booklet. While one team mate is typing a solution to one problem, another could be scribbling a pseudocode algorithm for another problem. If you get stuck on a problem while coding it -- don't waste time! Print out your work in progress, so that a team mate can pore over it in an attempt to debug the code, while working on another problem.
While you are not allowed to use the Internet, you are allowed to bring text books and printouts of resources. You should also assemble a manila folder filled with printouts of useful code samples, algorithms and mathematical theorems. Ideally you will have an understanding of said algorithms and theorems before competing. A sample folder is provided on this page.
Programming Competition Tips
Includes information on how to compile and run programs written in the official Competition languages, as well how to read from standard input.
To cater for a variety of ability levels, the Competition problem set will consist of a mix of easy problems and difficult problems.
These will be set at the level of Project Euler problems.
Write a program that adds all the natural numbers (i.e. positive integers) below one thousand that are multiples of 3 or 5. Possible solutions.
These will be set at the level of ACM ICPC Regional Competition Problems.
A few examples:
Problem 3, 2006 South Pacific Regional Competition - Simple Encryption
Problem A, 2008 South Pacific Regional Competition - Being Late
More ACM problems can be found at:
South Pacific Region Problem Archives
ACM-ICPC World Finals Problems Archives
Test your solutions on the ACM-ICPC Live Archive Online Judge.
Previous Programming Competition Problem Sets
Competitive Programming Websites
Practice by yourself and with your team -- and compete with the rest of the world!
Sample algorithm folder
Used by a team from the University of Western Australia that participated in the 2015 ICPC World Finals. Use it as the basis of your Competition folder, if you like!
Frequently Asked Questions (FAQ)
This year's competition will only accept Java, C/C++ or Python solutions. Yes, it's time to hit the textbooks again if it's been a while. Look on the bright side, if you decide to participate in the ICPC, you've done your basic revision already!
Do we supply input via standard input, files, or arguments on the command line?
All input will be from standard input, and all output will be to standard output. No arguments will be passed to your program at the command line. No files will be opened for reading or writing.
I have a feeling the system may say my solution is incorrect even though I've met the expected output. Why?
The marking system is a machine, not a person, and will treat the extra output of your solution, such as human-friendly prompts, as 'incorrect'; it is whitespace-sensitive and case-sensitive.
How is the 'total elapsed time' calculated in this contest?
When a correct submission is made to the adjudicators, the number of minutes elapsed since the beginning of the contest at the time of the correct submission is recorded.
Do we program on provided computers or use our own?
We'll be using the computer labs in Building 11. The lab computers will be used to keep the competition fair.
Which text editors and IDEs will be available for use in the labs?
gedit, nano, vim, emacs, Eclipse and BlueJ.
Can we use Windows on the lab computers?
No. Linux (Red Hat, to be exact) will be used, which is the default, on the computer labs. If you have not used the lab computers in Building 11 before, it is recommended you do so before the competition. If you choose to ignore this recommendation and choose Windows at login during the competition, you are wasting precious time -- it will not work; Windows will not load. And even if you did, you will need to be mindful of carriage return differences between Windows and Linux systems in your output (i.e. \n instead of \r\n).
Why haven't I registered yet!?
No idea...REGISTER NOW!
In addition to winning prize money in the Competition, teams who have performed well (and are eligible to do so) will be invited to represent UTS in the International Collegiate Programming Contest, or ICPC.
The ICPC is a multi-stage contest. The UTS Programming Competition is the first stage.
The second stage is the Divisional Round, which will take place on the 20th of October at the University of Sydney. Teams from UTS shall compete against other teams from universities in New South Wales, Queensland and the Australian Capital Territory. The top four universities from this region (which could include UTS) will advance to the next stage.
The third stage is the Regional Round, which will take place on the 23rd and 24th of November at the University of New South Wales. A minimum of 12 teams from all over Australia and New Zealand shall compete in this round. The top two universities from this round (which, again, could include UTS!) will advance to the next stage.
The fourth, and final stage is the World Finals, which will take place in 2019 in an as-yet-to-be-announced location. There will be in excess of 130 teams from universities all over the world. To date, no team from UTS has made it to the World Finals, so getting to this stage would be an achievement in and of itself -- it would certainly look good on your resume!