GithubHelp home page GithubHelp logo

nmticpc's Introduction

NMTICPC

The retrospectively stupidly named competition framework

NMTICPC is a Django-based web application for running manually-judged computer programming competitions in the style of the ACM International Collegiate Programming Competition.

It has several features:

  1. Live scoreboard with live elapsed/remaining time display
  2. Solution submission interface that shows submission history and a problem status overview
  3. Django admin configured for easy use by judges

And several limitations:

  1. Problems are expected to be distributed on paper or by other means, right now NMTICPC isn't set up to host the actual problem descriptions
  2. The scoreboard doesn't do any kind of tie resolution, this will need to be done by hand if necessary
  3. Judges just use the django admin interface, which is not the most polished way to do things
  4. The whole thing was put together pretty quickly, so YMMV

NMTICPC was originally developed by Jesse B. Crawford ([email protected]) for the New Mexico Tech Programming Club's ICPC practice events. It was intended for one-time use only, but then got posted on github and reused.

Setup

  • Obviously, you'll need an environment to run Django. NMTICPC was developed for Django 1.4 on Ubuntu 12.04 served via Apache. It should work on other environments as well.
  • In nmticpc/, edit settings.py for your database environment (you made a database already, right?) and run ./manage.py syncdb. When asked to create a superuser account, do so.
  • Run ./manage.py check_permissions to add proper Userena permissions to the superuser account.
  • Make a directory <reporoot>/static and run ./manage.py collectstatic to accumulate static files there
  • Make a directory <reporoot>/media and ensure that the webserver can write it
  • Apache (or whatever server you use) should be configured to serve /static/ from <reporoot>/static and /media/ from <reporoot>/media (if you change the relative path to these directories, change it in settings.py)
  • Start up your webserver, go to /admin, and log in. Create a problem object for each problem.
  • Set the competition start and end times appropriately at the bottom of settings.py.

Usage

  • Have teams or competitors register accounts before the event.
  • Then, teams can submit solutions fairly intuitively (via the Problems tab and then clicking on individual problems).
  • Judges log in to the admin interface and select Submissions. Click on each submission and click on the file name to download it, then check "Valid" if it's correct and "Reviewed" either way (so that you know it's been scored already). Add a comment if you'd like and then save your changes to the object.
  • And that's basically it.

nmticpc's People

Stargazers

Chris K avatar

Watchers

Russell White avatar James Cloos avatar J. B. Crawford avatar

nmticpc's Issues

more scoring options

First submission bonus in a better way, for example. Also only solution bonus.

Problem values aren't used

It always uses the number of problems solved as the score, it does not account for the point value of problems. This should be fixed.

Javascript timers herp the derp

Javascript timers will loop over to 24:00:00 when they hit 00:00:00. This has the amusing effect that between the timers hitting zero and the page reloading (so that you get a version with the timers disabled), the timers will read like 23:59:30 remaining.

First administrator account has no profile

So when they log in via the main Login link, they get an internal server error when they try to view their profile. Maybe just change it so that it handles this error instead of 500ing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.