Skip to content

Commit

Permalink
Merge branch 'develop' into feature/development/parsing-client-sided-…
Browse files Browse the repository at this point in the history
…REST-api
  • Loading branch information
Jan-Thurner authored Aug 6, 2024
2 parents b706f53 + eb5b9bd commit 2960f24
Show file tree
Hide file tree
Showing 269 changed files with 7,511 additions and 2,506 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ Refer to [Using JHipster in production](http://www.jhipster.tech/production) for
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):

```shell
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-7.4.5.war
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-7.5.0.war
```

## Architecture
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ plugins {
}

group = "de.tum.in.www1.artemis"
version = "7.4.5"
version = "7.5.0"
description = "Interactive Learning with Individual Feedback"

java {
Expand Down Expand Up @@ -331,7 +331,7 @@ dependencies {
implementation "tech.jhipster:jhipster-framework:${jhipster_dependencies_version}"
implementation "org.springframework.boot:spring-boot-starter-cache:${spring_boot_version}"
implementation "io.micrometer:micrometer-registry-prometheus:1.12.6"
implementation "net.logstash.logback:logstash-logback-encoder:7.4"
implementation "net.logstash.logback:logstash-logback-encoder:8.0"

// Defines low-level streaming API, and includes JSON-specific implementations
implementation "com.fasterxml.jackson.core:jackson-core:${fasterxml_version}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ The CI Management has access to the database and the file system.


The CI Management subsystem implements the ``ContinuousIntegrationTriggerService`` interface, the ``LocalCITriggerService`` which provides the ``triggerBuild`` method. This method gets called whenever a repository needs to be tested, i.e. after creating a programming exercise or when a student submits code.
When the ``triggerBuild`` method is called, all necessary information necessary to execute the build job is prepared and used to create a ``LocalCIBuildJobQueueItem`` object. The object contains, among other things, repository URIs, the build configuration, a user-defined build script (prepared by the ``LocalCIScriptService``) and a priority value.
The priority value is determined based on whether the programming exercise is part of an exam or not. The exercise due date is also taken into account. This object is then added to the job queue where it will then be retrieved by a build agent to execute the build job. The following diagram shows the structure of the ``LocalCIBuildJobQueueItem``:
When the ``triggerBuild`` method is called, all information necessary to execute the build job is prepared and used to create a ``LocalCIBuildJobQueueItem`` object. The object contains, among other things, repository URIs, the build configuration, a user-defined build script (prepared by the ``LocalCIScriptService``) and a priority value (more details :ref:`here <ci_priority>`).
The exercise due date is also taken into account. This object is then added to the job queue where it will be retrieved by a build agent to execute the build job. The following diagram shows the structure of the ``LocalCIBuildJobQueueItem``:

.. figure:: /dev/system-design/integrated-code-lifecycle/Integrated_Code_Lifecycle_Build_Job_Item.svg
:align: center
Expand All @@ -95,6 +95,25 @@ The service provides the functionality for an Artemis user to interact with buil
The user can access this functionality using the UI over a set of endpoints provided by a REST API.
The ``LocalCIResultProcessingService`` retrieves the build job results which were generated by the build agents from the result queue. It is responsible for grading the build job results, notifying the user and persisting information on the build job execution in the database.

.. _ci_priority:

Priority Calculation
""""""""""""""""""""
Build jobs are assigned a priority value when they are added to the job queue. This value is used to determine the order in which build jobs are executed.
The higher the priority value, the sooner the build job is executed.

The priority value is determined based on several factors related to the programming exercise and its context.
Exercises that are part of an ongoing exam are given the highest priority of ``1`` to ensure quick feedback.
Exam exercises that are part of a test exam or a test run within an exam are assigned a priority of ``2``.
Submissions made after the due date, such as those in practice mode or finished exams, receive a lower priority of ``3``.
Optional exercises, which are not included in the overall score, are also assigned a priority of ``3``.
If the build is part of a batch, for example, if an instructor triggers a re-build of all submissions of an exercise, it is assigned the lowest priority of ``4``.
If none of the above conditions apply, for example, exercises that are part of a real course and not part of an exam, the priority is set to ``2``.
Additionally, if the exercise is part of a test course, a penalty is added to the priority, making it less urgent. The penalty is implemented by adding a value of ``5`` to the priority.
The priority calculation is implemented in the ``LocalCITriggerService``.



Build Agent
^^^^^^^^^^^

Expand Down
24 changes: 23 additions & 1 deletion docs/user/adaptive-learning/adaptive-learning-instructor.rst
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Instructors can manage competencies and prerequisites of a course in the *Compet

* View all competencies and prerequisites of their course
* Create, edit or delete competencies and prerequisites
* Manage relations between competencies (which are necessary to build learning paths)
* :ref:`manage_relations` between competencies
* :ref:`import_competencies` from other courses or the :ref:`standardized competency catalog<standardized_competency_catalog>`
* :ref:`generate_competencies` using LLMs

Expand All @@ -59,6 +59,26 @@ Alternatively, instructors can also link competencies to an exercise or lecture

|instructor-competency-link|

.. _manage_relations:

Manage Relations
^^^^^^^^^^^^^^^^

| An Instructor can create relations between competencies by selecting a source and target competency from the dropdown menus.
They can also set a relation type, which can be one of the following:
* *Assumes*: The head competency assumes the knowledge of the tail competency but does not deepen it. E.g. Class diagrams assume knowledge about object-oriented programming.
* *Extends*: The head competency builds upon the knowledge of the tail competency and deepens it. E.g. Inheritance deepens the knowledge about object-oriented programming.
* *Matches*: The knowledge of the head and tail competency match each other.

| The relations are displayed in a diagram below the form and can be deleted by clicking on them.
.. note::

Relations are necessary for the learning path generation. Without them, Artemis cannot suggest a reasonable order of competencies for students.

|instructor-competency-relations|

.. _import_competencies:

Import Competencies
Expand Down Expand Up @@ -149,6 +169,8 @@ Once the feature is enabled, instructors get access to each student's learning p
:width: 1000
.. |instructor-competency-link| image:: instructor/competency-link.png
:width: 600
.. |instructor-competency-relations| image:: instructor/competency-relations.png
:width: 1000
.. |instructor-generate-competencies| image:: instructor/generate-competencies.png
:width: 1000
.. |instructor-competency-recommendation| image:: instructor/competency-recommendation.png
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/user/exams/student/exam_end_screen.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ module.exports = [
'no-case-declarations': 'off',
'prefer-const': 'warn',
'prefer-spread': 'warn',
'no-var': 'error',
'sort-imports': [
'error',
{
Expand Down
7 changes: 4 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,18 @@ hibernate_version=6.4.9.Final
opensaml_version=4.3.2
jwt_version=0.12.6
jaxb_runtime_version=4.0.5
# TODO: we cannot update to 5.5.0 because we currently use the CP Subsystem for fenced locks, however CP Subsystem is only available to Enterprise customers
hazelcast_version=5.4.0
junit_version=5.10.2
mockito_version=5.12.0
fasterxml_version=2.17.2
jgit_version=6.10.0.202406032230-r
sshd_version=2.13.1
sshd_version=2.13.2
checkstyle_version=10.17.0
jplag_version=5.1.0
slf4j_version=2.0.13
sentry_version=7.12.0
liquibase_version=4.28.0
sentry_version=7.13.0
liquibase_version=4.29.1
docker_java_version=3.4.0
logback_version=1.5.6

Expand Down
Loading

0 comments on commit 2960f24

Please sign in to comment.