Hosting a Student Programming Competition
This use case enables universities to host programming competitions using a scalable and automated platform. It provides students with a hands-on opportunity to improve their coding skills while streamlining the evaluation process for instructors.
Overview
Value: This use case enables universities to host programming competitions using a scalable and automated platform. It provides students with a hands-on opportunity to improve their coding skills while streamlining the evaluation process for instructors.
Problem: Manually organizing and evaluating a programming competition is labor-intensive and error-prone. It requires significant effort to prepare tasks, manage submissions, and provide timely feedback to a large number of participants.
Solution: Leverage a central GitLab instance with CI/CD pipelines to automate the entire competition workflow. A dedicated tool, the 'Contest-Framework', is used to manage tasks, test submissions automatically, and calculate a live leaderboard, providing a seamless experience for both participants and organizers.
Who Benefits
Primary
-
Students
- Practice and improve programming skills in a competitive environment.
- Receive instant feedback on their solutions.
- Engage in a fun and motivating learning experience.
Secondary
-
Lecturers / Organizers
- Automated evaluation and scoring, saving significant time.
- Scalable platform to handle a large number of participants.
- Easy management of competition tasks and submissions.
When to Use
- For hosting programming competitions as part of a course or as an extracurricular event.
- When you need to automate the testing and evaluation of code submissions from many participants.
When Not to Use
- For collaborative projects or assignments that do not fit a competitive, time-based format.
Process
- 1. Organizers prepare the competition tasks and upload them to a central GitLab repository.
- 2. The Contest-Framework tool is set up to manage the competition, including the timeline and leaderboard.
- 3. Students register and receive access to a personal GitLab repository for submitting their solutions.
- 4. When a student pushes code, a CI/CD pipeline automatically compiles and tests it against predefined test cases.
- 5. The pipeline reports the results back to the student and updates the central leaderboard.
- 6. After the competition, results are finalized and can be used for grading or awarding prizes.
Requirements
People
- Organizers (lecturers, teaching assistants) to prepare tasks and manage the event.
- Participants (students) with basic knowledge of Git.
Data Inputs
- Competition tasks, including problem descriptions and test cases.
- Student code submissions.
Tools & Systems
- A GitLab instance with CI/CD capabilities.
- The 'Contest-Framework' tool for competition management.
- A server to host the leaderboard.
Policies & Compliance
- Participants need individual accounts on the GitLab instance.
- Clear rules and guidelines for the competition must be provided to all participants.
Risks & Mitigations
-
The automated testing pipeline (CI/CD) could fail or be delayed under heavy load.
- Use scalable GitLab Runners with sufficient capacity.
- Conduct a trial run before the main event to identify and resolve potential bottlenecks.
-
Students may have difficulty with Git, leading to submission problems.
- Provide a brief tutorial or quick-start guide on the necessary Git commands.
- Offer support through a dedicated chat channel during the competition.
Getting Started
To host your own programming competition, you will need access to a GitLab instance and the 'Contest-Framework' tool. Participants should have a basic understanding of Git.
- Set up the Contest-Framework and prepare your competition tasks in a GitLab repository.
- Onboard participants and ensure they have access to their individual repositories.
- Launch the competition and monitor the automated evaluation and leaderboard.
FAQ
What programming languages are supported?
The supported languages depend on the configuration of the CI/CD pipeline. Typically, common languages like C++, Java, and Python are supported.
How is cheating prevented?
While the platform can't prevent all forms of cheating, running automated plagiarism checks on submissions after the competition is a common practice. The individual, timed nature of the event also discourages collaboration.
Glossary
- Contest-Framework
- A specialized tool used to organize and manage the programming competition, including task management and leaderboard generation.
- CI/CD Pipeline
- An automated process that compiles, tests, and evaluates student code submissions every time they are pushed to the repository.