• Stars
    star
    496
  • Rank 88,807 (Top 2 %)
  • Language
    Java
  • License
    MIT License
  • Created about 8 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Artemis - Interactive Learning with Automated Feedback

Artemis: Interactive Learning with Individual Feedback

Build & Deploy Test Documentation Code Quality Status Coverage Status Latest version)

Main features

  1. Programming exercises with version control, automatic individual feedback (and assessment) based on test cases and static code analysis (executed using continuous integration).
    • Instant: Students receive immediate and individual feedback on submissions. Instructors can customize feedback messages easily, hide feedback during the working time (e.g., with hidden tests)
    • Interactive: Instructors integrate interactive instructions based on tasks and UML diagrams directly into the dynamic problem statements. They can define hints for difficult exercise parts.
    • Independent: Instructors can customize programming exercises to support any programming language. To simplify the setup, Artemis includes sophisticated templates for the most common languages (e.g., Java, Python, C, Haskell, Kotlin, VHDL, Assembler, Swift, Ocaml, ...)
    • Local and online: Students can participate locally in their preferred IDE or in the online code editor (without any setup)
    • Manual reviews are possible directly in the online code editor or in Orion
    • Policies: Instructors can define submission policies (e.g., penalties after 10 attempts) to prevent that students try out all possibilities without thinking.
    • Grading: Instructors have many options to configure grading, analyze the results based on tests and static code analysis categories and re-evaluate the results
    • Secure: Test cases and student code run in Docker environments on build agents. Test frameworks such as Ares simplify the creation of structural and dynamic tests and prevent that students can cheat.
  2. Quiz exercises with multiple choice, drag and drop, and short answer questions
    • Modeling quizzes: Instructors can easily create drag and drop quizzes based on UML models
    • Different modes: Quizzes support a live mode (rated) during lectures, a practice mode for students to repeat the quiz as often as they want, and an exam mode (see below)
  3. Modeling exercises based on the easy-to-use online modeling editor Apollon with semi-automatic assessment using machine learning concepts
    • Multiple diagram types: Artemis supports 7 UML diagram types (e.g. class diagrams) and 4 additional diagrams (e.g. flow charts)
    • Easy to use: Students can create models easily using drag and drop, they can explain the models using additional text.
    • Integrated feedback: Reviews can provide feedback and points directly next to the model elements.
  4. Text exercises with manual, semi-automatic assessment based on supervised machine learning and natural language processing (NLP) using Athena
    • Integrated feedback: Reviews can provide feedback and points directly next to the text segments.
    • Language detection: Artemis detects the language of the submission and shows the word and character count.
  5. File upload exercises with manual assessment
  6. Exam mode: Instructors can create online exams with exercise variants, integrated plagiarism checks, test runs and student reviews. You can find more information on Exam mode student features and on Exam mode instructor features.
  7. Grading: Instructors can configure grade keys for courses and exams to automatically calculate grades and display them to students. Grades can be easily exported as csv files to upload them into university systems (such as Campus online). Instructors can optionally define bonus configurations for final exams to improve student grades according to their grades from a midterm exam or course exercises.
  8. Assessment: Artemis uses double-blind grading and structured grading criteria to improve consistency and fairness. It integrates an assessment training process (based on example submissions and example assessments defined by the instructor), has a grading leader board, and allows students to rate the assessments. Students can complain or ask for more feedback.
  9. Communication: Instructors can post announcements. Students can ask questions, post comments, and react to other posts. Tutors can filter unanswered questions.
  10. Notifications: Artemis supports customizable web and email notifications. Users can enable and disable different notification types.
  11. Team Exercises: Instructors can configure team exercises with real time collaboration and dedicated tutors per team.
  12. Lectures: Instructors can upload lecture slides, divide lectures into units, integrate video streams, lecture recordings, and exercises into lectures, and define competencies.
  13. Integrated Markdown Editor: Markdown is used to format text content across the platform using an integrated markdown editor.
  14. Plagiarism checks: Artemis integrates plagiarism checks for programming exercises (based on JPlag), text exercises, and modeling exercises in courses and exams. It allows notifying students about identified plagiarism. Students can review and comment on the allegation.
  15. Learning analytics: Artemis integrated different statistics for students to compare themselves to the course average. It allows instructors to evaluate the average student performance based on exercises and competencies.
  16. Adaptive Learning: Artemis allows instructors and students to define and track competencies. Students can monitor their progress towards these goals, while instructors can provide tailored feedback. This approach integrates lectures and exercises under overarching learning objectives.
  17. Tutorial Groups: Artemis support the management of tutorial groups of a course. This includes planning the sessions, assigning responsible tutors, registering students and tracking the attendance.
  18. Scalable: Artemis scales to multiple courses with thousands of students. In fact, the largest course had 2,400 students. Administrators can easily scale Artemis with additional build agents in the continuous integration environment.
  19. High user satisfaction: Artemis is easy to use, provides guided tutorials. Developers focus on usability, user experience, and performance.
  20. Customizable: It supports multiple instructors, editors, and tutors per course and allows instructors to customize many course settings
  21. Open-source: Free to use with a large community and many active maintainers.

