Competitive/Collaborative Programming Class

ICPC Computer Programming Contest Prep

Problem Solving in Computer Science

Spring 2017 -- CSC 2700 Section 01 (Lockett Hall 111 [horses.riches.describe], 6:30 PM - 8:20 PM)

UVA, uHunt and uDebug

UVA, uHunt and uDebug are great resources that you will find useful. Here is a little more information about each:


You will make use of the Universidad de Vallodolid (UVA) archive of contest problems and its automated judging system. While UVA is the name of a wonderful university, we will normally equate the name "UVA" with the online resources they provide for contest preparation.

In this context, UVA refers to the UVA Online Judge. Now is a great time to say thank you to UVA for hosting and maintaining this wonderful resource.

UVA has an archive of thousands of problems from previous contests with judge data. After registering for an account via their online judge, you can submit source code in C, C++, Java and Pascal to attempt to solve any of these problems.

UVA will keep track of all of your submissions. Each time you visit a problem listing page from the archive it will highlight the any problems you have solved as green and any tried but unsolved in purple. Each problem will provide bar graphs to show number of users that have submitted this problem (and how many solved it) along with how many total submissions and the percentage of correct. When you first start, you might want to make sure you pick problems that show high levels of success.

UVA also maintains a worldwide ranking for you (over 12 million registered users at UVA). As you solve problems you can watch yourself climb the world ranking. This is great way to watch your progress over your college career.

UVA also tracks runtime of submissions and maintains an ordered list. When you solve a problem, you can see how your runtime compares to other folks. You can use this information to determine how efficient your solution is. If you submit additional solutions that are faster, UVA moves you up the list.

UVA also provides a forum where problems, approaches and sample data can be discussed. This is a great resource if you are stumped on a problem.


uHunt is provided by Felix Halim in conjunction with UVA. Felix has been very active in competitive/collaborative learning. He has published 3 editions of his book Competitive Programming.

uHunt provides a dashboard into UVA. This dashboard shows the following items:

You will want to take advantage of the next to solve lists to help you choose problems that are challenging but also within your reach. If you choose to purchase his book, the charts showing your progress through his recommended problems are very useful.


uDebug is a relatively new resource. uDebug provides a web interface to allow you to try sample data against many of the UVA problems. You search for the problem you are working on. Once there, paste your sample data into the input box and click Go!. After a delay, the output window will display the "correct" output for the provided input for that problem. Behind the scenes a solution that was judged correct is used to process your input.

Having the ability to test an input file ans make sure that the answer you are getting matches a verified answer is very useful.

For select problems, uDebug provides "critical data". When you click this button, it puts a saved input file into the input window. This is data that the uDebug folks believe will help you ensure that you are covering the important cases. You can then click Go! and see the correct answer for this input.