Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.
Web

Competitive Programming Training Tracker for University Clubs and ICPC Coaches

Build a training dashboard for a university competitive programming club: members link their Codeforces handles, and coaches see contest history, rating trends, upsolving backlogs, topic coverage by problem tag and team practice results in one place. It uses the official Codeforces API, turns raw submissions into training signals, and helps a club prepare ICPC teams without spreadsheets.

Difficulty

Intermediate

A small team, or one strong student willing to learn something new.
Effort

1 semester · 2 to 3 students

Deliverables

8 to ship

4 optional extras

Suggested stack

Next.js or ReactNode.js or Python (FastAPI)PostgreSQLCodeforces public APICron job or queue worker for syncingChart library for dashboards
A suggestion, not a requirement. Swap anything for what you already know.

What you should ship

  • Club workspace with coach and member roles, invitations and member profiles linked to Codeforces handles
  • A sync job that pulls each member's submissions and rating history from the Codeforces API, respecting its rate limit, and stores them
  • Upsolving backlog per member: problems attempted in a contest but not yet accepted, and problems from rounds they took part in that sit just above their rating
  • Topic coverage view per member and per team, built from Codeforces problem tags and ratings
  • Practice sets: a coach picks problems by tag and rating range, assigns them to members, and sees completion
  • Team practice contest log with ICPC-style scoring (problems solved, penalty time, rejected runs) and a written review per contest
  • A coach dashboard with rating trends, activity streaks and members who have gone quiet
  • Documentation of the data model, the sync design and how the API rate limit is handled

If you have time left

  • Add another judge only where it offers an official API or export, never by scraping
  • Team selection helper that compares candidate trios by topic coverage and practice results
  • Weekly email digest for each member with their backlog and a suggested practice set
  • Import results of a team practice contest from a Codeforces Gym mashup the club created

The problem: clubs train with spreadsheets

Many universities have a competitive programming club or an ICPC coach who trains students for regional contests. In Pakistan, India and Bangladesh these clubs can be large: dozens of members practising on Codeforces, AtCoder and CSES, and a few teams of three chosen each season. The coach wants to know who is practising, who is stuck, which topics each member is weak in and which trio should form a team. Today that usually means a shared spreadsheet that members forget to update, and screenshots of profiles.

The data already exists. Codeforces publishes a public API that returns a user's submissions (user.status), rating history (user.rating) and the problem set with tags and ratings (problemset.problems). What is missing is a tool that turns that raw data into training signals a coach and a member can act on.

What already exists and the gap

  • Codeforces itself shows each user's profile, rating graph and submissions, and lets clubs create groups and Gym mashups (custom contests from existing problems).
  • CLIST aggregates contests and ratings from many judges into one calendar and unified profiles.
  • Virtual Judge (vjudge) lets you run contests with problems from several judges.
  • CSES for Teachers lets teachers create courses on the CSES judge and track students' progress there.
  • USACO Guide tracks progress through its own modules.

Each covers a slice: one judge, one contest, or one course. None gives a university coach a club-level view of upsolving backlogs, topic coverage across the club, assigned practice and team practice results with ICPC scoring. That combination is the gap, and it is a real one for any coach running a club.

Inspiration

The habits this tool supports come straight from how strong contestants train: take part regularly, upsolve the problem just above your level after every contest, practise weak topics about 100 to 200 rating points above your current rating, and, for ICPC, play full five-hour team contests and review them. The USACO Guide's pages on practising and contest strategy and the ICPC's published scoring rules (20 penalty minutes per rejected run on a solved problem) are good references for the features.

What you build

  • Members: link a Codeforces handle, see their own rating trend, upsolving backlog and topic coverage, and complete practice sets.
  • Coaches: invite members, assign practice sets by tag and rating range, record team practice contests, and see the whole club at a glance.
  • Teams: a page per team of three with combined topic coverage and a log of practice contests with ICPC-style scoring and review notes.

The technically interesting part

  • Syncing politely. The Codeforces API limits how often you may call it. Design a scheduler that syncs members incrementally (only new submissions since the last sync), queues requests, backs off on errors and never hammers the API. Document the design.
  • Turning submissions into signals. A submission list is noisy: many attempts, many verdicts. Derive "solved", "attempted but unsolved", "solved in contest" and "upsolved later" per problem, and compute a backlog from rounds the member took part in.
  • Topic coverage. Problems carry tags and ratings. Build a coverage matrix per member (tags by rating band) and decide how to show it so a coach can read it in seconds.
  • ICPC scoring. Implement team contest scoring exactly as the rules describe, including that compilation errors carry no penalty, and test it.
  • Data model. Members, handles, submissions, problems, tags, practice sets, teams and contests, with indexes for the dashboard queries.

How to evaluate it

  • Correctness: unit tests for backlog derivation and ICPC scoring against hand-computed examples.
  • Sync: time to sync a club of 50 members from scratch and incrementally, and the number of API calls used.
  • Usefulness: run it with a real club for three to four weeks. Survey the coach and members: did they upsolve more, and did the coach change any team or practice decision because of it?
  • Performance: dashboard load time for a club of 100 members with a year of history.

Suggested plan

  • Weeks 1 to 2: interview a coach and a few members, list the questions the dashboard must answer, design the data model.
  • Weeks 3 to 5: accounts, clubs, handle linking and the sync job with rate limiting.
  • Weeks 6 to 8: backlog, topic coverage and member dashboards.
  • Weeks 9 to 11: practice sets, team pages and ICPC contest scoring.
  • Weeks 12 to 15: a pilot with a real club, fixes, evaluation and report.

Path to a product

Every university with an ICPC coach has this problem, and so do schools training for informatics olympiads and coaching centres that teach algorithms. A hosted version with a free tier for small clubs and a paid tier for institutions with several coaches is a realistic model, as is offering it free to build a community and a portfolio. Integrations must stay within each platform's API terms. A pilot with a real club and measured results is also a strong portfolio piece.

Scope warning

Do not build an online judge, run untrusted code or scrape any site. Use only official APIs and exports. One judge (Codeforces) done well is the core scope; other platforms are stretch goals only where they offer an official API.

Discuss it and get help

Learn what you need on Sefism

Ideas and guidance, not finished projects

These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.

Not sure this one fits you?

I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.

Discuss this idea
Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.