Skip to content

Conversation

@pascalhuerten
Copy link
Contributor

@pascalhuerten pascalhuerten commented Jun 26, 2025

Pull Request: Erweiterte Kursbeziehungen und Kursprogramm-Typ (MicroDegree)

Überblick

Dieser Pull Request führt Unterstützung für Kursbeziehungen und Programmstrukturen (Microdegrees) im MOOChub-Schema ein. Diese Erweiterungen ermöglichen eine bessere Darstellung von Lernpfaden und Zusammenhängen zwischen Kursen und erleichert damit die Generierung von Kursempfehlungen. Zudem wird es nun ermöglicht auch Programmstrukturen wie MicroDegrees nicht nur als externe Seite zu verlinken, sondern direkt als Metadaten-Objekt im Schema einzubinden.

Wesentliche Änderungen

1. Neuer Kurs-Typ: Program (MicroDegree)

Bisher war es bereits möglich die Zugehörigkeit eines Kurses zu einem Programm über das isPartOf-Feld darzustellen. Allerdings war es nicht möglich MicroDegrees und Informationen zu diesen in geeigneter Form mit in den Moochub-Metadaten zu erfassen. Daher wurde ein neuer Kurs-Typ Program eingeführt, der es ermöglicht, Programme mit spezifischen Anforderungen und Kursbeziehungen zu definieren.

2. Erweiterte isPartOf-Funktionalität

Das bestehende isPartOf-Feld wurde beibehalten, jedoch als CourseReference-Definition neugestaltet, sodass diese auch in den Eigenschaften hasPart und relatedTo wiederverwendet werden kann.

3. Erweiterte hasPart-Struktur

Das hasPart-Feld wurde erweitert, um sowohl zu unterstützen:

  • Lernelemente (Videos, Quizzes, Texte) für reguläre Kurse
    als auch neu:
  • Kursverweise mit Anforderungsebenen (mandatory/elective) für Programme

Zusätzliche Eigenschaften für Kurse innerhalb von Programmen wie Microdegrees:

  • requirementLevel: Definiert, ob ein Kurs im Programmkontext verpflichtend oder wahlfrei ist
  • Unterstützt die Werte: "mandatory" und "elective"

4. Kursbeziehungen (relatedTo)

Beziehungen zu anderen Kursen innerhalb des Moochub-Schemas konnten bisher nur im Rahmen von competencyRequired definiert werden. Hierdurch konnten jedoch nur verpflichtende Vorraussetzungen abgebildet werden.
In Ergänzung dazu soll nun ein neues relatedTo-Feld verwendet werden, um verschiedene Arten von optionalen Beziehungen zwischen Kursen darzustellen. Diese Beziehungen können sowohl für einzelne Kurse als auch für Programme (Microdegrees) verwendet werden.

Ein neues relatedTo-Feld wurde hinzugefügt, das die Definition von Beziehungen zwischen Kursen oder Programmen ermöglicht. Die Items des Arrays enthalten:

  • Kursverweis: Ein Objekt, das auf einen anderen Kurs unter Verwendung einer eindeutigen URL verweist
  • Art der Bezihung: foundation (Grundlage), continuation (Fortsetzung), complementary (Ergänzung)

Beispiel: Microdegree-Programm mit verwandten Kursen

** beispielhaft vereinfachte Darstellung

