Artemis brings interactive learning to life with instant, individual feedback on programming exercises, quizzes, modeling tasks, and more. Offering customization for instructors and real-time collaboration for students, this platform bridges creativity and education. Embrace a new era of engaging, adaptive learning and artificial intelligence support with Artemis, where innovation meets inclusivity. Find out more on https://artemisapp.github.io
User experience: Provide an intuitive and engaging interface that enhances the learning experience for both students and instructors. Ensure ease of use across diverse learning scenarios, fostering seamless interaction and accessibility.
Scalable infrastructure: Build a robust platform capable of supporting large-scale courses with thousands of participants simultaneously. Ensure high availability, performance, and adaptability as the platform grows in functionality and user base.
Constructive alignment: Align learning goals, activities, and assessments through well-integrated features such as the exam mode that support instructional design principles. Enable the seamless implementation of interactive learning methodologies, ensuring that every feature contributes meaningfully to learning goals.
Learning analytics: Leverage data to provide actionable insights into student performance and engagement. Offer detailed feedback to both learners and instructors, enhancing personalized learning experiences and supporting data-driven decisions for educational improvement while ensuring data privacy and security.
any programming language
.
The Artemis development team prioritizes the following areas in the future. We welcome feature requests from students, tutors, instructors, and administrators. We are happy to discuss any suggestions for improvements.
We welcome contributions from both members of our organization and external contributors. To maintain transparency and trust:
We adhere to best practices as recommended by GitHub's Open Source Guides and their Acceptable Use Policies. Thank you for helping us create a respectful and professional environment for everyone involved.
We follow a pull request contribution model. For detailed guidelines, please refer to our CONTRIBUTING.md. Once your pull request is ready to merge, notify the responsible feature maintainer on Slack:
The following members of the project management team are responsible for specific feature areas in Artemis. Contact them if you have questions or if you want to develop new features in this area.
Goal | Responsible maintainer |
---|---|
User experience | Ramona Beinstingel (@rabeatwork) |
Scalable infrastructure | Matthias Linhuber (@mtze) |
Constructive alignment | Stephan Krusche (@krusche) |
Learning analytics | Maximilian Anzinger (@maximiliananzinger) |
Feature / Module | Responsible maintainer |
---|---|
Exercises | Stephan Krusche (@krusche) |
Programming exercises | Stephan Krusche (@krusche) |
Build agents | Robert Jandow (@robertjndw) |
Quiz exercises | Felix Dietrich (@FelixTJDietrich) |
Modeling exercises | Felix Dietrich (@FelixTJDietrich) |
Text exercises | Maximilian Sölch (@maximiliansoelch) |
File upload exercises | Elisabeth Friesinger (@easy-lisi) |
Exam mode | Stephan Krusche (@krusche) |
Assessment | Maximilian Sölch (@maximiliansoelch) |
Communication | Stephan Krusche (@krusche) |
Lectures | Patrick Bassner (@bassner) |
Atlas | Maximilian Anzinger (@maximiliananzinger) |
Iris | Patrick Bassner (@bassner) |
Athena | Maximilian Sölch (@maximiliansoelch) |
Tutorial Groups | Ramona Beinstingel (@rabeatwork) |
Plagiarism checks | Markus Paulsen (@MarkusPaulsen) |
LTI | Maximilian Anzinger (@maximiliananzinger) |
The Artemis documentation is available here. You can find a guide on how to write documentation.
Setting up Artemis in your development environment or a demo production environment is really easy following the instructions on https://docs.artemis.cit.tum.de/dev/setup. When you want to support programming exercises, we recommend using the Integrated Code Lifecycle.
Artemis can also be set up in conjunction with external tools for version control and continuous integration:
Artemis uses these external tools for user management and the configuration of programming exercises.
If needed, you can configure self service user registration.
To build and optimize the Artemis application for production, run:
./gradlew -Pprod -Pwar clean bootWar
This will create a Artemis-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,localci,localvc,artemis,scheduling,buildagent,core,local
(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 username@artemistest.ase.in.tum.de -w build/libs/Artemis-7.5.6.war
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).
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.
The following simplified UML component diagram exemplary shows more details of the Artemis application server architecture and its REST interfaces to the application client.
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).
The Artemis application server uses the following (simplified) data model in the MySQL database (notice that the actual data model is more complex by now). 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.
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.)
There is a growing community of university instructors who are using Artemis.
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.
The following universities are actively using Artemis or are currently evaluating Artemis.
Technical University of Munich
https://artemis.cit.tum.de
Main contact person: Stephan Krusche
LFU Innsbruck, Uni Salzburg, JKU Linz, AAU Klagenfurt, TU Wien
https://artemis.codeability.uibk.ac.at
codeAbility project
Main contact person: Michael Breu
University of Stuttgart
https://artemis.sqa.ddnss.org
Main contact person: Steffen Becker
Universität Passau
https://artemis.fim.uni-passau.de (only accessible via the university network/VPN)
Main contact person: Benedikt Fein
Karlsruhe Institute of Technology
https://artemis.praktomat.cs.kit.edu
Main contact person: Dominik Fuchß
Hochschule München
https://artemis.cs.hm.edu
Main contact person: Michael Eggers
Technische Universität Dresden
Main contact person: Andreas Domanowski
Hochschule Heilbronn
Main contact person: Jörg Winckler
Maria-Theresia-Gymnasium München
Main contact person: Valentin Herrmann
HU Berlin
Main contact person: Lars Grunske
Westsächsische Hochschule Zwickau
Main contact person: Heiko Baum
Technische Universität Chemnitz
Main contact person: Danny Kowerko
Universität zu Köln
Main contact person: Andreas Vogelsang
Technische Universität Dortmund
Main contact person: Falk Howar
Universität Bielefeld
Main contact person: Daniel Merkle
Universität Ulm
Main contact person: Matthias Tichy
Imperial College London
Main contact person: Robert Chatley
University of South Australia
Main contact person: Srecko Joksimovic