Skip to content
Automated Individual Feedback System for Interactive Learning
TypeScript Java HTML Scala CSS JavaScript Other
Branch: develop
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github PR Reviews Actions: Update Action Jan 7, 2020
.jhipster Feature/Programming-Exercises/Run test cases after due date (#664) Aug 15, 2019
checkstyle update checkstyle version Dec 9, 2019
data fix wrong scheme entries for foreign keys in quizzes Mar 19, 2019
doc Move too specific code from AbstractVersionControlService to GitLab s… Jan 4, 2020
gradle update dependencies Jan 17, 2020
libs update bob cli to 9.0.0 Oct 17, 2019
src Chore/test coverage/LtiIntegrationTest (#1202) Jan 22, 2020
webpack update dependencies Dec 22, 2019
.editorconfig Update to jhipster 6 and angular 8 (#263) Jun 15, 2019
.gitattributes Upgrade Quizzes (Create/Edit/Re-Evaluate) to TypeScript (#103) on the… Oct 2, 2018
.gitignore update dependencies and test configuration, fix some spring integrati… Jan 20, 2020
.prettierignore fix wrong path in prettier config Sep 1, 2019
.prettierrc Integrate spotless and prettier (#193) Mar 27, 2019
.yo-rc.json update dependencies Oct 13, 2019 Create Apr 5, 2019 Update CONTRIBUTING with Route Naming Conventions (#748) Aug 28, 2019
LICENSE update dependencies Mar 27, 2019 updates with Jhipster 6.6.0 Dec 23, 2019 Create Nov 14, 2019
angular.json Feature/orion instructor view (#1105) Dec 30, 2019
artemis-server-cli SpotBugs Dec 2, 2019
artemis-spotless-style.xml small improvements and version bump Jul 13, 2019
artemis-spotless.importorder changed java formatter (#227) Mar 31, 2019
artemis.jh Provide Assessment proposals to tutors for text exercises (#660) Aug 5, 2019
build.gradle update dependencies and test configuration, fix some spring integrati… Jan 20, 2020
docker-compose.yml fix json parsing of authorities (e.g. during question create) Oct 8, 2019 update dependencies and test configuration, fix some spring integrati… Jan 20, 2020
gradlew update dependencies and update gradle to 6.0 Nov 10, 2019
gradlew.bat update dependencies and update gradle to 6.0 Nov 10, 2019 start script with bash command and replace backslashes with double ba… May 4, 2019
package.json update client dependencies and fix husky setup Jan 21, 2020
postcss.config.js update to jhipster 5.6.0 Nov 2, 2018
protractor.conf.js fix protractor test setup, remove outdated login test Mar 28, 2019
proxy.conf.json upgrade to angular 5 Jun 28, 2018
settings.gradle update client and server dependencies, update to jhipster 6.3.0 Sep 16, 2019 Update to jhipster 6 and angular 8 (#263) Jun 15, 2019
tsconfig-aot.json update to jhipster 6.2.0 Aug 1, 2019
tsconfig-e2e.json TS strictNullChecks First Draft May 3, 2019
tsconfig.json update to jhipster 6.2.0 Aug 1, 2019
tsconfig.spec.json update dependencies and test configuration, fix some spring integrati… Jan 20, 2020
tslint-doc.json Extend TypeScript documentation (#780) Sep 3, 2019
tslint.json Enhancement/Improve tslint setup for doc checking (#743) Aug 25, 2019
yarn.lock update client dependencies and fix husky setup Jan 21, 2020

Artemis: Interactive Learning with Individual Feedback

GitHub Actions Status Dependencies status

This application was generated using JHipster 6.6.0. (Documentation and help)

Latest version)

Main features

Artemis supports the following exercises:

  1. Programming exercises with version control and automatic assessment with test cases and continuous integration
  2. Quiz exercises with multiple choice, drag and drop and short answer quiz questions
  3. Modeling exercises with semi-automatic assessment using machine learning concepts
  4. Text exercises with manual (and experimental semi-automatic) assessment
  5. File upload exercises with manual assessment

All these exercises are supposed to be run either live in the lecture with instant feedback or as homework. Students can submit their solutions multiple times within the due date and use the (semi-)automatically provided feedback to improve their solution.

Development setup

Find here a guide on how to set up your local development environment.


Find here a guide on how to contribute to Artemis.

Top-Level Design

The following diagram shows the top-level design of Artemis which is decomposed into an application client (running as Angular web app in the browser) and an application server (based on Spring Boot). For programming exercises, the application server connects to a version control system (VCS) and a continuous integration system (CIS). Authentication is handled by an external user management system (UMS).

Top-Level Design

While Artemis includes generic adapters to these three external systems with a defined protocol that can be instantiated to connect to any VCS, CIS or UMS, it also provides 3 concrete implementations for these adapters to connect to:

  1. VCS: Atlassian Bitbucket Server
  2. CIS: Atlassian Bamboo Server
  3. UMS: Atlassian JIRA Server (more specifically Atlassian Crowd on the JIRA Server)

Building for production

To optimize the Artemis application for production, run:

./gradlew -Pprod -Pwar clean bootWar

This will compile the TypeScript into JavaScript files, concatenate and minify them and the CSS files. It will also modify index.html so it references these new files. To ensure everything worked, run:

java -jar build/libs/*.war,artemis,bamboo,bitbucket,jira

(You might need to copy a yml file into the folder build/libs before, also see development setup)

Then navigate to http://localhost:8080 in your browser.

Refer to Using JHipster in production for more details.


The following UML deployment diagram shows a typical deployment of Artemis application server and application client. Student, Instructor and Teaching Assistant (TA) computers are all equipped equally with the Artemis application client being displayed in the browser.

The Continuous Integration Server typically delegates the build jobs to local build agents within the university infrastructure or to remote build agents, e.g. hosted in the Amazon Cloud (AWS).

Deployment Overview

Data Model

The Artemis application server used the following data model in the MySQL database. It supports multiple courses with multiple exercises. Each student in the participating student group can participate in the exercise by clicking the Start Exercise button. Then a repository and a build plan for the student (User) will be created and configured. The initialization state variable (Enum) helps to track the progress of this complex operation and allows to recover from errors. A student can submit multiple solutions by committing and pushing the source code changes to a given example code into the version control system or using the user interface. Each submission is automatically tested by the continuous integration server, which notifies the Artemis application server, when a new result exists. In addition, teaching assistants can assess student solutions and "manually" create results. The current data model is more complex and supports different types of exercises such as programming exercises, modeling exercises, quiz, and text exercises.

Data Model

Server Architecture

The following UML component diagram shows more details of the Artemis application server architecture and its REST interfaces to the application client.

Server Architecture

You can’t perform that action at this time.