AutoGrade-Core is a high-performance, command-line system evaluation tool written in modern C++ (C++20/C++23) for automated assessment of student C and C++ programming submissions.
- Configurable Pipeline: Toggles for Static AST Policy Analysis (
--enable-static), Sandboxed Execution (--enable-sandbox), and Cross-Submission Plagiarism Check (--enable-plagiarism). - Parallel Bulk Processor: Multi-threaded thread pool (
std::jthread/std::stop_token) processing folder trees of student submissions. - Linux Security Sandboxing: Enforces CPU time limits (
rlimit), memory ceilings (RLIMIT_AS/cgroups v2), and system call filtering (seccomp-bpf/ Linux namespaces). - Winnowing Plagiarism Engine: Fingerprints AST token streams using the Winnowing algorithm (k-grams + sliding window) for pairwise similarity comparison.
- Structured JSON Reporting: Generates comprehensive JSON reports detailing execution stats, policy violations, and plagiarism matrices.
AutoGrade-Core/
├── CMakeLists.txt
├── README.md
├── include/
│ └── autograde/
│ ├── config/
│ │ └── config_manager.hpp
│ ├── ast/
│ │ └── ast_analyzer.hpp
│ ├── sandbox/
│ │ └── sandbox_runner.hpp
│ ├── plagiarism/
│ │ └── plagiarism_engine.hpp
│ ├── processor/
│ │ └── batch_processor.hpp
│ └── utils/
│ └── thread_pool.hpp
├── src/
│ ├── main.cpp
│ ├── config/config_manager.cpp
│ ├── ast/ast_analyzer.cpp
│ ├── sandbox/sandbox_runner.cpp
│ ├── plagiarism/plagiarism_engine.cpp
│ └── processor/batch_processor.cpp
└── submissions/
├── student01/main.cpp
├── student02/main.cpp
└── student03/main.cpp
mkdir build && cd build
cmake ..
cmake --build .# Run full pipeline with static analysis, sandboxing, and plagiarism pass across 8 threads:
./autograde-core --enable-static --enable-sandbox --enable-plagiarism -j 8
# Custom limits and submission directory:
./autograde-core --enable-static --enable-plagiarism --submissions-dir ./submissions --time-limit 3 --memory-limit 128 -o report.json