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.

Idea
Plan
Prototype
Pilot
Live

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. 1. Organizers prepare the competition tasks and upload them to a central GitLab repository.
  2. 2. The Contest-Framework tool is set up to manage the competition, including the timeline and leaderboard.
  3. 3. Students register and receive access to a personal GitLab repository for submitting their solutions.
  4. 4. When a student pushes code, a CI/CD pipeline automatically compiles and tests it against predefined test cases.
  5. 5. The pipeline reports the results back to the student and updates the central leaderboard.
  6. 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.

  1. Set up the Contest-Framework and prepare your competition tasks in a GitLab repository.
  2. Onboard participants and ensure they have access to their individual repositories.
  3. 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.