Skip to content

kit-sdq/artemis4j

Repository files navigation

Artemis4J

A Java client for the Artemis API, and a wrapper around it to simplify grading of programming exercises. The project is developed and used as part of the KIT's programming lecture, with the main user being IntelliGrade.

Features include:

  • A stateless client API that maps 1:1 to the Artemis REST API.
  • A stateful grading API for programming exercises built on top of the API. This API uses a simplified model of the Artemis data model.
  • (Partially) automatic grading of programming exercises via the Autograder.

Usage

The entry point for the client API is the ArtemisClient class, with which the various DTOs can be used. The UtilitiesTest class demonstrates this.

The entry point for the grading API is the ArtemisConnection class. The API example demonstrates the intended usage of the grading API.

Architecture

Artemis4J is split into two main parts: A stateless client part that maps 1:1 to the Artemis API, and a stateful grading part built on top of it.

The client part is entirely stateless. It can be used without everything else, e.g. for one-off scripts or tools. The client is mainly structured around DTOs, where each DTO describes a single request/response entity of Artemis. DTOs contain static methods that describe associated API endpoints.

The grading part is stateful and provides a higher-level API for grading of programming exercises. It is designed to suit the needs of KIT's programming lecture. It parses grading configs, calculates points, and provides a simplified API for grading tools. It also provides means to clone student's Git repositories. The grading system is written in a way that (hopefully) doesn't require any API changes when Artemis changes (which happens quite frequently).