• Stars
    star
    760
  • Rank 59,770 (Top 2 %)
  • Language
    Python
  • License
    GNU Affero Genera...
  • Created over 10 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A modern open-source online judge and contest platform system.


DMOJ: Modern Online Judge

Build Status License

A modern open-source online judge and contest platform system. It has been used to host thousands 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 ICPC/IOI/AtCoder/ECOO formats out-of-the-box
    • System testing supported
    • Hidden scoreboards and virtual participation
    • Elo-MMR-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 Discord 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. ICPC, 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 — visit translate.dmoj.ca to check the translation status of your preferred language. 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-server for more judging backend details.

Supported languages include:

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

The judge can also grade in the languages listed below:

  • Ada
  • AWK
  • COBOL
  • D
  • Dart
  • Fortran
  • Forth
  • Go
  • Groovy
  • GAS x86/x64/ARM
  • Haskell
  • INTERCAL
  • Kotlin
  • Lua
  • LLVM IR
  • NASM x86/x64
  • Objective-C
  • OCaml
  • Perl
  • PHP
  • Pike
  • Prolog
  • Racket
  • Ruby
  • Rust
  • Scala
  • Chicken Scheme
  • sed
  • Steel Bank Common Lisp
  • Swift
  • Tcl
  • Turing
  • V8 JavaScript
  • Brain****
  • Zig

More Repositories

1

judge-server

Judging backend server for the DMOJ online judge.
Python
878
star
2

docs

Documentation for setting up and using the DMOJ judge.
Python
26
star
3

dmoj-rust

A Rust crate for providing helpful methods in online judging.
Rust
22
star
4

texoid

Lightweight Python server for securely rendering LaTeX diagrams to SVG and PNG within Docker.
Python
9
star
5

csbox

C# sandbox for running untrusted CLR code on Windows online judges.
C#
7
star
6

wbox

Experimental Windows sandbox for online judges.
C++
5
star
7

runtimes-docker

Runtimes supported by DMOJ in a Docker container.
Dockerfile
5
star
8

v8dmoj

V8-based JavaScript interpreter for online judging.
C++
5
star
9

site-docker

Docker image for the DMOJ site.
Python
4
star
10

pymoss

MOSS (Measure Of Software Similarity) library and client for Python.
Python
4
star
11

java-sandbox-agent

Java class sandbox with instrumentation support for online judges.
Java
3
star
12

libmemcpy

glibc memcpy routines split off into a separate library
Assembly
2
star
13

texbox

Docker container to generate SVG and PNG files from LaTeX
TeX
1
star
14

hephaestus

Local frontend for a DMOJ judge, built on top of Atom Electron.
HTML
1
star
15

django-slack-integration

Slack integration for Django, supporting error reporting and message callbacks.
Python
1
star
16

judge-testsuite

Integration testsuite for the DMOJ judge project.
C++
1
star
17

mathserver

A fast and scalable node.js server to render math as SVG, PNG, and more
JavaScript
1
star
18

setbufsize.so

LD_PRELOAD library for controlling standard stream buffer sizes.
C
1
star
19

onemirror

OneDrive mirroring program: create a complete read-only mirror of OneDrive contents.
Python
1
star