VPL combines Moodle activity management with a complete workflow for creating, running, assessing, and reviewing programming assignments.

Activity and development capabilities

Activity modes

Use Normal, No Students, Students Read-Only, Based On, VPL Question, and Example modes to control access, templates, and activity behavior.

Configurable IDE

Let users choose editor and terminal themes, font sizes, key bindings, invisible-character display, and live autocompletion from one preferences dialog.

Course activity reports

Review VPL activities in a filterable table, hide columns, download table data, and inspect submission and grading information more efficiently.

Evaluator extensions

Extend evaluation with configurable evaluator subplugins. The GIOTES evaluator supports flexible reports, per-test time limits, and clearer result messages.

More execution modes

Run programs in text, GUI, web app, or text-in-GUI mode, with activity-level settings and source annotations for dynamic selection.

Expanded language support

Use modern editor and similarity support for languages such as Go, Rust, Kotlin, TypeScript, Dart, Julia, and Visual Basic, alongside established course languages.

Course and submission control

Moodle integration

Use familiar Moodle features including grading, groups, role-based access, activity logs, and backup and restore.

Flexible submission rules

Set submission periods, control when students can view the assignment, limit the number and size of uploaded files, and require specific filenames.

Access protection

Restrict browsing, editing, and uploads by network, and protect activities with a password when needed.

Submission history

Students can submit repeatedly during the available period while VPL keeps earlier submissions and evaluates the latest one.

Overrides and variations

Customize dates, evaluation reductions, free evaluations, passwords, and assigned variations for individual students or groups.

Team activities

Organize group submissions and grades around teams, with submissions remaining associated with their group when membership changes.

Exam access controls

Support password and Safe Exam Browser restrictions, including configuration checks and automatic recording of first access when required.

File management

Browser-based editor

Students can browse, edit, and upload assignment files directly in the browser using the integrated code editor.

Ready-to-use files

Set initial content for required files so each student starts with the same clear assignment structure.

Syntax highlighting

Uploaded and edited source files are displayed with syntax highlighting for easier reading and review.

Rich file handling

Drag and drop files, upload ZIP archives, decompress submissions, rename files and directories, view images and documents, and play audio or video files.

Collaborative editor tools

Use autocomplete, keyboard shortcuts, multiple file selection, global search, comments, and side-by-side file comparisons while working in the IDE.

Mobile-ready workspace

Work with the editor and console on tablets and mobile devices, including virtual keyboard and clipboard support.

Running and assessment

Multi-language assignments

Use default run and debug scripts for languages including C, C++, C#, COBOL, Java, Python, PHP, Ruby, Pascal, SQL, and many more.

Automatic assessment

Run custom scripts and programs against each submission, compare results, and combine automatic scores with teacher feedback.

Console execution

Execute programs with text-based input and output so students can test their work in a consistent environment.

Controlled execution

Use the isolated VPL Jail System and limit time, memory, file size, and process count to control program resources.

Reusable configurations

Base evaluation and execution scripts, as well as supporting files, on other VPL activities to reduce repeated setup.

Teacher solution testing

Test evaluation cases against teacher-provided solutions and review a unified report before applying an activity to student submissions.

Visual code execution

Use step-by-step execution with Python Tutor for Python, C, C++, and Java programs when visual tracing supports learning.

Flexible test cases

Define inputs, expected outputs, exit codes, program arguments, alternate programs, variations, time limits, reductions, and custom feedback for each case.

Read-only resources

Keep shared execution files visible but protected from student editing while using them during runs and evaluations.

Assessment and reporting

Advanced grading

Use manual and automatic grading together, import feedback from previous attempts, and access contextual help while assessing submissions.

Evaluation feedback

Customize pass, failure, timeout, exit-code, and final report messages, including multiple accepted outputs and regular-expression checks.

Submission reports

Filter submissions, select users, paginate results, download reports, view previous attempts, copy submissions, and access assessment actions from one report.

Activity analytics

Track student save, run, and debug activity and review submission and grading summaries for individuals and groups.

Course administration and integration

Course overview

View VPL activities across a course, sections, and subsections with filtering, detailed configuration summaries, and course-level reports.

Course reset and calendar

Shift dates during course reset, selectively reset user and group overrides, and keep calendar and timeline information synchronized.

Web services

Use Moodle web services to open, save, evaluate, retrieve results, and exchange text or binary submissions with external tools.

Execution server integration

Connect securely to local or remote execution servers using JSON-RPC or XML-RPC, with support for complex networks, GUI programs, and browser-based web applications.

Accessibility and localization

Use localized interfaces, configurable editor and terminal themes, responsive controls, and support for multilingual source code and non-Latin input.

Authorship control

Similarity detection

Search submitted source files for similarities that may indicate shared or copied solutions.

Editing safeguards

Limit editing options and prevent external code from being pasted into the editor when course policy requires it.