Shell-Skript / Kurssystem

Started by Jac, August 27, 2009, 05:17:42 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Jac

Moin Moin,
durch Zufall bin ich auf FET gestoßen und bin auf den ersten Blick sehr angetan, wenn auch komplexe Programme (wie dieses) sehr komplex wirken... Aber es lohnt sich, denke ich...

In zweierlei Angelegenheiten möchte ich mich an das Forum wenden:
Das Einrichten der Kurse erscheit mit recht viel Klickerei verbunden zu sein und ich habe eine Idee, das ganze etwas zu vereinfachen. Es wäre toll, wenn mir jemand der erfahrenen User mitteilen könnte, ob das Konzept überhaupt klappen würde (Primär geht es um Kurspläne - die Schüler sind erstmal außen vor):
1. Eine OpenOffice-Tabelle mit mehreren Seiten (Lehrer, Stunden, Kurse) wird erstellt.
2. Die einzelnen Tabellen werden als cvs exportiert.
3. Ein Shell-Skript (bash) liest die cvs-Dateien aus und generiert den XML-Code für FET.
4. Die Datei wird in FET geöffnet
5. FET generiert daraus den Stundenplan.
Hintergedanke ist der, dass die Tabellen nicht erst ex- und dann wieder einzeln importiert werden, sondern durch Schritt 3 die "fertige" .fet-Datei vorliegt und verwendet werden kann. Schritt 3 ersetzt also das Importieren der Lehrer, Fächer, Aktivitätskennzeichnungen, Aktivitäten, Jahrgängen, Gruppen und Teilgruppen sowie der Räume. Alles mit einem Mal drin, ohne dass dann noch alles explizit einzeln zugewiesen werden muss.
Um das Shell-Skript zu schreiben wäre eine fiktive Datendatei mit Zeit-, Kurs- und Lehrerdaten nicht schlecht, da ich noch kein wirkliches Vertrauen in meine Künste mit FET habe, ob alles so richtig ist (s.u.) Daher wäre eine "funktionierende" Datei gut, damit ich die Syntax einer funktionierenden XML-Datei sehe.

---

Zum Zweiten habe ich Probleme, genau zu verstehen, wie die Schüler aufgeteilt werden bei Teilgruppen und diese dann mit Kursen verknüpft werden. Nehmen wir einmal an, eine Schule habe sieben Klassen pro Jahrgang. Die Fächer Mathematik, Englisch und Deutsch werden auf drei verschiedenen Kursniveaus unterrichtet, die sich aber nicht mit den Klassen decken. In Jahrgang 7, 8, 9 und 10 gibt es zwei Kursschienen (1 und 2) und in jeder Schiene vier Mathematikkurse (1x Kursniveau A, 2x Kursniveau B und 1x Kursniveau C), also in Schiene 1 im Jahrgang 8 die Kurse 1M8A1, 1M8B1, 1M8B2 und 1M8C1. Da diese Kurse parallel laufen (sollen / müssen), müssen dort zwangsläufig vier Kollegen unterrichten. Keiner der Kurse besteht nur aus Schülern einer der beteiligten Klassen.
Wie gibt man so etwas bei FET ein? Dass ich den Jahrgang unterteilen muss ist klar  8-) aber wie definiere ich diese Kurse? In Englisch oder Deutsch ist die Situation genau so, aber nicht alle Schüler aus 1M8A1 sind auch in 1D8A1 und 1E8A1, sondern z.B. in 1D8B1 und 1E8B2. Die Zuteilung der Schüler geschieht bei einer entsprechenden Konferenz, so das die Kursgrößen fest stehen und als gleich groß angesehen werden können.

So, ich hoffe, dass die Schilderungen nicht zu kompliziert sind und würde mich über Antworten freuen. Wenn ich Unterstützung dabei bekomme, wie die Syntax der Rohdaten und der XML-Datei ist, schreibe ich gerne das Shell-Skript, wenn ich dazu komme  ;)

Guten Start ins neue Schuljahr!
Gregor

Volker Dirr

#1
Quote[...]
Hintergedanke ist der, dass die Tabellen nicht erst ex- und dann wieder einzeln importiert werden, sondern durch Schritt 3 die "fertige" .fet-Datei vorliegt und verwendet werden kann. Schritt 3 ersetzt also das Importieren der Lehrer, Fächer, Aktivitätskennzeichnungen, Aktivitäten, Jahrgängen, Gruppen und Teilgruppen sowie der Räume. Alles mit einem Mal drin, ohne dass dann noch alles explizit einzeln zugewiesen werden muss.
Um das Shell-Skript zu schreiben wäre eine fiktive Datendatei mit Zeit-, Kurs- und Lehrerdaten nicht schlecht, da ich noch kein wirkliches Vertrauen in meine Künste mit FET habe, ob alles so richtig ist (s.u.) Daher wäre eine "funktionierende" Datei gut, damit ich die Syntax einer funktionierenden XML-Datei sehe.

Also die Räume importiert man nur ein mal im Leben. (Es sei denn es wird mal angebaut :-))
Die Lehrernamen, Activity Tags und Fächer importiere ich nie, da sie beim Importieren von Aktivitäten automatisch importiert werden.
Wichtig ist nur die Schülerstruktur als erstes zu generieren.

Beispieldateien liegen FET dabei. Am besten mal mit dem Beispiel der german_seconday_school arbeiten.

Die Schülerstruktur würde ich nie per Hand eingeben. Entwerder in FET erstellen (mit "teile Jahr automatisch") oder aus der Schuldatenbank importieren. Falls sie mit Schild arbeiten (NRW) einfach noch mal bescheid sagen, dafür habe ich einen Import. Die Datenbanken von anderen Bundesländern habe ich mir noch nicht angeguckt.

Quote
Zum Zweiten habe ich Probleme, genau zu verstehen, wie die Schüler aufgeteilt werden bei Teilgruppen und diese dann mit Kursen verknüpft werden. Nehmen wir einmal an, eine Schule habe sieben Klassen pro Jahrgang. Die Fächer Mathematik, Englisch und Deutsch werden auf drei verschiedenen Kursniveaus unterrichtet, die sich aber nicht mit den Klassen decken. In Jahrgang 7, 8, 9 und 10 gibt es zwei Kursschienen (1 und 2) und in jeder Schiene vier Mathematikkurse (1x Kursniveau A, 2x Kursniveau B und 1x Kursniveau C), also in Schiene 1 im Jahrgang 8 die Kurse 1M8A1, 1M8B1, 1M8B2 und 1M8C1. Da diese Kurse parallel laufen (sollen / müssen), müssen dort zwangsläufig vier Kollegen unterrichten. Keiner der Kurse besteht nur aus Schülern einer der beteiligten Klassen.
Wie gibt man so etwas bei FET ein? Dass ich den Jahrgang unterteilen muss ist klar  8-) aber wie definiere ich diese Kurse? In Englisch oder Deutsch ist die Situation genau so, aber nicht alle Schüler aus 1M8A1 sind auch in 1D8A1 und 1E8A1, sondern z.B. in 1D8B1 und 1E8B2. Die Zuteilung der Schüler geschieht bei einer entsprechenden Konferenz, so das die Kursgrößen fest stehen und als gleich groß angesehen werden können.

Genau hier ist der "klassische" Denkfehler. FET arbeitet ohne Schienen :-)
Vorteil: Wenn die Schülerpläne nicht zu 100% gefüllt sind, erhält man viel bessere Pläne.
Nachteil: Die Dateneingabe ist etwas komplexer als bei Stundenplanprogrammen mit "Schienensystem"

Nehmen Sie am besten einmal eine Beispieldatei german_seconday_school und schauen sie sich die Stundenplane. Dann exportieren sie die csv daten und schauen sich diese an. Dann dürfte ihen einiges klarer werden.

Lesen sie auch einmal die anderen Beiträge in diesem Forum.
Insbesondere
http://lalescu.ro/liviu/fet/forum/index.php?topic=909.msg5294;topicseen#msg5294
und
http://lalescu.ro/liviu/fet/forum/index.php?topic=905.msg5277;topicseen#msg5277

Aus welchem Bundesland kommen Sie?
Welche Schulforum haben Sie?

Jac

Moin,
danke für die schnelle Antwort.
Danke auch für den Hinweis auf die Beispieldatei. Die Stundenpläne sehen ja gut aus auf den ersten Blick, also das Ergebnis, was hinten heraus kommt, ist nett anzusehen. Die CSV-Dateien sind ja recht einfach strukturiert. Da die XML-Datei aus mehreren Sektionen besteht, wäre es m.E. relativ einfach, die CSV-Quelldateien Schritt für Schritt per Shell-Skript abzuklappern und das XML zu generieren... Ich versuche da mal was zu basteln, vielleicht kommt ja was brauchbares dabei heraus. Ich werde dann berichten.

Ich bin in Schleswig-Holstein tätig und lasse mich im Internet wie im wahren Leben von Kollegen gerne duzen, falls mein Gegenüber das auch für eine gute Idee hält :)

Die Schulart ist noch Kooperative Gesamtschule, wird aber in einem Jahr Gemeinschaftsschule.

Noch einmal zum Schienensystem, so denn man doch dies nutzen möchte: Sehe ich das richtig, dass in der genannten Beispieldatei Religion quasi ein Schienensystem ist? Mehrere Lehrer, mehrere Lerngruppen. Was dann zum A-, B- oder C-Kurs wird, ist ja unter der Hand zu klären.

