Interessante Aufgabe. Ich würde die Lösung mit Bitoperatoren für UND//OR angehen. Hierfür muss für jeden Kurstype ein numerischer Basiswert aus dem Dualsystem überlegt werden und zwar so daß die Verknüpfung einen eindeutigen Wert ergibt aus dem die darin enthaltenen Kurstypen erkenntlich sind.
Ansatz mit 4 Kursen:
1 1 1 1
| | | |_ Kurs A
| | |
| | |_Kurs B
| |
| |_ Kurs C
|
|_ Kurs D
Magister = 2^0 + 2^1 + 2^2 + 2^3 (alle Kurse)
Bachelor = A + B oder A + C
Beginner = A
HI = D oder C
usw.
So ergeben sich numerische Werte die eindeutig beschreiben welche Kurse belegt sein müssen für einen bestimmten Abschluss. Wobei diese Werte logisch veknüpft werden können.
Anders ausgedruückt: Gibt den Kursen numerische Wertigkeiten dann kannst Du damit rechnen.
Denke an die Skalierbarkeit!
Also ich finde die Idee richtig gut.