RDMs are fast, timed software development competitions focused on ranking and scoring developers on code accuracy, speed, particular technologies, platforms, and development languages. The goal is clearly defined problems to be solved and requirements to be achieved.
Sometimes RDMs will also be focussed on a particular technology, platform, or language. The competition technology stack and other details will be announced at least a week before the competition, allowing members to sharpen their skills and prepare.
Each challenge will have three (3) problems: easy, medium, and hard. Points will be allotted to each problem depending on difficulty.
Scores for each problem will be awarded based on the test cases a submission passes and how early a member makes a submission on that particular problem as compared with other competitors
The following are the exact steps you need to follow to compete in an RDM contest:
Register for the Host Challenge for the RDM - it will include an overview, challenge information and links to the three problems. The results of the whole round will be shown on the Host Challenge page.
Register for the Easy/Medium/Hard Challenge, which will contain the specific Problem Statement for that particular problem. A sample submission is included for each one for you to get started.
Download the sample submission for the problem. It will be a folder containing the necessary Dockerfile and a starter code for the problem.
Make your changes in the /code -folder of the sample submission to match with the exact requirements of the Problem Statement
Compress the whole /code -folder including the Dockerfile and your solution code in it into a single submission.zip -folder.
Submit the .zip-file on the Challenge page.
You will receive feedback from the Automated Tester in Submission Review, and can make changes to your solution accordingly, if needed.
Repeat from step 2. for the next problem :)
For extra information on scoring and challenge structure, scroll down below!
Regular Topcoder sponsored Rapid Development Matches will be held approximately monthly. The day and time of the competition will vary from competition to competition. The schedule will be announced in the Topcoder Newsletter and Forums every month. Please keep in mind that all times on Topcoder’s website are communicated in either Eastern Standard Time (EST / UTC -5) or Eastern Daylight Time (EDT / UTC-4) depending on the time of the year.
The Topcoder website will specify the beginning time in your time zone. In addition, you may elect to receive a reminder email preceding each Rapid Development Match from your profile settings.
Topcoder is conscious of members’ time zones and will be launching Rapid Development Matches at various time zones to allow members located all around the world to compete in a comfortable time zone.
Rapid Development Matches will be rated competitions and will affect your Development Track Ratings at Topcoder. The ratings calculation is explained here.
The submissions in an RDM are reviewed by a automated review scorer as soon as you submit your submission. The point value of a submission is going to be a product of your submissions Test Case Accuracy and a Decaying Time Component.
The Test Case Accuracy is nothing but the ratio of Test Cases your submission passes to the Total Test Cases used for that problem.
The Decaying Time Component is dependent upon the problem’s level of difficulty and the time it took to submit a submission. The Topcoder server will calculate the time spent on a problem by counting the time between the match’s start time and when a submission is submitted on that particular problem. Keep in mind that these times are captured when a problem request or problem submission actually gets to our server, so network latency may play a minor role in the competition process.
Total points awarded =
TotalPassedTestCases is the total number of test cases your submission successfully passes
TotalTestCases is the total number of test cases set for the problem
PassedTime is the time elapsed between match start time and submission time in minutes.
TotalTime is the total time allocated for coding all problems in minutes, and
MaxPoints is the maximum points available for that problem.
For example:
A coder spends 22.7 minutes working on the medium problem before submitting and his submission passes 6/7 test cases defined in the problem statement. Given the fact that the total match is one hour, and the maximum point value for the medium problem is 500, the coder’s awarded points for the submission will be:
(6/7)(500(.3 + .7*602/(10*22.72+60^2)))
or
251.95 points (point calculations are rounded to two decimal places)
Each problem will have a set of requirements to achieve and instructions around what is expected from you. Sometimes the technology and/or language and/or platform to use will also be specified. The requirements will be simple and straightforward to understand.
Also all for all the problems you would be provided with a sample submission to start with.
If your submission achieves some requirements you are able to get the score you received based on the scoring formula mentioned above and in detail here.
After the submission phase, a final review would be done to check any cases of Collaborating/Cheating and incase found your submission will be rejected and your score would be updated to zero for that particular problem.
Minimal code quality is expected for the reviewer to review the submission and go through your code.
Obvious and deliberate code obfuscation will be rejected.
Collaborating/Cheating in any way with anyone else (member or not) during a rated event is considered cheating.
An excessive amount of unused content should be avoided.
Code readability is expected with necessary comments, indentation and somewhat refactored code (as much as possible).
There are a number of differences - the biggest being that participating in a Code Challenge you are tackling a particular client requirement or participating in a fun learning challenge with several requirements to achieve and a review scorecard with details on how the judging criteria would be. The reviews and scores are based on the review being performed after the submission phase is over.
In Rapid Development Matches your submissions will be judged by an automated scorer and award you a score based on how many test cases your submission passes and how quickly you make a submission on that particular problem.
For a match as a whole you will be working on three problems with each of them being weighted according to it’s difficulty. Also they might be related to each other in terms of problem story but different in terms of the requirement you have to achieve.
For each problem you would receive a score instantly and can also resubmit to improve your score. Time also plays an imporant factor in the scoring. Each problem will have a point value and points will be awarded based on how fast you make a submission as compared to other competitors and with expected minimal code quality. See scoring section for more details.
In order to participate in a match, you must register for that match from within on the challenge detail page. The registration will open seven days prior to the match start time. You will click “Register” and be asked to agree to the terms and rules of the match.
Once you select “I Agree” at the bottom, you will be registered for the match. It is a good idea to confirm your match registration by selecting the “Registrants Tab” and verifying that your handle is in the list.
During the start of the registration phase you will also be informed about the technology platform and any specific language that will be used in the problems to allow you ro refresh your skills on the same.
The submission phase is the period during which each competitor attempts to create solutions to the three problem statements. In most cases, the coding phase will last 6-8 hours, which is the total time that you have to submit solutions to any or all of the problems.
You do not have to make a submission on the host challenge, but submit on each problem individually.
When the coding phase begins, each competitor will have the opportunity to view the problem statements. Each problem can be opened by selecting the problem challenge from the challenge listing page or the RDM page.
The higher the point value assigned, the more difficult the problem will be and you may open the problems in any order.
The final-testing phase is non-interactive. During the final testing, every submission will be reviewed by the reviewers to check for Obvious and deliberate Code Obfuscation and Collaborating/Cheating. For this review phase a certain minimal code readability is expected with necessary comments, indentation and somewhat refactored code (as much as possible).
Details Code Obfuscation and Collaborating/Cheating are availble below.
You must follow this submission folder structure so our automated test process can process your scoring:
Create a folder with “code” as the folder name then zip.
Inside the “code” folder, there needs to be a file named Dockerfile. This is the docker file used to build the user’s submission. Refer to the provided Docker file in Sample Submission for each level.
Zip that “code” folder and submit to the challenge.
Submission folder structure example:
Each time you submit, the platform will leverage Docker to run your code. The execution logs will be saved as “Artifacts” that can be downloaded from the Submission Review App: https://submission-review.topcoder.com/.
Using the Submission Review App (https://submission-review.topcoder.com/), navigate to the specific challenge, then to your submission, and then to the Artifacts for your submission. The zip file you download will contain information about your submission including a result.json file with the test results…
Make sure you can run your submission with Docker from a clean slate.
Your Docker needs to expose port: 8080
It needs to build on a completely clean machine when the platform runs your submission. If you are using something locally to build and run your submission, make sure it’s included as part of your Docker configuration as well.
Example Dockerfile for Node app:
FROM node:12
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["node", "index.js"]
Topcoder has a policy against any intentional obfuscation of code submissions. Any code submission that contains obvious and deliberate code obfuscation will be rejected and any points received for that submission will not count towards your final score. For the purpose of this policy Topcoder defines obfuscation as “An obvious and deliberate attempt to disguise the true behavior or nature of the code.” In ALL cases, Topcoder will make the final decision as to whether or not a code submission has been intentionally obfuscated. In some cases, Topcoder may decide to “nullify” any unsuccessful challenges that have been applied against a code submission that is determined by Topcoder to be obfuscated. We encourage any Topcoder competitor to notify us in the event that you feel that a code submission during a rated event violates this policy.
Topcoder has a policy against including extra content in a submission that is not part of the solution to the problem. This includes, but is not limited to the following:
automatically generated code
testing code
unused personal library code
comments not directly related to the solution
The following things are excluded from the rule (they are not considered unused):
Library import statements (#include, imports, using, Imports)
Comments directly related to the solution (explaining algorithms, etc.)
In all cases, Topcoder will make the final decision as to whether or not a code submission has an excessive amount of unused content. If Topcoder determines that a submission violates this policy, the competitor will receive no score for the problem for that submission. No challenges will be overturned or nullified as a result of a violation in this policy. We encourage any Topcoder competitor to notify us in the event that you feel that a code submission during a rated event violates this policy.
Cheating is taken seriously at Topcoder. There are a number of ways in which you could cheat
and have your account deactivated by Topcoder.
Collaborating in any way with anyone else (member or not) during a rated event is considered cheating. This includes discussing problem statements or solutions between the time that the coding phase begins and the time that the challenge phase ends.
Using multiple accounts to participate in a rated event is considered cheating.
Registering a new account for the purpose of resetting your rating is considered cheating.
Purposefully performing poorly during a rated event with the intention of artificially lowering your rating is considered very poor sportsmanship - and may result in account deactivation.
Obviously, Topcoder cannot identify all malicious behavior (we try hard, though), so we do rely on each member’s sportsmanship and integrity.
Many Topcoder participants find it useful to create code libraries and starter packs for situations that commonly arise. Doing such is perfectly legal (and you know how we feel about cheating).
Pasting large libraries of code into each submission with the intent of only using a small percentage (if any) is against the Excessive / Extra Code Rule, however.
During a competition, Topcoder may notify participants of important information regarding the competition via the use of a forum thread. By default you will receive forum messages by email. These forum messages may contain important information about changes or additions to the problem statements or any changes in accessing the data being used in the match. Be sure to read messages that are sent during a match - chances are it’s important! Also, remember to check for new messages every time you log into the competition during a match - you may have missed a message that was sent while you were offline.
Total scores will be summed and available on the main competition challenge.
During a competition, members may share their questions in the forums. You may use the Contact Managers feature present in the Online Review in the case that it may notify participants of important information regarding the competition.
The submissions in an RDM are reviewed by a automated review scorer as soon as you submit your submission. The point value of a submission is going to be a product of your submissions Test Case Accuracy and a Decaying Time Component.
The Test Case Accuracy is nothing but the ratio of Test Cases your submission passes to the Total Test Cases used for that problem.
The Decaying Time Component is dependent upon the problem’s level of difficulty and the time it took to submit a submission. The Topcoder server will calculate the time spent on a problem by counting the time between the match’s start time and when a submission is submitted on that particular problem. Keep in mind that these times are captured when a problem request or problem submission actually gets to our server, so network latency may play a minor role in the competition process.
Total points awarded =
TotalPassedTestCases is the total number of test cases your submission successfully passes
TotalTestCases is the total number of test cases set for the problem
PassedTime is the time elapsed between match start time and submission time in minutes.
TotalTime is the total time allocated for coding all problems in minutes, and
MaxPoints is the maximum points available for that problem.
For example:
A coder spends 22.7 minutes working on the medium problem before submitting and his submission passes 6/7 test cases defined in the problem statement. Given the fact that the total match is one hour, and the maximum point value for the medium problem is 500, the coder’s awarded points for the submission will be:
(6/7)(500(.3 + .7*602/(10*22.72+60^2)))
or
251.95 points (point calculations are rounded to two decimal places)
At the conclusion of the final-testing phase, Topcoder will recalculate the Topcoder Development ratings of all match participations based on our rating formula. If you did not submit to any of the problems during the submission phase you will not have your rating adjusted.
Once the rating adjustments are completed, it will be announced in the forums
Your rating change is essentially a measure of how well you performed compared to others - given how well you were expected to perform based on your previous rating. Your rating increases when your performance exceeds expectations!
The rating updates are subject to change based on any appeals that Topcoder may receive the day following a match. If any scores are determined to be incorrect (within the appeals period), Topcoder will re-adjust the ratings based on the correct scores.
In the event that you do not agree with some aspect of the results of a match please use the appeals phase to appeal against the review. In case of issues with appeals response, please send an email to support@topcoder.com explaining in detail what it is that you feel is inaccurate. We will investigate each appeal and determine what, if anything, to do about it.
Following each match, an overview and analysis of each problem will be posted on Topcoder Thrive and submissions will be made available to all the competitors.