{
  "data": [
    {
      "type": "Program",
      "attributes": {
        "name": "Data Science Microdegree Programm",
        "description": "Umfassendes Data Science Programm von Grundlagen bis zu fortgeschrittenen Anwendungen",
        "numberOfCredits": 30,
        "hasPart": [
          {
            "title": "Python",
            "url": "https://example.edu/courses/python-basics",
            "type": "Course",
            "requirementLevel": "mandatory"
          },
          {
            "title": "Statistische Datenanalyse",
            "url": "https://example.edu/courses/statistics-fundamentals",
            "type": "Course",
            "requirementLevel": "mandatory"
          },
          {
            "title": "Deep Learning Einstieg",
            "url": "https://example.edu/courses/deep-learning-specialization",
            "type": "Course",
            "requirementLevel": "elective"
          },
          {
            "title": "Computer Vision",
            "url": "https://example.edu/courses/computer-vision",
            "type": "Course",
            "requirementLevel": "elective"
          }
        ],
        "isPartOf": [
          {
            "title": "Informatik Bachelor",
            "url": "https://example.edu/study/informatics",
            "type": "Program"
          }
        ]
      }
    },
    {
      "type": "Course",
      "attributes": {
        "name": "Python",
        "numberOfCredits": 6,
        "isPartOf": [
          {
            "title": "MicroDegree DataScience",
            "url": "https://example.edu/programs/data-science-microdegree",
            "type": "Program"
          }
        ],
        "relatedTo": [
          {
            "course": {
              "title": "Statistische Datenanalyse",
              "url": "https://example.edu/courses/statistics-fundamentals",
              "type": "Course"
            },
            "type": "continuation"
          },
          {
            "course": {
              "title": "Programmierung Grundlagen",
              "url": "https://example.edu/courses/programming-intro",
              "type": "Course"
            },
            "type": "foundation"
          }
        ]
      }
    },
    {
      "type": "Course",
      "attributes": {
        "name": "Deep Learning Einstieg",
        "numberOfCredits": 6,
        "isPartOf": [
          {
            "title": "MicroDegree DataScience",
            "url": "https://example.edu/programs/data-science-microdegree",
            "type": "Program"
          }
        ],
        "relatedTo": [
          {
            "course": {
              "title": "Deep Learning Spezialisierung",
              "url": "https://example.edu/courses/deep-learning-specialization",
              "type": "Course"
            },
            "type": "continuation"
          },
          {
            "course": {
              "title": "KI Ethik",
              "url": "https://example.edu/courses/ethics-in-ai",
              "type": "Course"
            },
            "type": "complementary"
          }
        ],
        "competencyRequired": [
          {
            "title": "Python",
            "url": "https://example.edu/competencies/python-basics",
            "type": "Course"
          },
          {
            "title": "Statistische Datenanalyse",
            "url": "https://example.edu/competencies/statistics-fundamentals",
            "type": "Course"
          },
          {
            "name": [
              {
              	"name": "Daten analysieren",
                "inLanguage": "de"
              }
            ],
            "educationalFramework": "ESCO",
            "educationalFrameworkVersion": "1.2.0"
          }
        ]
      }
    }
  ]
}

Technische Details

CourseReference Schema

Das CourseReference-Schema wird in den $defs definiert und von mehreren Feldern referenziert:

  • isPartOf: Verweise auf übergeordnete Programme
  • relatedTo.course: Verweise auf verwandte Kurse
  • hasPart: Verweise auf Teilkurse in Programmen

Validierungsregeln

  • relatedTo ist optional (kann null sein)
  • programRequirements ist optional (kann null sein für einfache Kurse)
  • requirementLevel ergänzt die Kursreferenz nur in hasPart

Vorteile

  1. Verbesserte Benutzererfahrung: Lernende erhalten bessere Anleitung zu Kurssequenzen und Programmanforderungen
  2. Erhöhte Auffindbarkeit: Verwandte Kurse und Lernpfade werden besser sichtbar
  3. Support für Empfehlungsmaschinen: Liefert reichhaltige Metadaten für KI-gestützte Kursempfehlungen

Rückwärtskompatibilität

Schema für Kursreferenzen innerhalb von "competencyRequired" wird hiebei auf das Schema "CourseReference" umgestellt. Zuvor mussten hier für Kurse wie beim Schema "Skill" ein "educationalFramework" und eine "educationalFrameworkVersion" gesetzt werden. Stattdessen ist das Schema hier nicht mehr ählich zu Skill, sondern gleich wie andere Kursreferenzen, die sich auch bei "isPartOf" oder "relatedTo" wiederfinden. Heißt Moochub Provider und Clients, die bisher schon Kurse im Feld "competencyRequired" schreiben oder auslesen müssen umstellen.

@pascalhuerten pascalhuerten changed the title Feature/microdegrees and related courses MicroDegrees and Enhanced Course Relationships Jun 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant