Skip to content

Repository files navigation

AutoGrade-Core

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.

Features

  • 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.

Directory Structure

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

Build Instructions

mkdir build && cd build
cmake ..
cmake --build .

Usage Examples

# 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

About

High-performance, multi-threaded C++20 system evaluation framework for C/C++ academic programming submissions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages