UGrade: Autograder for Competitive Programming Using Contestant PC as Worker
Jauhar Arifin, Riza Satria Perdana · 2019
Competitive programming is a computer science competition where the contestants compete to solve computer science problems by writing a program which satisfies the problem constraints. The autograder is used to grade contestant solutions automatically in real-time. Usually, autograder is deployed in many computers to increase grading performance. In this research, contestants' computers are used as a worker to run autograder. By using contestants' computers as a worker, the number of workers will proportional to the number of contestants' submissions, thus increasing grading performance. Every contestants' computers have different specification and can affect grading fairness. To keep the fairness of the grading process, contestant's solution and jury's solution are executed in contestant's computer then compared to check whether contestant's solution satisfies the problem constraints. In order to evaluate the correctness of contestant's solution, the autograder uses input test-case to execute the contestant's solution and compares the output with the output test-case. Usually, the test-cases are some big text files generated by the problem setters. In this research, the test-case files are generated in the contestant computer using test-case generator program created by problem setter. In order to improve the security aspect, every contestant submission is graded multiple times. This research was tested by simulating grading process in contestants' computers. The testing result indicates that using contestants' computers as a worker gives performance improvement to the grading process. Further research is needed to improve the security aspect of this work. However, this research can be used to organize some competitive programming competition such as ACM-ICPC.