Roadmap

The Artemis development team prioritizes the following issues in the future. We welcome feature requests from students, tutors, instructors, and administrators. We are happy to discuss any suggestions for improvements.

  • Short term: Further enhance the usability and user experience in different places based on best practices
  • Short term: Further improve discussions and provide communication channels
  • Short term: Improve the integration of learning analytics for students and instructors
  • Short term: Simplify the setup of Artemis
  • Medium term: Improve semi-automatic assessment by reusing knowledge from previous exercises and by offering it for the manual assessment of programming exercises
  • Medium term: Integrate adaptive learning with different exercise difficulties and the automatic generation of hints
  • Medium term: Further improve the security of the involved systems (e.g. when executing code of programming exercises)
  • Long term: Microservices, Kubernetes based deployment, and micro frontends
  • Long term: Allow students to take notes on lecture slides and support the automatic updates of lecture slides
  • Long term: Develop an exchange platform for exercises

Setup, guides, and contributing

Development setup, coding, and design guidelines

Documentation

The Artemis documentation is available here. You can find a guide on how to write documentation.

Server setup

You can set up Artemis in conjunction with either GitLab and Jenkins, GitLab and GitLab CI (experimental), Jira, Bitbucket and Bamboo, or with local CI and local VC. Artemis uses these external tools for user management and the configuration of programming exercises.

Administration setup

If needed, you can configure self service user registration.

Contributing

Please read the guide on how to contribute to Artemis.

Once the PR is ready to merge, notifiy the responsible feature maintainer:

Feature Maintainers
Feature Maintainer
Programming exercises @mtze
Ares @MarkusPaulsen
Quiz exercises @Santia-go
Modeling exercises (+ Apollon) @krusche
Text exercises @maximiliansoelch
File upload exercises @maximiliansoelch
Exam mode @krusche
Grading @maximiliansoelch
Assessment @maximiliansoelch
Communication @bassner
Notifications @mtze @bassner
Team Exercises @krusche
Lectures @maximiliansoelch @bassner
Integrated Markdown Editor @maximiliansoelch @bassner
Plagiarism checks @MarkusPaulsen
Learning analytics @bassner
Tutorial Groups @Santia-go
Usability + Performance @bassner
Infrastructure @mtze
Mobile apps (iOS + Android) @krusche @maximiliansoelch

Building for production

To build and optimize the Artemis application for production, run:

./gradlew -Pprod -Pwar clean bootWar

This will create a Artemis-.war file in the folder build/libs. The build command compiles the TypeScript into JavaScript files, concatenates and minifies the created files (including HTML and CSS files). It will also modify index.html so it references these new files. To ensure everything worked, run the following command to start the application on your local computer:

