TCO19 Beijing Regional Event Development challenge - SRM Data Analysis Hackathon

Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

  • Target environment: No limitation

  • Basic Requirements: Create 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, which is split into 2 CSV files Problem_Description_Temp.csv, and ProblemArchive.csv. All the required fields are included.

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 a 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


  • 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 on 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 sentence 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

  • And anything else you think it’s good


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 and workable?

(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 deploying 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 Open 2019

Review style

Final Review

Community Review Board


User Sign-Off

ID: 30093565