Skip to main content

cpGrader: A Python Package to Grade Programming Assignments Automatically

Test PyPI python-version

cpGrader is designed to be used with the course "NTNU CSIE Computer Programming I/II" by instructor neokent (紀博文 Po-Wen Chi).

Thanks for your Contribution 🌟

41247001S-盧昱安 41247012S-吳振榮 41247024S-廖妤恩 41247032S-吳俊廷 41247039S-韓欣劭 41247057S-陳育渝

Installation

pip install cpGrader

How does it works?

assets

Stage (You can enable/disable the stage)

  • Extract: Get all the students's source file from moodle submission folder.
  • Build: Copy the support files to the student's folder and Compile the student's program.
  • Execute: Run the student's program by the testcase and Generate output file by each testcase.
  • Verify: Compare the student's output with the correct plaintext output or the correct program's output.

Step

  1. Download all the student submissions from Moodle.
  2. Think about the testcases and strategies that how to grade the student's assignment.
  3. Write a config file.
  4. Design the verify function.
  5. Run your grader.

Getting Started

TOML Config File

  • global: the global settings (Field below is just for global).
    • support [list]: the files copied to the student's folder.
  • case: the testcase settings (Each case can be independent).
    • name [string]: name of testcase.
    • file [string]: filepath of testcase file.
    • pts [float | int]: grading points.
    • correct [string]: the correct file which is program file (.c, .py) or plain text file (.txt, .out).
    • command [string]: the command to run student's program.

Basic Example

Config File

[global]
support = ["input.bmp", "assignment.h"]
correct = "./correct.c"
command = "./assignment"

[[case]]
name = "case1"
file = "./testcase/1.in"
pts = 5

[[case]]
name = "case2"
file = "./testcase/2.in"
pts = 10

Python Code

from cpGrader import Grader

grader = Grader()

@grader.setcase()
def verify(case_name: str, student_output: str, correct_output: str):
    assert student_output == correct_output

grader.run(
    moodle_submission_dir="/path/to/submissions_dir"
)

GO AND SEE MORE REAL EXAMPLES HERE.

Pytest Testing

Run All Examples Test

pytest

Choose the Test to Run (Wildcard)

pytest -k 2023-cp1-hw01

Details and Muti-Threading

pytest -vs -n auto

Metadata

Release files for cpGrader 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cpGrader 0.1.4
File Size Uploaded
cpgrader-0.1.4.tar.gz 20.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cpGrader 0.1.4
File Interpreter ABI Platform
cpgrader-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 40.5 kB

Release files / cpgrader-0.1.4.tar.gz

Download URL cpgrader-0.1.4.tar.gz
Size 20.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4fcbf15a1e42e01ac6917c629c044934362686bae197fa5582505363a64f10bd
BLAKE2b-256 checksum
How to use checksums
5fbb6e86c3d74c6dcb72745e3116e68b83b4a0ab3c2e983e3f97fff87fa9a457
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.12.1 Linux/6.8.0-1021-azure

Release files / cpgrader-0.1.4-py3-none-any.whl

Download URL cpgrader-0.1.4-py3-none-any.whl
Size 20.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c339d6f30450f52b30e283f550b6d274fd307f891e6dcea709e08e6e915b4966
BLAKE2b-256 checksum
How to use checksums
cdc7d5a52b99445e42936afcd46b84865b8eebf746fd83d809dccfa67c327f4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.12.1 Linux/6.8.0-1021-azure

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page