Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adaptive learning: Extend learning path feature to recommend sequence of lecture units and exercises #7113

Merged
merged 356 commits into from
Oct 13, 2023

Conversation

MaximilianAnzinger
Copy link
Collaborator

@MaximilianAnzinger MaximilianAnzinger commented Aug 30, 2023

⚠️ Stacked on #7091 please don't merge accidentally

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) database calls.
  • I followed the coding and design guidelines.
  • I added multiple integration tests (Spring) related to the features (with a high test coverage).
  • I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
  • I documented the Java code using JavaDoc style.

Motivation and Context

We want to provide a sequential order of lecture units and exercises for students participating via the learning paths feature.

Description

This PR adds the second half for generating this sequential order by recommending an order of learning objects within the competencies.
The LearningPathService is now split into the LearningPathService that should be used by other components and the sub-services LearningPathRecommendationService and LearningPathNgxSercive that handle the corresponding sub-tasks.
In addition to recommending an order of competencies, the recommendation now includes a suggested order of the learning objects (lecture units and exercises). The recommender will select exercises by difficulty level according to the prior performance of the student and also recommend repetitions of already completed exercises if the achieved score is comparably low.

Steps for Testing

Prerequisites:

  • 1 Instructor
  • 1 Student
  • 1 Course with at least one competency and learning paths enabled
  • exercises and lecture units for each type linked to competency
  1. Log in to Artemis as Student
  2. Navigate to the Learning Path participation view in the course
  3. Make sure the visualized graph on the left side of your screen is displayed as expected (no mastered competencies displayed, the competencies are ordered sequentially/a chain from top to bottom excluding the nodes for the learning objects, and the recommended lecture units/exercises are a linear chain between the competency start and end nodes)

Review Progress

Performance Review

  • I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance
  • I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Test Coverage

Server

Class/File Line Coverage Confirmation (assert/expect)
CompetencyProgressService.java 91%
CourseService.java 89%
ExerciseService.java 96%
LearningObjectService.java 89%
ParticipantScoreService.java 96%
LearningPathNgxService.java 97%
LearningPathRecommendationService.java 98%
LearningPathService.java 98%
CompetencyResource.java 97%
CourseResource.java 94%
LearningPathResource.java 91%

Screenshots

As this PR doesn't change the UI there are no screenshots of shiny new components, just a comparison between the old graph received from the server (in participation view) and the new one:

Previously:
Screenshot 2023-08-31 at 11 47 07

Now (excludes completed exercises and displays linear path):
Screenshot 2023-08-31 at 11 52 00

MaximilianAnzinger and others added 30 commits July 29, 2023 12:21
Co-authored-by: Johannes Stöhr <[email protected]>
@bassner bassner dismissed stale reviews from Kroko-fant, nityanandaz, tobias-lippert, JohannesStoehr, and lennart-keller October 9, 2023 09:25

The base branch was changed.

JohannesStoehr
JohannesStoehr previously approved these changes Oct 9, 2023
Copy link
Contributor

@JohannesStoehr JohannesStoehr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reapprove Code after merges

Copy link
Contributor

@Strohgelaender Strohgelaender left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code lgtm

Copy link
Contributor

@tobias-lippert tobias-lippert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested in testing session on ts1.

Copy link
Contributor

@nityanandaz nityanandaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks fine

Copy link
Contributor

@florian-glombik florian-glombik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested on ts1, the described use case worked fine (split path is now displayed sequentially)

A view points out of scope for this PR:

  • the continue button was always disabled (not quite sure if the up down arrow solution is in another PR)
  • I did not understand how to delete and modify competency relations
  • Deleting a competency that is linked via relation did not work (400 as response)

@MaximilianAnzinger
Copy link
Collaborator Author

@florian-glombik thank you for your review 👍

  • the continue button was always disabled (not quite sure if the up down arrow solution is in another PR)

the continue button & sidebar is reworked and fixed in #7235

  • I did not understand how to delete and modify competency relations

this is unrelated to this PR, but you can click on the respective edge and delete it that way.

  • Deleting a competency that is linked via relation did not work (400 as response)

do you know if this is also the case on develop? I'll take a look at it but this is an unrelated issue.

@bassner bassner added this to the 6.6.0 milestone Oct 13, 2023
@bassner bassner merged commit 88744fc into develop Oct 13, 2023
11 of 13 checks passed
@bassner bassner deleted the feature/learning-path/learning-object-recommendation branch October 13, 2023 16:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no-stale ready to merge server Pull requests that update Java code. (Added Automatically!) stacked-pr PR that depends on another PR tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants