This is an example of a simple Jacquard autograder that applies these tests to a single submitted file.
- Checkstyle tests
- PMD tests
- JUnit tests
See playlist or individual videos:
- Cloning the Repository (0:51)
- Understanding MainAutograder source code (6:25)
- Testing the autograder locally (4:19)
- Testing on Gradescope (3:52)
- Creating your own project (3:55)
- bash/zsh (included on OS X and Linux)
- Python 3 if you want to test locally by executing
test_autograder.py
(optional)
For bash on Windows, we use and recommend Git for Windows 2.41 or higher.
These directories and files have code specific to the assignment:
config/checkstyle-rules.xml
holds the checkstyle rules filesrc/main/java/student
containsAutograderMain.java
, which has themain
method that controls the autograderAdder.java
, placeholder for student codeAdderTest.java
, which contains annotated JUnit 5 tests of student code
submission
holds a sample submission (required if you want to runtest_autograder.py
locally)submissions
(which is not required) holds sample submissions to manually test the grader locally or on Gradescopeperfect
, a subdirectory with a perfect submissionimperfect
, a subdirectory with an imperfect submissionstarter
, a subdirectory with the starter code
Any of the above files could have different names or packages, although package names
must currently have only a single part (e.g., student
, not edu.myschool.student
.)
The submissions/
subdirectories could also have different names.
The submission package and files are specified in config.ini
:
[submission]
package = student
files = [Adder.java]
The list of files is comma-separated, with optional whitespace.
The main class of the autograder is specified in build.gradle
:
application {
mainClass.set("student.AutograderMain")
}
You will need to change it if you use a different package/class name for your main autograder class.
You are free to make other additions to build.gradle
, such as adding
dependencies.
This can be used to create a Docker image for the autograder.
This script, which requires Python 3, lets you test the autograder locally. If called without any
arguments, it will use the submission in the submission/
directory.
./test_autograder.sh
If called with an argument, it will use the submission in that subdirectory,
prepending submissions/
if necessary. For example, to test the autograder
against the files in submissions/perfect
, you could execute either:
./test_autograder.sh submissions/perfect
./test_autograder.sh perfect
This creates the zip file for you to upload to Gradescope.
To create a zip file, run ./make_autograder.sh
from the command line.
To configure the autograder on Gradescope:
- Click on "Configure Autograder" in the left sidebar.
- Select "Zip file upload".
- Click on "Replace Autograder (.zip)".
- Select:
- Base Image OS: Ubuntu
- Base Image Version: 22.04
- Base Image Variant: JDK 17
- Click on "Update Autograder". (You may have to wait up to a minute for anything to happen. The button will go gray when the build begins.)
- Wait for the "Built as of" time to be updated.
If you have installed Docker, you can create an image based on Dockerfile
with a command line of the form:
docker build -t username/gradername .
For example, because my Docker username is espertus
, I would type:
docker build -t espertus/example0 .
For more information, see Manual Docker Configuration.
See https://github.com/jacquard-autograder/jacquard for more information, including:
- Documentation
- Additional examples
- Mailing lists