TCO20 North America Regional Event - Development Challenge

Key Information

The challenge is finished.
Show Deadlines

Challenge Overview

Challenge Objectives

  • Target environment: No limitation

  • Basic Requirements: Create an interesting and useful mobile/web app, API, or any other thing based on the given data.

Project Background

Topcoder has amassed a great wealth of SRM problems since it was first founded in 2001. They are great training, learning, and educational content. In this challenge, we are seeking your help to analyze the given data and create mobile apps, web apps, APIs, etc to showcase the interesting info.

Technology Stack

  • No limitation 

Data description

We will provide 4 CSV files that contain

  • Problem archives

  • SRM results

  • Member profiles

The problem archive contains 4693 problems, 2 csv file Problem_Description_Temp.csv and ProblemArchive.csv contain all the required fields. 

Here are the descriptions of each file and fields.

(1) Problem_Description_Temp.csv 

Please note the data in Problem_Description_Temp.csv are not clean, the problem_text field might contain newline, comma, double quotes characters that might clutter the csv format. You might need to clean up the ProblemArchive.csv to correct the CSV format 

The fields are

  • problem_id: The problem ID. - Unique ID of the Problem

  • method_name: The required method name. - Method name 

  • class_name: The required class name. - Generally the problem name, technically the class name which member has to implement for writing the solution.

  • problem_text: The problem text or the problem description.

(2) ProblemArchive.csv

The fields are

  • problem_name: The name of the problem. - This is similar to the class name is the Problem_Description_Temp.csv

  • contest_name: The name of the contest can be SRM, or TCO18, TCO17 or TCCC(collegiate contest) 

  • contest_date: The date of the contest

  • problem_id: The problem ID - Unique ID of the Problem

There are three levels of problems in each division. (1, 2 and 3. 1 stands for easy, 2 stands for medium, and 3 stands for hard)

  • div1_level: The level of Division 1.

  • div2_level: The level of Division 2

  • div1_success: The success rate of the Div I problem

  • div2_success: The success rate of the Div II problem

  • round_id:  The round id. 

  • Categories: Problem category, can be:

    • Advanced Math

    • Brute Force

    • Dynamic Programming

    • Encryption/Compression

    • Geometry

    • Graph Theory

    • Greedy

    • Math

    • Recursion

    • Search

    • Simple Math

    • Simple Search, Iteration

    • Simulation

    • Sorting

    • String Manipulation

    • String Parsing

  • writer_handle: Username/handle of the writer

  • writer_id: user id of the writer

(3) Room_Result.csv

The fields are

  • round_id: Round ID of the Match
  • room_id: Room ID of the room in which the member was assigned

    • coder_id: This is the same as USER ID

    • point_total: Total Points accumulated from the match

    • room_seed: Seed in the room, before the competition

  • paid: This is related to the SRMs before 2005 when members were paid for their achievement

  • old_rating: Rating before the match

  • new_rating: Rating after the match

  • point_total: Total Points accumulated from the match

  • room_placed: Placement in the room after the match

  • attended: This is related to tournament matches, not being used currently

  • advanced: This is related to tournament matches, not being used currently

  • overall_rank: Rank achieved in the contest

  • division_seed: Seed in the division - There are two divisions Div I and Div II

  • division_placed: Placement in the division

  • round_payment_id:  This can be ignored as it is not used anymore

  • rated_flag:  If the match will be rated or not

  • region_placed: This can be ignored as it is not used anymore

  • Team_points: This can be ignored as it is not used anymore

The two fields below refer to the volatility before and after the match  https://www.topcoder.com/community/competitive-programming/how-to-compete/ratings


  • new_vol

  • Old_vol

(4) member_profile member_stats_history.csv 

The fields are

  • Member Stats History Challenge Name: Contest Name for example SRM 760
  • Member Stats History Challenge ID: Round ID for the Match

    • Member Stats History Percentile: Members' Percentile in that match.  Percentile is calculated by Placement/Total Number of Competitors

    • Member Stats History Rating: Rating achieved after this round

    • Member Stats History Sub Track: This will always be SRM in this case

  • Member Stats History User ID: The user ID of the member

  • Member Profile Basic Handle: Username/Handle

  • Member Profile Basic Home Country Code: (Self-explanatory) The basic Country Code in the home page

  • Member Profile Basic Competition Country Code: (Self-explanatory) The basic Country Code in the competition page.


We are seeking your help to dig interesting info from the given data, including but not limited to

  • Problem archive filters, like to

    • Filter problems by writers.

    • Search problem by some keywords or sentences in the problem description.

    • Filter problems by categories

    • Filter problems on difficulties

    • Filter problems on the number of submissions made to it

    • Filter problem on which user who wrote the problems(like I want to see problems written by espr1t)

  • How problem trends and maybe trends of search data

  • Display the most viewed problem or difficulty wise problem distribution

  • Success rate wise problem distribution

  • Which problems are resolved 

  • Create interesting leaderboards

    • By country

    • By members

    • etc...

  • Create interesting dashboards, an example https://competitiveprogramming.info/topcoder/handle/tourist

  • And anything else you think it’s good

  • Create Comparison - Head to Head 

You can build

  • Web apps

  • Mobile apps

  • Apps on Cloud (Like ElasticSearch + Kibana)

  • APIs

  • etc...

Final Review & Scoring Guidelines

Your submission will be reviewed subjectively, the review scoring guidelines are

(1) Completeness of your submission (50%)

  • Is your submission runnable?

  • Is your submission ex 

(2) Showcase (30%)

  • Is the overall user experience of your submission good?

  • Does your submission showcase any interesting info from the given data?

(3) Innovation (20%)

  • How much benefit is your app?

  • Is it interesting what your submission demonstrated?

  • Are your submission and idea innovative overall?

The review will be performed subjectively by the copilot and Topcoder admin, no appeal and appeal response phase.


Final Submission Guidelines

Please zip all the following content in a zip archive.

  1. The source code of your submission
  2. A thorough deployment guide of your submission, please note we only have 1 hour to review, so if we can’t merely follow your deployment guide to deploy your submission, your submission will be disqualified.
  3. A simple README of your submission, to give an overview of your submission, including what kind of app you made, what info does it show?
  4. Some screencasts or a demo video to showcase your submission (Not mandatory but might be a plus, because it’s helpful for the reviewer to review)


Topcoder will compensate members in accordance with our standard payment policies, unless otherwise specified in this challenge. For information on payment policies, setting up your profile to receive payments, and general payment questions, please refer to ‌Payment Policies and Instructions.


2021 Topcoder(R) Open


Final Review:

Community Review Board


User Sign-Off

ID: 30142620