» Direct naar de Hogeschool Rotterdam Rooster website
Een tijdje geleden kreeg ik het idee om iets te maken voor de roosters van de Hogeschool Rotterdam. De modules (lessen) die je moet volgen kunnen in sommige gevallen namelijk verdeeld zijn over verschillende roosters, denk aan het rooster van je klas, minor en eventueel keuzemodules. De roosters zijn in te zien via een website (geëxporteerd naar HTML uit het programma gp-Untis). Deze website is te vinden op een achteraf-adresje (te lang om te onthouden), zijn ongesorteerd en niet altijd bereikbaar.
Om dit allemaal makkelijker te maken had ik het idee om alle roosters te parsen en alle gegevens in een database te zetten zodat je met deze gegevens aan de slag kan om onder andere je persoonlijke rooster te maken. Leuk bedacht natuurlijk, maar zo makkelijk ging het nog niet. Als je leuke dingen wil gaan doen met deze gegevens is het opslaan in een database nog niet voldoende, je zal het een en ander ook moeten normaliseren.
Daar begon het eerste probleem, hoewel de Hogeschool Rotterdam netjes codes heeft verzonnen voor alle modules, docenten en lokalen is consistentie in het gebruik van deze codes in roosters nergens te vinden. De roosters bestaan grofweg uit 2 delen: een week-tabel waar uit is af te lezen welke les op welke uren is geroosterd en een tabel met extra informatie waar naar gerefereerd wordt. Soms bevat het item in de week-tabel enkel de volledige naam van een module, soms alleen de module code of soms helemaal geen informatie over een module. In het geval dat er een volledige naam van een module wordt gegeven en geen referentie naar de tabel met extra informatie mis je de modulecode die erg handig is bij het databasewerk.
Een ander probleem verschijnt bij het herkennen van de gegevens. Het rooster kan ingelezen worden met behulp van DOM, hoewel de roosters zich niet altijd volledig houden aan standaarden. Het gehele rooster is opgebouwd uit meerdere geneste table-elementen maar het leggen van een connectie tussen een bepaalde cel en een module/docent of lokaal code of naam is daar niet mee mogelijk. Mocht een van deze gegevens ontbreken (en dat komt regelmatig voor) heeft dit niet als resultaat dat de cel leeg is maar deze gehele cel ontbreekt. Bijkomend hebben we dan natuurlijk dat er in het rooster niet altijd met de module/docent en lokaal-codes gewerkt wordt waardoor je niet op een notatie-wijze kan afgaan.
Na een keer opnieuw begonnen te zijn met wat betreft het parsen van de roostergegevens had ik dan uiteindelijk een goede manier gevonden om alle informatie uit het rooster te halen en de goede connecties te leggen. Hier en daar heb ik nog wel wat ideeën voor verbetering, bijvoorbeeld daar waar wel de volledige naam van een module wordt vermeld maar geen modulecode. De website zelf was vervolgens niet moelijk meer, hier kon je dan natuurlijk met je eigen gegevens werken wat een stuk makkelijker gaat.
Het resultaat is inmiddels online te zien op www.hrooster.nl, persoonlijke roosters zijn makkelijk op te vragen via een korte url zoals 0801721.hrooster.nl (in de vorm http://<studentnummer>.hrooster.nl dus).
De versie die nu online staat is natuurlijk nog redelijk simpel en bevat de basisfunctionaliteit. Ik zal de komende tijd aan wat verbeteringen en uitbreidingen blijven werken om het geheel wat completer te maken. Een aantal dingen waar ik in ieder geval al aan denk:
- Losse modules toevoegen aan je persoonlijke rooster. Op het moment kan je alleen aangeven in welke klassen je zit en aan de hand hiervan wordt je rooster samengesteld. Het komt regelmatig voor dat je een module moet volgen die niet aangeboden wordt aan heel de klas, je zou dus losse modules moeten kunnen toevoegen aan je eigen rooster. Op het moment is mijn idee dat je een module kiest en een overzicht krijgt met wanneer deze gegeven wordt en aan welke klassen, hier kies je dan een dag/tijd uit. Je loopt uiteindelijk dan een module mee met een andere klas zolang deze in het rooster van de gekozen klas staat.
- Het kunnen opvragen van roosters via MSN. Er bestaat al een tijdje een HRO MSN Bot, maar voor zover ik heb gezien wordt deze niet echt meer onderhouden. De lijst met beschikbare klassen klopt bijvoorbeeld niet, tevens heb je niet het voordeel van je persoonlijke rooster.
- Behalve de roosters van locatie Academieplein ook roosters van andere locaties gaan aanbieden. Hier moet eerst het geheel geschikt voor moeten worden gemaakt. Sommige roosters kunnen mogelijk zonder veel moeite ingelezen worden omdat deze niet erg verschillen met die van locatie Academieplein, bij andere roosters zal hier meer werk in gaan zitten.
- Heel veel kleine aanpassingen zoals betere overzichten (de lijsten nu met paginanummers is niet handig zoeken) en meer informatie weergeven.
- Meer ideeën zijn natuurlijk altijd welkom.
Tot zover de informatie over dit, toch wel uit de hand gelopen, projectje. Ik zal deze blog wellicht gebruiken om op een later moment nog wat informatie te geven over de voorgang van uitbreidingen en dergelijke…