Artemis
Artemis copied to clipboard
`Lectures`: Allow instructors to define relations between learning goals
Checklist
General
- [x] I tested all changes and their related features with all corresponding user types on a test server.
- [x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
- [x] I chose a title conforming to the naming conventions for pull requests.
Server
- [x] I followed the coding and design guidelines.
- [x] I added multiple integration tests (Spring) related to the features (with a high test coverage).
- [x] I added
@PreAuthorize
and checked the course groups for all new REST Calls (security). - [x] I implemented the changes with a good performance and prevented too many database calls.
- [x] I documented the Java code using JavaDoc style.
Client
- [x] I followed the coding and design guidelines and ensured that the layout is responsive.
- [x] Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
- [x] I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
- [x] I added
authorities
to all new routes and checked the course groups for displaying navigation elements (links, buttons). - [x] I documented the TypeScript code using JSDoc style.
- [x] I added multiple screenshots/screencasts of my UI changes.
- [ ] I translated all newly inserted strings into English and German. (Did not translate admin-only interface.)
Motivation and Context
Working towards integrating Adaptive Learning in Artemis, instructors need to be able to define relations between learning goals. This will later allow Artemis to generate Learning Paths between the individual learning goals.
Description
We model a new relation between two learning goals that describes their relation on a graph-like structure (you can imagine directed edges in a graph.). Additionally, a new attribute is added to learning goals to persist their taxonomy.
To make this as versatile as possible, the relation is defined through a new class called LearningGoalRelation
that holds the tail learning goal, head learning goal and the relation type:
- RELATES: A generic relation between two learning goals.
- ASSUMES: The tail learning goal assumes that the student already achieved the head learning goal.
- EXTENDS: The tail learning goal extends the head learning goal on the same topic in more detail.
- MATCHES: The tail learning goal matches the head learning goal (e.g., a duplicate).
To allow you to test this feature, we implemented an admin-only interface with which you to create relations, display them in a graph and remove them again (by clicking on them in the graph).

Steps for Testing
Prerequisites:
- 1 Admin
- Log in to Artemis as admin
- Navigate to Course Administration
- Go to the Learning Goal Management page
- Create some learning goals
- Add some relations between the learning goals and make sure they are persisted
- Remove a relation by clicking on it in the graph
Review Progress
Code Review
- [x] Review 1
- [x] Review 2
Manual Tests
- [x] Test 1
- [x] Test 2
Test Coverage
Class/File | Method | Line |
---|---|---|
LearningGoalService.java | 100% | 96% |
LearningGoalResource.java | 100% | 91% |
Screenshots

there is no feature for Learning goals (yet), so I renamed it to lectures as it currently is mostly related to lecture units. I know we change this in the future, but let's stick (for now) to the features defined in the README on Github and about page on Artemis.
I am happy to add a new feature such as "Competency-based learning" in the future, but we should first add it to the README on Github and the about page (with a minimal documentation) before using it.
@akesfeden Yes, I've noted it down. 🙂