Skip to content
A modern open-source online judge and contest platform system.
Python HTML CSS JavaScript
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Properly handle traditional Chinese translations (#1184) Nov 13, 2019
django_ace Moves constants to 'settings.py'; #993 Oct 20, 2019
dmoj Properly handle traditional Chinese translations (#1184) Nov 13, 2019
event_socket_server Enforce import order Sep 29, 2019
judge Stop escaping contest name in private contest error page twice Nov 19, 2019
locale Properly handle traditional Chinese translations (#1184) Nov 13, 2019
resources Make "Login" and "Register" links more prominent; #639 Oct 27, 2019
templates Implement ability to disqualify contest participations; #313 (#1180) Nov 19, 2019
websocket Address sources of update leaks in websocket event daemon Dec 13, 2018
.browserslistrc Use Autoprefixer for CSS postprocessing Sep 24, 2019
.flake8 Proscribe poor logging practices Sep 29, 2019
.gitignore Add Visual Studio Code folder to gitignore (#742) Oct 12, 2018
.gitmodules Adding assets repository. #147 Apr 14, 2015
502.html Don Mills Online Judge -> DMOJ (#517) Jan 7, 2017
LICENSE
README.md Mention i18n in README.md Nov 6, 2019
django_2_2_pymysql_patch.py Patch Django 2.2 for PyMySQL support; #1112 Nov 3, 2019
dmoj_celery.py Patch Django before Celery loads; #1112 Nov 3, 2019
dmoj_install_pymysql.py Make PyMySQL look like mysqlclient 1.3.13; #1112 Nov 3, 2019
logo.png Transparent logo.png Jun 14, 2015
make_style.sh Node SASS doesn't have -f like Ruby SASS Sep 24, 2019
manage.py Patch Django 2.2 for PyMySQL support; #1112 Nov 3, 2019
manifest.json Mobile friendly - icon upgrades and theme-colour (#411) May 15, 2016
requirements.txt Use our own version of ansi2html Nov 5, 2019
robots.txt Prevent search engines from crawlling tickets Feb 19, 2017

README.md

DMOJ: Modern Online Judge Build Status Slack

A modern open-source online judge and contest platform system. It has been used to host hundreds of competitions, including several national olympiads.

See it live at dmoj.ca!

Features

  • Support for over 60 language runtimes
  • Highly robust judging system:
    • Supports interactive and signature-graded tasks
    • Supports runtime data generators and custom output validators
    • Specifying per-language resource limits
    • Capable of scaling to hundreds of judging servers
  • Extremely configurable contest system:
    • Supports IOI/AtCoder/ECOO formats out-of-the box
    • System testing supported
    • Hidden scoreboards and virtual participation
    • Topcoder-style rating
    • Plagiarism detection via Stanford MOSS
    • Restricting contest access to particular organizations or users
  • Rich problem statements, with support for LaTeX math and diagrams
    • Automatic PDF generation for easy distribution
    • Built-in support for editorials
  • Live updates for submissions
  • Internationalized site interface
  • Home page blog and activity stream
  • Fine-grained permission control for staff
  • OAuth login with Google, Facebook, and Github
  • Two-factor authentication support

Installation

Check out the install documentation at docs.dmoj.ca. Feel free to reach out to us on Slack if you have any questions.

Screenshots

Sleek problem statements

Problems are written in Markdown, with LaTeX-enabled math and figures, as well as syntax highlighting. Problem statements can be saved to PDF for ease of distribution to contestants.

Submit in over 60 languages

Contestants may submit in over 60 programming languages with syntax highlighting. Problem authors can restrict problems to specific languages, and set language-specific resource limits.

Live submission status

Submission pages feature live updates, and submissions may be aborted by both submission authors and administrators. Compilation errors and warnings for a number of languages feature color highlighting.

Global, per-problem, and per-contest submission lists are live-updating, and can be filtered by status and language.

Extensible contest system

Contests feature an optional rating system, and can be configured to run in any timeframe. Users are also able to participate virtually after the contest ends. IOI, AtCoder, and ECOO contest formats are supported out-of-the-box, and new formats can be added with custom code.

Contests may be limited to particular organizations, or require access codes to join. Hidden scoreboards are supported. The contest system integrates with Stanford MOSS to provide plagiarism checking. Editorial support is built-in, and editorials are automatically published once a contest ends.

Home page blog and activity stream

Announcements from administrators, ongoing contests, recent comments and new problems are easily accessible from the home page.

Internationalized interface

Use the site in whatever language you're most comfortable in — currently fully supporting English, Simplified Chinese, and Romanian. Problem authors can provide statements in multiple languages, and DMOJ will display the most relevant one to a reader.

Highly featured administration interface

The DMOJ admin interface is highly versatile, and can be efficiently used for anything from managing users to authoring problem statements.

Supported Languages

Check out DMOJ/judge for more judging backend details.

Supported languages include:

  • C++ 11/14/17 (GCC and Clang)
  • C 99/11
  • Java 8/9/10/11
  • Python 2/3
  • PyPy 2/3
  • Pascal
  • Perl
  • Mono C#/F#/VB

The judge can also grade in the languages listed below. These languages are less tested and more likely to be buggy.

  • Ada
  • AWK
  • COBOL
  • D
  • Dart
  • Fortran
  • Forth
  • Go
  • Groovy
  • GAS x86/x64/ARM
  • Haskell
  • INTERCAL
  • Kotlin
  • Lua
  • NASM x86/x64
  • Objective-C
  • OCaml
  • PHP
  • Pike
  • Prolog
  • Racket
  • Ruby
  • Rust
  • Scala
  • Chicken Scheme
  • sed
  • Steel Bank Common Lisp
  • Swift
  • Tcl
  • Turing
  • V8 JavaScript
  • Brain****
You can’t perform that action at this time.