java -jar build/libs/*.war --spring.profiles.active=dev,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 command can automate the deployment to a server. The example shows the deployment to the main Artemis test server (which runs a virtual machine):

./artemis-server-cli deploy [email protected] -w build/libs/Artemis-4.4.5.war

Architecture

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)

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

Deployment

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 uses the following (simplified) 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 helps to track the progress of this complex operation and allows recovering 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. The continuous integration server automatically tests each submission and notifies the Artemis application server when a new result exists. In addition, teaching assistants can assess student solutions and "manually" create results.

Data Model

Please note that the actual database model is more complex. The UML class diagram above omits some details for readability (e.g., lectures, student questions, exercise details, static code analysis, quiz questions, exam sessions, submission subclasses, etc.)

Artemis Community

There is a growing community of university instructors who are using Artemis.

Communication

We communicate using GitHub issues and pull requests. Additionally, you can join us on Slack to ask questions and get support. If you are interested, please send an email to Stephan Krusche.

Universities / Schools with Artemis in Use

The following universities are actively using Artemis or are currently evaluating Artemis.

Interested universities

More Repositories

1

sReto

P2P Framework for realtime collaboration in Swift
Swift
90
star
2

thesis-template-typst

TUM ASE thesis typst template
Typst
74
star
3

Apollon

UML Modeling Editor written in React
TypeScript
66
star
4

fogernetes

Using Kubernetes for Fog Computing
Python
36
star
5

Orion

Plugin integrating Artemis programming exercises into IntelliJ
Kotlin
30
star
6

thesis-template

A Latex Template for your bachelor / master thesis
TeX
28
star
7

jReto

P2P Framework for realtime collaboration in Java
Java
23
star
8

Athena-CoFee

A system to support (semi-)automated assessment of textual exercises
Python
20
star
9

Ares

The Artemis Java Test Sandbox. A JUnit 5 Extension for Easy and Secure Artemis Java Testing
Java
18
star
10

Apollon_standalone

Standalone version of Apollon Editor
TypeScript
11
star
11

Themis

Themis - Artemis Tutor App for iPad
Swift
11
star
12

Pyris

An LLM microservice for the learning platform Artemis
Python
9
star
13

prompt

PROMPT is a support tool designed to assist program management in project-based courses
TypeScript
9
star
14

Aeolus

Python
9
star
15

Prototyper

Framework that allows you to integrate prototypes into an iOS application and receive feedback using the Prototyper service
Swift
8
star
16

apollon-ios

UML Modeling Editor for iOS written in Swift
Swift
7
star
17

Interactex

You can use the Interactex Designer to visually create and test software for your eTextiles without the need to write any code. It supports every hardware component of the Arduino Lilypad family such as LEDs, buttons, accelerometers, light sensors, etc and every iOS user interface element such as buttons, labels, switches, etc.
Objective-C
7
star
18

Hephaestus

Hephaestus - A Generative AI Mentor for Agile Software Development
TypeScript
7
star
19

artemis-android

Native Android application for Artemis.
Kotlin
6
star
20

artemis-ansible-collection

Ansible Collection to configure Artemis
Jinja
6
star
21

artemis-ios

Native iOS application for Artemis.
Swift
6
star
22

Athena

A system to support (semi-)automated assessment of exercises, built on ls1intum/Athena
Python
6
star
23

hades

A flexible and stateless job scheduler / CI System
Go
6
star
24

prototyper_web

Ruby
5
star
25

Themis-ML

Themis-ML - automated feedback on programing exercises
Python
5
star
26

BasicWebApp

Java
5
star
27

artemis-notification-plugin

Java
4
star
28

tease

TypeScript
4
star
29

Prototype

Framework to integrate prototypes into iOS, macOS or tvOS applications
Swift
4
star
30

MIDAS

App User Behavior Tracking and Visualization
C++
4
star
31

bamboo-server-notification-plugin

Notification Plugin for Bamboo to notify Artemis about build results
Java
4
star
32

logthemis

Logthemis is the amazing new LLM powered log analyzer
Swift
4
star
33

scorpio

TypeScript
4
star
34

thesis-track

Web Application for trackage of theses supervised at the chair
TypeScript
4
star
35

apollon-ios-module

Apollon editor SPM package for iOS
Swift
3
star
36

Artemis-Benchmarking

A benchmarking application for Artemis features
Java
3
star
37

artemis-maven-docker

Artemis Maven Docker Image
Java
3
star
38

MIBO-IDE

An IDE for Multimodal Controls in Smart Buildings
Java
2
star
39

artemis-helm

Helm chart for Artemis
Smarty
2
star
40

static-code-analysis-parser

Common parser functionality for static code analysis tools on continuous integration servers to read reports and send the data to Artemis
Java
2
star
41

ArtemisExamChecker

Swift
2
star
42

Blender.LectureEdit

Some scripts to facilitate the editing of lecture videos in Blender
Python
2
star
43

artemis-competency-parser

Python
2
star
44

Ares2

Java
2
star
45

artemis-ios-core-modules

Core modules for the Artemis related iOS apps
Swift
2
star
46

artemis-ui

Artemis UI is a dynamic collection of UI components tailored for the Education Platform Artemis, offering an engaging user experience with a focus on accessibility and aesthetics. Emphasizing interactive development with Storybook, it's an open-source project inviting community collaboration for continuous enhancement.
MDX
2
star
47

UICompanion

TypeScript
1
star
48

activemq-broker-docker

ActiveMQ Artemis Docker image
1
star
49

pombmm-03-java

Project Organization and Management Branch and Merge Management Exercise Java Pedelec App
Java
1
star
50

go-prompt

PROMPT Go server
Go
1
star
51

Artemis-LocalVC-ConcurrencyTest

A tool to test the behaviour of Artemis LocalVCS regarding concurrent git operations
Java
1
star
52

Thaii

Thaii (Tool to analyze Human-AI-Interaction) is designed to provide users with insights into their AI usage for self-learning purposes. This research project aims to help users reflect on their interaction with conversational agents by tracking their usage and regulating their learning process.
TypeScript
1
star
53

storage-benchmarking

Benchmarking Tool using Flexible I/O Tester (FIO) to test performance of IO operations in containerized environments.
Python
1
star