Features

Exercise Setup

Smart Testing Strategies

In essence, a program is tested by giving it some input and verifying it produces the correct result. CodeJudge supports input from standard input, command line arguments, local files, and test scripts - a very convenient way to test programs similar to unit tests. Output is verified by comparing to some expected data or even custom evaluation functions.

Example files of setting up test data
Feedback from CodeJudge

Great feedback

Students get instant feedback when they upload their solution to an exercise. This engages students to keep on working until they pass all tests.

As the teacher, you are in full control of how much feedback the students get - and when. Often you might want to reveal/hide different kind of information about the tests based on the students' level and the type of exercise.

Easy test data generation

To evaluate students’ solutions good test data is needed. The task of creating such test data can sometimes be a bit messy. CodeJudge helps you with the generation of test data for your exercises. You can simply upload a test script and a correct solution then the system will take care of the rest for you.

Competitions / Scoreboard

Are your students up for a challenge? CodeJudge supports creating programming competitions among students. This is a great way to engage and challenge your good students. You can set up live scoreboards on different parameters like number of solved tests, running time, or even a custom score function.

Scoreboard

Environment

Ready-to-go Service

CodeJudge is available to you as a ready-to-go service, so you can focus on the important task of creating engaging and challenging learning experiences for your students. No need to install anything, host servers, maintain and update software, or take action when your system crashes in the middle of the night. We are happy take care of all this for you.

User integration (LTI)

CodeJudge supports easy user integration with the most commonly used university course management systems through LTI (Learning Tools Interoperability). This means users do not need to create an account to use CodeJudge but will be able to login directly through the system they are used to. This also means that teachers do not have to worry about synchronizing user lists, etc.

Secure code execution

CodeJudge grades students’ code in a secured sandbox. For instance this means you do not have to worry about executing malicious code on your machine. This also means access to the internet is restricted to avoid cheating.
CodeJudge uses identical dedicated machines for grading. These machines each grade at most one test at a time to ensure fair grading.

Analytics

Graphs in CodeJudge

Statistics

Get a fast overview of how well your students are doing in the statistics sections. Here you can see graphs of how many students have attempted/solved the exercises, etc.

CSV file

Export Results

If you need to process the results of the students - for instance if you need to give grades to the students - you can easily construct your own CSV reports with the information you need.

More Features

Plagiarism Detection

Do you suspect some of your students are cheating by copying code from each other in the hand-ins? Using our plagiarism detector, you can get an overview of which submissions have similarities to other submissions. In a side-by-side view of two submissions, the similarities will be color highlighted for you. This plagiarism detector is optimized for code, and thus can even find similarities in code where students have tried to make small tricks to hide their cheating.

Plagiarism comparison in CodeJudge

Supported Languages

The following languages are currently supported:

  • Bash (4.4 GNU)
  • C (gcc 8.2)
  • C# (Mono 5.14)
  • C++ (C++14, g++ 8.2)
  • C++11 (g++ 8.2)
  • C++1z (g++ 8.2)
  • Coq (8.5pl3) [beta]
  • Elixir (1.5) [beta]
  • F# (4.1)
  • Go (1.9) [beta]
  • Haskell (8.2) [beta]
  • HDL
  • Java 11
  • Java 8
  • JavaScript
  • * Matlab (2018b)
  • Pascal (fpc 3.0)
  • Prolog (SWI-Prolog 7.6)
  • Python2 (2.7)
  • Python3 (3.7)
  • R (3.5)
  • Rust (1.28)
  • Scala (2.12)
  • TypeScript

* Matlab support requires a special agreement with us.

If you would like to use something not on this list, just contact us and we will look into the options.