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.