Most of the detail (i.e. which courses run and when) is hopelessly out of date, and I have removed it from public view. However, if you want to see the equivalent current information, please look at the current departmental timetable
I am trying to avoid 9am lectures (and 9am examples classes and
tutorials, but not 9am labs). I can't do this for the 1st and 2nd
years in semester 1, as this only leaves 20 1.1 slots and I need 22
for 1st + 2nd years - I have to use at least 2 9am lectures in
semester 1 (but I will still try to avoid Monday 9am, and I will see
if I can avoid small lectures at 9am, as that just gives students an
extra reason not to chose them).
The 2nd semester is similar.
However, I can't do this for 3rd (and 4th) years except by having
two lectures at once (because no student goes to both) in several
slots - but this is both unlikely and risky (students change their
minds) so I don't think it will help significantly.
e.g. last year, students did not pick the following pairs:
(CS3411,CS3132) (CS3411,EM2491) (CS3411,EM2502)
(CS3212,CS3241) (CS3212,CS3262) (CS3212,CS3311)
(CS3212,CS3321) (CS3212,CS3382)
which means that, this year, at most I can save 2 lecture slots in
each semester by having CS3411 at the same time as CS3131 (semester
change) or EM2491, and CS3212 at the same time as CS3262 or CS3382.
As part of this, I have to decide how many lab slots and lab groups are necessary for 1st-year lab and 2nd-year lab
Why are there 4 (main) 1st year lab groups, but only 3 2nd year lab
groups?
a) In the 1st year, there are 4 main activities that can run in
parallel: Unix lab, Windows lab, Engineering lab, and
Examples/Tutorials. By the 2nd year, the Engineering lab is barely
used (CS221 and CS224 have a couple of dozen students each) so there
are only 3 main activities that can run in parallel.
b) The biggest labs seat about 65 students, and in the 1st year
there are more than 3*65=195 students, but by the 2nd year student
numbers have fallen and, more importantly, most course units are
optional. The only 2nd year course units with excessive numbers are
probably CS2011, CS2092, and CS2341 - this year I may need a 4th lab
for CS2341.
It seems that in each semester I need 7*1st-year and 6*2nd-year
2-hour lab slots (and some need to be combined into 4-hour slots).
However, looking in more detail, it is clear that (if only I could
solve the bigger problem) I could do better:
In the 1st semester, the maximum number of slots for the 1st year
lab is dominated by the Windows lab (CS1031, CS1311), but there are
3 unused Windows slots in the 2nd year lab timetable.
Similarly, in the 2nd semester, the 1st year is dominated by the
Unix lab (CS1052, CS1062) (although I am not yet sure what to do with
CS1412), and there are at least 2 unused Unix slots in the 2nd year
lab.
However, I don't dare get bogged down at that level of detail.
Also note that this is ignoring labs for CS1511, CS1522 and CS1532,
which will probably use some of the spare slots. Also, this will not
make much difference in making better use of 1.1
Instead, I note that, if I allocate a 4-hour lab slot, it can only be 9am-1pm or 1pm-5pm, and (except for Wednesday morning) this then forces the lunch-time to be 1-2 or 12-1 respectively. If I have e.g. a 4-hour 1st-year lab in the morning and a 4-hour 2nd-year lab in the afternoon (the maximum in any one day) then neither 1st-years nor 2nd-years can use 1.1 between 12noon and 2pm. This is potentially a waste of 1.1 (except that there are more 1.1 slots available than I actually need, so I can afford to waste a few), as the 3rd-year can only use at most 1 of these 2 slots (they also need a lunch-hour). The only exception to this is Thursday 12-2, when non-CS students are using 1.1 anyway.
OK, so I want to minimise 4-hour lab slots (except maybe on
Wednesday and Thursday) but I need 1 (maybe 2) 4-hour lab slots in the
1st year 2nd semester (CS1222), and 1 4-hour (not 3-hour, as I split
the 4-hours into 2 different 2-hour activities in other rooms) lab
slot in each semester in the 2nd year (CS2211, CS2242).
From the point of view of making a "nice" timetable, it is better
to have labs first thing in the morning or last thing in the
afternoon, rather than in the middle of the day with lectures before
and after. (Apart from anything else, I think a 9am or 4pm lab is more
acceptable than a 9am or 4pm lecture.)
In 1 week, there are a maximum of 9 such 2-hour slots, plus 3
extra on Wednesday and Thursday, giving a total of at most 12.
Unfortunately (apart from trying to interleave the 1st and 2nd year
labs, which I just don't dare) I need 13 2-hour slots, so I need at
least one more 4-hour lab slot. It would be best if this was at a time
when 3rd years are available to use the lunch-time slot in 1.1 that
would otherwise be wasted.
In the 1st semester, the PS options mean that I have lost Tuesday
lunchtime anmyway, so I might as well use that time for 4-hour labs in
the same way as for Thursday. Monday lunchtime is filled up by MT
lectures and BM seminars, so Monday morning could be used for a 4-hour
1st year lab. I have to decide which of the possible lab slots is not
needed. (Although it is very tempting, I can't have 1st year lab on
Monday 3-5pm as that will not give enough hours of lab for students
taking PS options.)
However, in the 2nd semester, there is no such obvious choice,
except that I have the same problem with Monday lunchtime. Because of
MT166/72, Wednesday 11-1 cannot be a 1st year lab slot, and because of
the CS1532 lab, it does not look like a good 2nd year lab slot unless
that is the only slot when the Windows lab is unused. The only
lunch-time that 3rd years can use is Tuesday, so that is the best
candidate for a 4-hour lab slot. One awkwardness is that both 1st and
2nd years would do best with the afternoon lab slots on Tuesday and
Thursday, rather than the morning.
Thus, we have: semester 1 semester 2
I have just discovered that CM and CSwBM can't take CS205 and CS204, CSwBM can't take CS221, and CM can't take CS231 or CS235. (Last year, 13/32 CSwBM and 1/23 CM took CS205, and I will leave this option in.) I have only done the 1st semester so far, and it doesn't make any significant difference there, but I will incorporate it into the 2nd semester before I continue.
In more detail, putting in all information about room, student and lecturer
availability, and allocating course units to slots whenever possible:
-> semester 1
semester 2
(key)
I find this very scary - as soon as I pick out the pattern of 1st/2nd year lab times, most of the allocations of lecture to slots are forced! This just shows how close we are to not being able to have a timetable at all!
Note that this year, it has turned out to be better to deal with the full details of the use of 1.1 as early as possible, whereas what I did in previous years assumed it was better to postpone some details to later.
The timetable so far does not go into much detail for the 3rd
years - I have only positioned the larger lectures, that go into 1.1.
Let's start to look at the problem of timetabling the rest of the 3rd
year lectures. Luckily, the delay means that I now have much better
information about the combinations of course units that students want
to do (although some information will be missing or wrong):
2nd-year
3rd-year
I have summarised the 3rd year information
OK, looking at the current 3rd year timetables and counting slots
required and available, I have the following:
semester 1
semester 2
This is how I created the detailed 1st-year and 2nd-year labs timetables, including some possible slots for examples classes and 1st-year tutorials. (To help illustrate the process, here is a previous attempt at a 1st-year lab timetable for semester 1 which shows one way of going about it, but unfortunately refers to an earlier version of the lab slots.)
examples classes and tutorials