From c299feac97c46c75b33b109a5a46f03931df4a07 Mon Sep 17 00:00:00 2001 From: Stephan Krusche Date: Tue, 17 Sep 2024 10:54:32 +0200 Subject: [PATCH] Development: Update README to reflect new module structure --- README.md | 113 +++++++++--------- .../artemis/exercise/web/TeamResource.java | 1 - .../web/TeamWebsocketService.java | 2 +- .../web/LectureResource.java | 2 +- .../web/PlantUmlResource.java | 2 +- 5 files changed, 62 insertions(+), 58 deletions(-) rename src/main/java/de/tum/cit/aet/artemis/{core => exercise}/web/TeamWebsocketService.java (98%) rename src/main/java/de/tum/cit/aet/artemis/{core => lecture}/web/LectureResource.java (99%) rename src/main/java/de/tum/cit/aet/artemis/{core => programming}/web/PlantUmlResource.java (98%) diff --git a/README.md b/README.md index 4bd470ce51ce..4cd94a4e4278 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,14 @@ 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 -## Main features - -1. **[Programming exercises](https://docs.artemis.cit.tum.de/user/exercises/programming/)** with version control, automatic individual feedback (and assessment) based on test cases and static code analysis (executed using continuous integration) for `any programming language`. - * **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) +## Main features and modules + +1. **[Exercises](https://docs.artemis.cit.tum.de/user/exercises)** with automatic and manual assessment. Instructors have many configuration options. + * **[Team exercises](https://docs.artemis.cit.tum.de/user/exercises/team-exercises/)**: Instructors can configure team exercises with real time collaboration and dedicated tutors per team. + * **Multiple submissions**: Students can participate in exercises multiple times. Instructors can configure the number of submissions and the submission deadline. + * **Practice mode**: Students can practice exercises as often as they want. +2. **[Programming exercises](https://docs.artemis.cit.tum.de/user/exercises/programming/)** with version control, automatic individual feedback (and assessment) based on test cases and static code analysis (executed using continuous integration) for `any programming language`. + * **Instant feedback**: 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) @@ -20,36 +24,45 @@ Artemis brings interactive learning to life with instant, individual feedback on * **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](https://github.com/ls1intum/Ares) simplify the creation of structural and dynamic tests and prevent that students can cheat. -2. **[Integrated code lifecycle](https://docs.artemis.cit.tum.de/dev/setup/integrated-code-lifecycle)**: Elevating the programming exercise experience, Artemis seamlessly integrates **version control** and **continuous integration**, creating a streamlined, cohesive development environment. Unlike external systems, this integrated approach minimizes maintenance overhead and is tailored to the specific needs of a learning platform, offering unparalleled flexibility. It simplifies the initial setup for administrators and ensures a smoother, integrated workflow for students and instructors alike. -3. **[Quiz exercises](https://docs.artemis.cit.tum.de/user/exercises/quiz/)** with multiple choice, drag and drop, and short answer questions +3. **[Build agents](https://docs.artemis.cit.tum.de/dev/setup/integrated-code-lifecycle)** Integrated code lifecycle elevates the programming exercise experience and seamlessly integrates **version control** and **continuous integration**, creating a streamlined, cohesive environment. Unlike external systems, this integrated approach minimizes maintenance overhead and is tailored to the specific needs of a learning platform, offering unparalleled flexibility, performance, and scalability. It simplifies the initial setup for administrators and ensures a smoother, integrated workflow for students and instructors alike. Build agents are responsible for executing the build, test, and static code analysis jobs for programming exercises. They easily integrate into the Artemis infrastructure. +4. **[Quiz exercises](https://docs.artemis.cit.tum.de/user/exercises/quiz/)** 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) -4. **[Modeling exercises](https://docs.artemis.cit.tum.de/user/exercises/modeling/)** based on the easy-to-use online modeling editor [Apollon](https://apollon.ase.in.tum.de) with semi-automatic assessment using machine learning concepts +5. **[Modeling exercises](https://docs.artemis.cit.tum.de/user/exercises/modeling/)** based on the easy-to-use online modeling editor [Apollon](https://apollon.ase.in.tum.de) 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. -5. **[Text exercises](https://docs.artemis.cit.tum.de/user/exercises/textual/)** with manual, semi-automatic assessment based on supervised machine learning and natural language processing (NLP) using [Athena](https://github.com/ls1intum/Athena) +6. **[Text exercises](https://docs.artemis.cit.tum.de/user/exercises/textual/)** with manual, semi-automatic assessment based on supervised machine learning and natural language processing (NLP) using [Athena](https://github.com/ls1intum/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. -6. **[File upload exercises](https://docs.artemis.cit.tum.de/user/exercises/file-upload/)** allow full flexibility to instructors. Students can create any kind of file (e.g. PDF, PNG) and submit it to Artemis when they have completed their work. Artemis allows instructors and tutors to download the files and assess them manually based on structured grading criteria (see below in the section Assessment). -7. **[Exam mode](https://docs.artemis.cit.tum.de/user/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](https://artemis.cit.tum.de/features/students) and on [Exam mode instructor features](https://artemis.cit.tum.de/features/instructors). -8. **[Grading](https://docs.artemis.cit.tum.de/user/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. -9. **[Assessment](https://docs.artemis.cit.tum.de/user/exercises/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. +7. **[File upload exercises](https://docs.artemis.cit.tum.de/user/exercises/file-upload/)** allow full flexibility to instructors. Students can create any kind of file (e.g. PDF, PNG) and submit it to Artemis when they have completed their work. Artemis allows instructors and tutors to download the files and assess them manually based on structured grading criteria (see below in the section Assessment). +8. **[Exam mode](https://docs.artemis.cit.tum.de/user/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](https://artemis.cit.tum.de/features/students) and on [Exam mode instructor features](https://artemis.cit.tum.de/features/instructors). +9. **[Assessment](https://docs.artemis.cit.tum.de/user/exercises/assessment/)**: Artemis uses double-blind grading and structured grading criteria to improve consistency and fairness. + * **Training process**: 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. + * **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). They can define bonus configurations for final exams to improve student grades according to their grades from a midterm exam or course exercises. 10. **[Communication](https://docs.artemis.cit.tum.de/user/communication/)**: Instructors can post announcements. Students can ask questions, post comments, and react to other posts in channels or private chats. Tutors can filter unanswered questions. -11. **[Notifications](https://docs.artemis.cit.tum.de/user/notifications)**: Artemis supports customizable web and email notifications. Users can enable and disable different notification types. -12. **[Team exercises](https://docs.artemis.cit.tum.de/user/exercises/team-exercises/)**: Instructors can configure team exercises with real time collaboration and dedicated tutors per team. -13. **[Lectures](https://docs.artemis.cit.tum.de/user/lectures/)**: Instructors can upload lecture slides, divide lectures into units, integrate video streams, lecture recordings, and exercises into lectures, and define competencies. -14. **[Integrated markdown editor](https://docs.artemis.cit.tum.de/user/markdown-support/)**: Markdown is used to format text content across the platform using an integrated markdown editor. -15. **[Plagiarism checks](https://docs.artemis.cit.tum.de/user/plagiarism-check/)**: Artemis integrates plagiarism checks for programming exercises (based on [JPlag](https://github.com/jplag/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. -16. **[Learning analytics](https://docs.artemis.cit.tum.de/user/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. -17. **[Adaptive learning](https://docs.artemis.cit.tum.de/user/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. -18. **[Learning paths](https://docs.artemis.cit.tum.de/user/adaptive-learning/adaptive-learning-student.html#learning-paths)**: Based on the competency model and students' individual progress, Artemis creates learning paths that guide students through the course content. -19. **[Tutorial groups](https://docs.artemis.cit.tum.de/user/tutorialgroups/)**: Artemis supports the management of tutorial groups of a course. This includes planning the sessions, assigning responsible tutors, registering students and tracking the attendance. -20. **[Iris](https://artemis.cit.tum.de/about-iris)**: Artemis integrates Iris, a chatbot that supports students and instructors with common questions and tasks. -21. **[Scalable](https://docs.artemis.cit.tum.de/admin/scaling/)**: Artemis scales to multiple courses with thousands of students simultaneously using it. In fact, the largest course had 2,400 students. Administrators can easily scale Artemis with additional build agents in the continuous integration environment. -22. **[High user satisfaction](https://docs.artemis.cit.tum.de/user/user-experience/)**: Artemis is easy to use, provides guided tutorials. Developers focus on usability, user experience, and performance. -23. **Customizable**: It supports multiple instructors, editors, and tutors per course and allows instructors to customize many course settings -24. **[Open-source](https://docs.artemis.cit.tum.de/dev/open-source/)**: Free to use with a large community and many active maintainers. + * **[Notifications](https://docs.artemis.cit.tum.de/user/notifications)**: Artemis supports customizable web and email notifications. Users can enable and disable different notification types. + * **[Mobile apps](https://docs.artemis.cit.tum.de/user/mobile-applications)**: Users can use mobile apps on iOS and Android for an improved user experience. +11. **[Lectures](https://docs.artemis.cit.tum.de/user/lectures/)**: Instructors can upload lecture slides, divide lectures into units, integrate video streams, lecture recordings, and exercises into lectures, and define competencies. +12. **[Atlas](https://docs.artemis.cit.tum.de/user/adaptive-learning)**: Atlas is the competency-based management system that supports instructors and students with adaptive learning and learning analytics. + * **[Adaptive learning](https://docs.artemis.cit.tum.de/user/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. + * **[Learning analytics](https://docs.artemis.cit.tum.de/user/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. + * **[Learning paths](https://docs.artemis.cit.tum.de/user/adaptive-learning/adaptive-learning-student.html#learning-paths)**: Based on the competency model and students' individual progress, Artemis creates learning paths that guide students through the course content. +13. **[Iris](https://artemis.cit.tum.de/about-iris)**: Artemis integrates Iris, a LLM based virtual assistant that supports students and instructors with common questions and tasks. + * **Questions**: Iris supports students with answering questions about exercises, lectures, and the learning performance instantly. + * **Pro-active assistance**: Iris can pro-actively communicate with the students, help them with the next steps in their learning experience and motivate them to continue. +14. **[Athena](https://github.com/ls1intum/Athena)**: Artemis integrates Athena, a machine learning-based tool that supports instructors with the assessment of text, modeling and programming exercises. Athena offers different modules including automatic feedback suggestions based on generate AI. +15. **[Tutorial groups](https://docs.artemis.cit.tum.de/user/tutorialgroups/)**: Artemis supports the management of tutorial groups of a course. This includes planning the sessions, assigning responsible tutors, registering students and tracking the attendance. +16. **[Plagiarism checks](https://docs.artemis.cit.tum.de/user/plagiarism-check/)**: Artemis integrates plagiarism checks for programming exercises (based on [JPlag](https://github.com/jplag/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. +17. **[LTI](https://docs.artemis.cit.tum.de/user/lti)**: Artemis supports the Learning Tools Interoperability (LTI) standard to integrate Artemis into other learning management systems (LMS) such as Moodle and edX. + +## Additional features and aspects + +1. **[Integrated markdown editor](https://docs.artemis.cit.tum.de/user/markdown-support/)**: Markdown is used to format text content across the platform using an integrated markdown editor. +2. **[Scalable](https://docs.artemis.cit.tum.de/admin/scaling/)**: Artemis scales to multiple courses with thousands of students simultaneously using it. In fact, the largest course had 2,400 students. Administrators can easily scale Artemis with additional build agents in the continuous integration environment. +3. **[High user satisfaction](https://docs.artemis.cit.tum.de/user/user-experience/)**: Artemis is easy to use, provides guided tutorials. Developers focus on usability, user experience, and performance. +4. **Customizable**: It supports multiple instructors, editors, and tutors per course and allows instructors to customize many course settings including user management, +5. **[Open-source](https://docs.artemis.cit.tum.de/dev/open-source/)**: Free to use with a large community and many active maintainers. ## Roadmap @@ -85,34 +98,26 @@ We follow a pull request contribution model. For detailed guidelines, please ref 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. -| Feature / Aspect | Responsible maintainer | -|--------------------------------|------------------------------------------------------------------------------------| -| Programming exercises | Stephan Krusche ([@krusche](https://github.com/krusche)) | -| Integrated code lifecycle | Stephan Krusche ([@krusche](https://github.com/krusche)) | -| Quiz exercises | Felix Dietrich ([@FelixTJDietrich](https://github.com/FelixTJDietrich)) | -| Modeling exercises (+ Apollon) | Stephan Krusche ([@krusche](https://github.com/krusche)) | -| Text exercises | Maximilian Sölch ([@maximiliansoelch](https://github.com/maximiliansoelch)) | -| File upload exercises | Maximilian Sölch ([@maximiliansoelch](https://github.com/maximiliansoelch)) | -| Exam mode | Stephan Krusche ([@krusche](https://github.com/krusche)) | -| Grading | Maximilian Sölch ([@maximiliansoelch](https://github.com/maximiliansoelch)) | -| Assessment | Maximilian Sölch ([@maximiliansoelch](https://github.com/maximiliansoelch)) | -| Communication | Ramona Beinstingel ([@rabeatwork](https://github.com/rabeatwork)) | -| Notifications | Ramona Beinstingel ([@rabeatwork](https://github.com/rabeatwork)) | -| Team Exercises | Stephan Krusche ([@krusche](https://github.com/krusche)) | -| Lectures | Maximilian Anzinger ([@maximiliananzinger](https://github.com/maximiliananzinger)) | -| Integrated Markdown Editor | Patrick Bassner ([@bassner](https://github.com/bassner)) | -| Plagiarism checks | Markus Paulsen ([@MarkusPaulsen](https://github.com/MarkusPaulsen)) | -| Learning analytics | Maximilian Anzinger ([@maximiliananzinger](https://github.com/maximiliananzinger)) | -| Adaptive learning | Maximilian Anzinger ([@maximiliananzinger](https://github.com/maximiliananzinger)) | -| Learning paths | Maximilian Anzinger ([@maximiliananzinger](https://github.com/maximiliananzinger)) | -| Tutorial Groups | Felix Dietrich ([@FelixTJDietrich](https://github.com/FelixTJDietrich)) | -| Iris | Patrick Bassner ([@bassner](https://github.com/bassner)) | -| Scalability | Matthias Linhuber ([@mtze](https://github.com/mtze)) | -| Usability | Ramona Beinstingel ([@rabeatwork](https://github.com/rabeatwork)) | -| Performance | Ramona Beinstingel ([@rabeatwork](https://github.com/rabeatwork)) | -| Infrastructure | Matthias Linhuber ([@mtze](https://github.com/mtze)) | -| Development process | Felix Dietrich ([@FelixTJDietrich](https://github.com/FelixTJDietrich)) | -| Mobile apps (iOS + Android) | Maximilian Sölch ([@maximiliansoelch](https://github.com/maximiliansoelch)) | +| # | Feature / Module | Responsible maintainer | +|----|-----------------------|------------------------------------------------------------------------------------| +| 0 | Core | Stephan Krusche ([@krusche](https://github.com/krusche)) | +| 1 | Exercises | Stephan Krusche ([@krusche](https://github.com/krusche)) | +| 2 | Programming exercises | Stephan Krusche ([@krusche](https://github.com/krusche)) | +| 3 | Build agents | Stephan Krusche ([@krusche](https://github.com/krusche)) | +| 4 | Quiz exercises | Felix Dietrich ([@FelixTJDietrich](https://github.com/FelixTJDietrich)) | +| 5 | Modeling exercises | Stephan Krusche ([@krusche](https://github.com/krusche)) | +| 6 | Text exercises | Maximilian Sölch ([@maximiliansoelch](https://github.com/maximiliansoelch)) | +| 7 | File upload exercises | Maximilian Sölch ([@maximiliansoelch](https://github.com/maximiliansoelch)) | +| 8 | Exam mode | Stephan Krusche ([@krusche](https://github.com/krusche)) | +| 9 | Assessment | Maximilian Sölch ([@maximiliansoelch](https://github.com/maximiliansoelch)) | +| 10 | Communication | Stephan Krusche ([@krusche](https://github.com/krusche)) | +| 11 | Lectures | Maximilian Anzinger ([@maximiliananzinger](https://github.com/maximiliananzinger)) | +| 12 | Atlas | Maximilian Anzinger ([@maximiliananzinger](https://github.com/maximiliananzinger)) | +| 13 | Iris | Patrick Bassner ([@bassner](https://github.com/bassner)) | +| 13 | Athena | Maximilian Sölch ([@maximiliansoelch](https://github.com/maximiliansoelch)) | +| 15 | Tutorial Groups | Felix Dietrich ([@FelixTJDietrich](https://github.com/FelixTJDietrich)) | +| 16 | Plagiarism checks | Markus Paulsen ([@MarkusPaulsen](https://github.com/MarkusPaulsen)) | +| 17 | LTI | Matthias Linhuber ([@mtze](https://github.com/mtze)) | ## Setup and guidelines diff --git a/src/main/java/de/tum/cit/aet/artemis/exercise/web/TeamResource.java b/src/main/java/de/tum/cit/aet/artemis/exercise/web/TeamResource.java index cb748e552a76..e33719fa821a 100644 --- a/src/main/java/de/tum/cit/aet/artemis/exercise/web/TeamResource.java +++ b/src/main/java/de/tum/cit/aet/artemis/exercise/web/TeamResource.java @@ -49,7 +49,6 @@ import de.tum.cit.aet.artemis.core.security.annotations.EnforceAtLeastTutor; import de.tum.cit.aet.artemis.core.service.AuthorizationCheckService; import de.tum.cit.aet.artemis.core.util.HeaderUtil; -import de.tum.cit.aet.artemis.core.web.TeamWebsocketService; import de.tum.cit.aet.artemis.exercise.domain.Exercise; import de.tum.cit.aet.artemis.exercise.domain.Team; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; diff --git a/src/main/java/de/tum/cit/aet/artemis/core/web/TeamWebsocketService.java b/src/main/java/de/tum/cit/aet/artemis/exercise/web/TeamWebsocketService.java similarity index 98% rename from src/main/java/de/tum/cit/aet/artemis/core/web/TeamWebsocketService.java rename to src/main/java/de/tum/cit/aet/artemis/exercise/web/TeamWebsocketService.java index db2f0fee2aa2..bb6620df2f8e 100644 --- a/src/main/java/de/tum/cit/aet/artemis/core/web/TeamWebsocketService.java +++ b/src/main/java/de/tum/cit/aet/artemis/exercise/web/TeamWebsocketService.java @@ -1,4 +1,4 @@ -package de.tum.cit.aet.artemis.core.web; +package de.tum.cit.aet.artemis.exercise.web; import static de.tum.cit.aet.artemis.core.config.Constants.PROFILE_CORE; diff --git a/src/main/java/de/tum/cit/aet/artemis/core/web/LectureResource.java b/src/main/java/de/tum/cit/aet/artemis/lecture/web/LectureResource.java similarity index 99% rename from src/main/java/de/tum/cit/aet/artemis/core/web/LectureResource.java rename to src/main/java/de/tum/cit/aet/artemis/lecture/web/LectureResource.java index c08141d61697..a69bc110de6f 100644 --- a/src/main/java/de/tum/cit/aet/artemis/core/web/LectureResource.java +++ b/src/main/java/de/tum/cit/aet/artemis/lecture/web/LectureResource.java @@ -1,4 +1,4 @@ -package de.tum.cit.aet.artemis.core.web; +package de.tum.cit.aet.artemis.lecture.web; import static de.tum.cit.aet.artemis.core.config.Constants.PROFILE_CORE; diff --git a/src/main/java/de/tum/cit/aet/artemis/core/web/PlantUmlResource.java b/src/main/java/de/tum/cit/aet/artemis/programming/web/PlantUmlResource.java similarity index 98% rename from src/main/java/de/tum/cit/aet/artemis/core/web/PlantUmlResource.java rename to src/main/java/de/tum/cit/aet/artemis/programming/web/PlantUmlResource.java index b855ec1fb984..e110c48d6cbc 100644 --- a/src/main/java/de/tum/cit/aet/artemis/core/web/PlantUmlResource.java +++ b/src/main/java/de/tum/cit/aet/artemis/programming/web/PlantUmlResource.java @@ -1,4 +1,4 @@ -package de.tum.cit.aet.artemis.core.web; +package de.tum.cit.aet.artemis.programming.web; import static de.tum.cit.aet.artemis.core.config.Constants.PROFILE_CORE; import static de.tum.cit.aet.artemis.core.util.TimeLogUtil.formatDurationFrom;