I am currently working as a maths teacher at a small tutorial college, which offers one-on-one tuition.

There are around a dozen tutors and a dozen students at any one time.

Currently timetabling is done in an arcane way; the week is divided into 5 x 8 slots, so there is one Microsoft word template showing this table. Then the secretary creates one copy for each student and one copy for each teacher and fills all the slots in by hand.

This means that every lesson has to get written into two separate documents, one for the student and one for the teacher.

This means that it is possible for things to get out of sync.

It also means doing it at all is a logistical nightmare.

Can anyone recommend a sane solution?

I've been looking through timetabling software, and everything I've seen is far too complicated, or at least far more complicated than anything the school could possibly require.

It's small enough that everything could be done by hand, i.e. no need for some intelligent timetabling algorithm, no need for any of that complexity.

I'm wondering whether to look at creating something out of Microsoft Access that is capable of exporting a word document containing the timetable for each student and teacher.

Requirement would be:

  • a table of students; each student arrives on a certain day and leaves on a certain day, they have x maths lessons, y chemistry lessons, z english lessons, but I think it's probably best just to have a text field into which their requirements can be entered

  • a table of tutors; each tutor has a list of subjects they are willing to teach, but I think this could also be just entered into a text field. each tutor also needs to be able to mark off times or days that they are unavailable

  • for each week, every student and every tutor needs a timetable. adding a lesson in the student's timetable should make it appear at the right location in the tutor's timetable.

  • when adding a lesson in the students timetable, the secretary should be able to visually see the availability of various tutors.

    What I am hunting for at the moment is a range of viable options.

  • 3
    Hello P i, welcome to PMSE! I believe this problem doesn't look like a problem a PM could face. Besides, it seems to be a tool recommendation question, which is considered off-topic as per our FAQ... would you mind updating your question to make it more pm-focused? Thanks!
    – Tiago Cardoso
    Aug 29, 2013 at 16:24
  • You have a process problem when you say Currently timetabling is done in an arcane way. That's not a tools problem, that's a process problem that you might want to revisit.
    – Todd A. Jacobs
    Aug 29, 2013 at 18:23

3 Answers 3



Fix your process problem, then look again at your available options for automating it.

Don't Violate "CodeGnome's Law"

CodeGnome's Law says:

If you can't do it by hand, then you can't automate it. Automation is a tool to increase consistency, but it is not in itself a substitute for a well-defined process or process control.

Your current process violates this law because you describe the process as "arcane" and a "logistical nightmare." It's not just that the process is error-prone; from your description, it sounds like the process is fundamentally broken.

Fix Your Process, Then Pick a Tool

In general, you should revisit your underlying assumptions about your scheduling requirements to validate that they are actually meeting real business needs. You should also re-evaluate why standardized tools won't meet your needs.

Just as an example, consider the following. You say:

the week is divided into 5 x 8 slots

which to me sounds like you could use a calendar or day-planner and simply allocate slots for each day, such as eight 1-hour slots each weekday. You could even block out days and times that are not available for appointments by drawing a line through them.

If that strategy works for you, then you can automate it. For example, Google Calendar allows you to define appointment slots. You can also add recurring all-day events on the weekends, or recurring blocks of time outside of normal business hours, and mark them as "busy." Other products like Microsoft Outlook also offer the ability to define business hours outside of which appointments can be automatically rejected.

These are a few examples of what you can do once you've redefined the problem. I realize that's easier said than done, but it's still an essential first step.


Scheduling is actually an NP-hard problem. That's a fancy computer science way of saying there's no way to produce the best solution for any non-trivial schedule before the heat death of the universe.

There are a number of algorithms that will render "good enough" timetables in much shorter times. The commercial and opensource scheduling programs do that for you. They're written by the PhDs who keep up with the scheduling algorithm literature.

What I'm saying is: yes, you can develop your own software. But I think you will be better off either delegating scheduling to tutors ("here's a shared calendar, sort yourselves out") or picking a scheduling package.

  • +1 for "here's a shared calendar, sort yourselves out." That's a very practical solution that is definitely based on the agile principle of self-organization.
    – Todd A. Jacobs
    Aug 30, 2013 at 0:59

Indeed, a flexible shared calendar could help. Check out Teamup Calendar, teamup.com. Some of the setup work you'd need to do include:

  1. Add one calendar for each tutor and each student.
  2. Limit the time range from e.g. 9am to 5pm, hide weekends, all configurable in the Settings.
  3. Teamup allows unlimited number of access links with cutom access rights, which calendar to be shared/visible or not shared/invisible. This is very important in your case: 1) Create one link for each tutor where she or he has the modifying right to mark unavailable days and time slots. 2) Create one link for each subject with all calendars of tutors who are willing to teach that subject, and of students who need lessons in that subject. Adding lessons would be done on these subject links/views: Currently you need to add each lesson twice, in the tutor's calendar and in the student's. Teamup has planned to allow one event to be assigned to multiple calendars, that'd be ideal but not available yet.
    3) More links can be created for individuals with different responsibilities or needs. The admin has the overview of the entire schedule.

There might be more details to work out. Feel free to email [email protected] for assistance. Good luck!

Disclaimer: I work for Teamup responsible for product management. Always happy to learn user input what's important and how to make the tool better!

  • 1
    Jenny, are you involved in this product somehow? If so, please edit in a disclaimer stating you work for Teamup to adhere to our help center guidelines on self-promotion. Good luck! :)
    – jmort253
    Aug 31, 2013 at 1:08
  • This solution is not going to work, as it requires manually entering the same lesson in two separate timetables: one for the student and one for the tutor. This is the #1 criterion.
    – P i
    Aug 31, 2013 at 13:06
  • No it is not two separate timetables, but in the same one calendar view. Actually you only need to enter the details once, then copy or ctrl-drag and drop it to the same time slot, change it to the other calendar in a different color from the pulldown menu. Try it, you'd easily see what I mean. Or have a look at the tutorial.
    – Jenny Zhan
    Aug 31, 2013 at 20:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.