December 1, 2021 TCO21 Development Finals Recap
COVID-19, the entity that kept us from having an in-person TCO last year, didn’t subside enough to allow an onsite TCO this year as well. Just like last year, although the contestants missed out on the chance to travel to great locations in the US, enjoy the generous hospitality offered by Topcoder and meet with other Topcoder members, there was an upside – the contestants got to work on the problems from the comfort of their homes, and avoiding travel and health risks that are sadly a part of our everyday life now.
The contestants had to share their webcam stream and their screens with Topcoder, which were monitored at all times by dedicated stage duty members as well as admins. In addition, members from the TCO21 Dev finals preparation team, such as myself (ketzjs09), billsedison and TonyJ kept a tab on the forums, stage duty channels and occasionally looked into individual contestants’ stream sessions for general monitoring.
The folks covering the live stream also went on the nostalgia ride when they saw soso0574 using Notepad++ as his editor (and that too while writing jQuery code!)
CHALLENGE SCORING
The Development Finals consisted of three challenges of increasing difficulty and point values. Competitors had 4 hours to work on the challenges. All three problems were opened simultaneously, but the contestants should work on the order in the easy, medium, hard level.
The submissions were assigned a live provisional score, which were calculated on the basis of the number of predefined test-cases it passes. This year, the test-cases were basic checks such as the existence of ports in the Docker container etc, particularly for the medium and Hard problem. In addition, there was a time component that decreased a contestant’s potential provisional score as time elapsed.
The provisional score was calculated via this formula:
((Test Case Accuracy * 100) + (Time Remaining / Submission Phase Duration)) * Weight
Each problem will be weighted, so the medium and hard problems are worth more points. The point values were 250, 500, 750 (Easy, Medium, Hard).
For the final scoring, there was an additional manual review using this scorecard – in which the submissions were reviewed manually and a score was assigned to each submission. This manual review score for each contestant was combined with the provisional score to generate the final submission score, which was used to assign the final ranks to the submissions. The formula to calculate the Final score was:
Final Score = Provisional Score * (Manual Review Score/100)
PROBLEM STATEMENTS
The problem statements were prepared by billsedison, and it revolved around the use case of scraping the Wikipedia article of Topcoder Open: https://en.wikipedia.org/wiki/Topcoder_Open, Storing the data into a JSON file, and then using it sort of like a database to make queries to. This scraping and JSON file creation part had to be covered in the Easy Problem.
Based on this prepared JSON file, a TCO quiz game had to be created in the medium challenge, and then in the Hard problem, the same game had to be enhanced to support a multiplayer mode.
The following are the general requirements for each of the three problem statements:
Easy Problem
Excerpt of the Easy problem:
“In this challenge, you are required to write a web crawler to scrape this page and fetch the data in a JSON file, then build some API endpoints to return the fun facts as required.
You need to implement the following fun facts as API endpoints by following the given swagger spec (in YAML, attached in the forum).
- GET /champions-by-country/{country}: Return the TCO champion info by country
- GET /first-champion: Return the first TCO champion of a specific country, track, or combination of the country and track.”
Medium Problem
Excerpt of the Medium problem:
“In this challenge, you are required to build a web app for a trivia quiz game, the quiz topic is about the fun facts of the past TCO. The data should be from a JSON file that is generated by a web crawler that scrapes the https://en.wikipedia.org/wiki/Topcoder_Open, you can also use the same script that you wrote in the easy-level challenge.
The quiz game contains 10 questions, each question contains four options, only one option would be the correct answer, the other options should be the wrong answers.”
Hard Problem
Excerpt of the Hard problem:
“In the medium-level challenge, you implemented the trivia game. In this challenge, you are required to extend it to a multiplayer mode. Things to be implemented:
- Login Screen
- Room Screen
- Quiz Game Screen
- Leaderboard Screen
- User Profile & Logout”
LEADERBOARD
Here’s a snapshot of the final rankings, along with the final scores:
Overall, the TCO21 Development final was intense and in terms of execution, it went through successfully without any major interruptions. As per the final scorecard the top 3 winners ares:
- jiangliwu
- NightWolf
- ChanKamWo
Congratulations to jiangliwu for being our TCO21 Development Champion again this year! Every contestant should be proud to have made it to the finals of the prestigious Topcoder Open, and for putting in a great effort during the qualification stages as well as in the finals, particularly during these difficult times! The team behind the scenes had a great time during the weeks of preparation and setup, and also definitely during the actual competition. Hope the contestants had a good time competing as well. To experience what the finals felt like in real time, watch the recap of the live TCO21 Development Finals commentary and analysis: TCO21 Finals – Day 3 – YouTube
ketzjs09
Guest Blogger