All of our modules fit nicely into academic sessions… except 2, the MSc projects, which last into the first semester of the year AFTER they start.
In several places I need to work with all “current” modules: The student homepage needs to show them all the modules they are currently on, up to now I’ve just had to search the current session. Also I need to show students their project examiners and vice versa, but by default my system was showing these as last years relationships rather than current, as we’re now in 0910 rather than 0809.
My rather hacky solution is to maintain a list of modules for each session which should be shown in semester 1 of the next year. This is a cheap and dirty hack but got done in an hour.
What I should really do is give every module a start and end date and test which are current, however I can just see the start/end date data getting out of sync. A middle road might be to keep an “exceptions” list, then build start & end dates via a script. Then there’s the question of an end date — as we need to keep them open until after referrals etc.
The thing is, this only impacts 1% of our modules, so, sadly, I think the hack’s the right solution. I just don’t have the resources to re-engineer the whole system for one special case. If we ever rebuild the system we’ll know better next time.
UPDATE: after thinking it over and discussing with other staff, I think the best long term solution is to add a table for “module expiry date” which will be module_id, session_id, date. This is only used for modules which last into the next session and the canonical list of active modules are all those where the session_id is the current academic session PLUS all those with a expiry date and that date still in the future.
MSc projects aren’t so simple: they start as soon as the student has passed the examined modules and finish 3 months (or so) later. This means that there are a number of students who don’t start until the end of September and finish at Christmas. Or later.