BACS: Zero-Setup Code Grader & Contests

Activities ::: mod_bacs
Maintained by Artem Iuminov
Launch a programming course in minutes with BACS! No server setup needed — everything’s ready to go. Students write code in various programming languages, and BACS automatically grades assignments, freeing you from routine tasks. Over 400 algorithmic problems are available in English, Spanish, and Russian. Requires the Sybon service. A free public key is available in the description.
Latest release:
12 sites
38 downloads
3 fans
Current versions available: 2

Students submit code and receive instant verdicts. Teachers track attempts and results in a clear dashboard. Problem statements are available in English, Spanish, and Russian. There's no need to configure workers to testing/run participants' solutions, as with the VPL (Virtual Programming Lab) and CodeRunner plugins. 

If you've ever wanted TopCoder, LeetCode, or Codeforces in Moodle, this plugin is for you!

Demo

Key features

  • Instant auto-judging — per-test verdicts with execution time and memory; pretest input/output visible to students

  • Live real-time monitor — the standings update as solutions are judged, no page reloads

  • Analytics — a leader "race" chart, task-activity dynamics, score graphs, and a difficulty analysis that predicts how many students can actually solve each task.

  • Clear attempts history and grading for teachers

  • Works for practice lessons, labs, and contests

  • Scales to large cohorts and multiple courses

  • External checking via the Sybon service, no extra server setup

  • 400+ problems with multilingual statements: EN, ES, RU

Compatibility

  • Supported Moodle versions: 3.11 to 5.2

Starter course archives

Installation

  1. Copy the module code to moodleroot/mod/bacs.

  2. Go to http://your-moodle/admin (Site administration → Notifications) to start installation.

  3. Replace NoDefaultKey with your Sybon API key to access task collections. Configure other defaults if needed.

  4. Configure scheduled tasks at /admin/tool/task/scheduledtasks.php to sync available languages, tasks, and solution checks.
    By default, submissions are sent for judging and results are fetched every minute.

  5. Add cronjob * * * * * /usr/bin/flock -n /var/lock/moodle-adhoc.lock /usr/bin/php <MOODLE_SITE_DIR>/admin/cli/adhoc_task.php --execute --keep-alive=49 >> <MOODLE_DATA_DIR>/moodle-adhoc.log 2>&1 
    This ensures that submissions receive verdicts as soon as they are sent to Moodle.

  6. Add the activity to any course and start using it.

Public key

  • You can use a public key with a limit of 20 submissions per minute: YWhwwXtyF0edYR5mWrvQvQ.

Details

  • Supported languages: C (C11), C++11, C++17, C++20, C# (.NET 8.0, Mono), Free Pascal, Python 2, Python 3, Java 11, Java 17, Kotlin, Go, Ruby, JavaScript (Node.js), TypeScript (Bun), Rust

  • Submissions include execution time and memory for all tests, plus input and output for pretests (visible to participants)

  • Contest scoreboard summarizing results across all tasks and participants

  • Time windows for contests, upsolving, and practice

  • Multiple scoring systems: IOI, ICPC, General

  • Per-task scoring and the ability to change the scoring system, task set, task order, and scores at any time, even during or after a contest

  • Group support for student cohorts

  • Virtual contests so each student can participate at an independent time

  • Tools to rejudge, recalculate points, reject, or update submission results

Contact
We are open to collaboration: istupo@gmail.com

Video tutorial

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4
Screenshot #5
Screenshot #6

Contributors

Artem Iuminov (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments

Show comments
Please login to post comments