Gruß
Gregor

Volker Dirr

#3
Ja. in der Beispieldatei ist eine "Religionsschiene" und eine "Wahlpflicht-Schiene". Aber wie gesagt, ich habe diese Schiene nie in FET eingegeben. FET hat sich die selbst gesucht.
Um den Unterschied besser erkennen zu können würde ich einfach mal die Anzahl an Stunden pro Tag von 6 auf 8 oder mehr erhöhren und rechnen lassen. Du wirst dann höchstwahrscheinlich sehen, dass diese "Schiene" aufgehoben werden können. Der Plan funktioniert, obwohl keine "Schiene" mehr zu sehen ist.

NACHTRAG:
Ich sehe gerade es ist eine "ältere" Beispieldatei.
Die "Religionsschien" ist "hart" eingegeben und kann nicht aufgelöst werden. Ich habe diese Schiene quasi fest vorgegeben. Man muss allerdings beachten, dass diese Stunden maximal einen Raum belegen können. Um mehrere Räume zu belegen muss noch etwas "getrickst" werden (constraint same starting time mit pseudoiactivities, die nur füe die Raumbelegung sind.)
Der der Wahlpflichtbereich ist eine "weiche" Schiene. Diese Schiene habe ich nicht vorgegeben und kann von FET aufgelöst werden. Hier brauche ich nicht mit den Räumen zu "tricksen".
Wenn ein Schülerplan nicht zu 100% belegt ist, dann würde ich die "weichen Schienen" benutzen, da sie aufgelöst werden können.
Wenn der Schülerplan zu 100% belegt ist, dann kann man auch die "harten" Schienen benutzen. Das berechnen der Pläne ist dann schneller (man hat allerings evt. die Trickserei mit den Räumen.)

hmmm...
Benutzt Ihr nicht DaNiS als Schulverwaltung? Ich würde vorschlagen zu versuchen die Schülerstruktur aus jener Datenbank zu importieren.


Jac

#4
Moin,
ich habe es mal so durchexeziert, wie es für ein Schienensystem wäre: Jahrgang, Unterstruktur Klassen (Gruppen) und dann als Teilgruppen für die Klassen 8a, 8b, 8c und 8d die Teilgruppen 8M1, 8E1 und 8D1 definiert sowie für die Klassen 8e, 8f und 8g die Teilgruppen 8M2, 8E2 und 8D2.

Dann bei der Definition der Aktivitäten für 8M1 die fünf betreffenden Kollegen eingegeben und schon scheint das so zu klappen. Naja, nicht 100%ig, aber das bekomme ich auch noch hin. Vielen Dank erstmal für deine Hilfe!

Gregor

---

Nachtrag 28.08.09:
Kurssystem mit Schienen

Falls es jemanden interessiert, wie man Schienen einbaut: Als Gruppen habe ich die Schienen defniert, also z.B. Deutsch/Schiene1/Jahrgang9. Dann habe ich für jede Schiene die betroffenen Klassen als Teilgruppen definiert.
Kurse im Schienensystem werden dann der Gruppe zugeordnet und Klassenunterricht der Teilgruppe. Zumindest erschien mir das so als brauchbare und annähernd elegante Lösung.

Das war mein Denkfehler, dass ich Gruppe := Klasse gesetzt habe und die Kurse dann Teilgruppen waren. Das führte dann zu zeitgleichem Unterricht in zwei Fächern für eine Klasse und wäre arg kompliziert geworden, wenn man das vermeiden wollte.

Für Wahlpflichtunterricht (alle Schüler eines Jahrganges nehmen zeitgleich an verschiedenen Kursen teil) scheint es nötig zu sein, eine Gruppe dafür zu definieren mit allen Klassen als Teilgruppe. Dann kann de gesamte Jahrgang (oder die Gruppe) Wahlpflicht bei allen beteiligten Lehrern haben. Da nur ein Fach angegeben werden kann, habe ich hier einfach das "Fach" Wahlpflicht erstellt. Welcher Kurs dann was ist, wissen die Kollegen dann schon. 8-)

Shell-Skript
Da die Syntax des XML-Dokuments nicht gleich ist (mehrere Lehrer für einen Kurs o.ä.) wäre das Skripten doch etwas kniffeliger, als ich mir das erst dachte - 1 Kurs, 1 Lehrer ist ja eine gleichbleibende Struktur, aber da die Anzahl der Lehrer für einen Kurs (gerade im Schienensystem) theoretisch unendlich ist, ist da m.E. leider doch nix mit "ich skripte mal schnell..." Better luck next time. Ich werde es nicht völlig aus den Augen verlieren.

Gregor