Using OmniPlan for Teaching

It's that time of the year when teachers everywhere start to think about the next academic session. School children everywhere think of it as "the first day of the summer holidays" but little do they know.

One of my most important tools for getting the year right is OmniPlan. It may not be entirely obvious how to apply a Gantt chart-based project planning tool to the classroom but I'm really an engineer at heart so over-analysing things is absolutely my core competency.

It's beyond the scope of this blog post to explain Gantt charts but if you roughly know what they are - or can follow that link to Wikipedia - I can walk you through the steps I take to design a work plan that I know will fit into the school year.

Step 1: Get the Schedule Right

The first thing I do is block out when the school year starts, ends and is interrupted by holidays. By default, the project in a new OmniPlan file starts on the date you create the file. That's not what you want when planning the school year during the holidays; you want the project to start at 9am on the first day of term.

Set the project start date to the start of term.

This is really important because it sets the basic constraint of the whole year: you can't start teaching classes until the kids arrive.

One other thing I like to change from the defaults: OmniPlan will group hours into days and weeks at the rate of 8h per day and 40h per week. For teaching, I prefer to only think in terms of hours so I go to Inspectors > Project > Formats and turn off Days and Weeks for both Duration and Effort.

Step 2: Block Out the Holidays

The next thing I do is create milestones for the first and last days of the school year, and any holidays in between. I create the milestone to be the "closing day" and the exact time because then, if you need to, you can require that certain tasks come before those milestones.

I also make sure the milestones are timed exactly for the end of the school day. After all, some mean teachers like me actually schedule work on the last day of term!

Milestones for Start and End of Term

An important part of using OmniPlan, which I have only recently come to appreciate, is the idea of using resource loading to ensure you don't plan too much work. A big part of getting this right is declaring exactly when you have the class available to you.

The next thing I do is switch to OmniPlan's resource view and set up the class periods as separate resources. The exact way I do this depends a little bit on the timetable. If I have three separate periods each week, I'll create three resources named "Period 1", "Period 2" and "Period 3". If I have two double periods, I'll set them up as two resources. This is really a matter of taste and your teaching style: I don't like to schedule two completely different lessons for each half of a double period.

Finally, I switch to OmniPlan's calendar view and set up the 'working week' for each class period. OmniPlan allows you to declare the times when resources are available. There are two calendars: one for the overall working week for the project and specific calendars for the availability of each resource. I take three steps here to customise this from the defaults.

First, I change the 'working week' for the overall project to be one unbroken block of time stretching from 0900 on Monday to 1530 on Friday. That's the normal work week for our school.

Setting the School's Work Week

Next, I click on "Extra and Off Hours". This is where you can declare - for the whole project - weeks in which either nobody will work ("off hours") or extra work time is available. In school, you never get additional class time on an occasional basis (at least none that you can plan on months in advance) but you do get off hours: school holidays.

The next thing I do is go through the school year and add off-hours for school holidays. I navigate to the correct month and drag out an off-hours block to wipe out the whole working week.

Setting School Holidays as Off-Hours

This may seem like a lot of work but it's absolutely fundamental to getting the scheduling right. If you plan 35 hours of class activities and there are only 30 periods in the term, you're busted. If you get the scheduling right, OmniPlan will make this obvious to you.

So now we have milestones for the start and end of the year, the end of each term and OmniPlan will correctly account for the 'missing time' in the form of holidays.

Step 3: Save a Template

Setting this up for the school year is a lot of work, so you don't want to do it more than once. OmniPlan allows you to save a file as a template and then create new projects from the template. Do this now with File > Save as Template...

Step 4: Start Blocking Out Class Time

Now I start making individual projects for each class. Some years, I have tried to unify everything into one grand plan for the year, including all my classes in the one project. This typically is far too unwieldy to be useful, even on a large computer screen, so I now prefer to make one project file per class.

At this point in the year, I usually know the number of periods I'll have for a class but won't always know when those periods will be. What I do at this point is give each class period a specific hour in the week, even if it's not totally accurate, it's enough to plan with and can be adjusted later.

I go to OmniPlan's calendar view, select a particular resource, and customise its work week from the school's default. To do this, just delete the block that's there (it will be the same as the project's work week) and drag out another block where the class will be.

Customising a Class Period Work Week

So now we know how many class resources we have to assign to given activities. The next question: what are the activities?

Step 5: Start Shaping the Course

The next thing I do is start to enter the broad topics I want to cover in the year and an estimate of how many hours I want to spend on each of them. As I get better at teaching, I'm getting better at estimating how long certain things will take. For this first cut, though, I'll just try and fit topics to terms.

Generally, I like to plan on a termly basis. I don't like to have topics starting halfway through a term or over-running into the next term if I can avoid it.

Unallocated Tasks

At this point, we still don't know if this will work. We've laid out the topics but we haven't allocated any class time to them. It looks like we'll get all the teaching done in the first week of term but you obviously can't teach five different topics at the same time.

The next step is to allocate some class time to these topics. The easiest thing to do is to allocate all your periods to each task. The net result is that you'll basically teach them in-order, using all your class time for one topic at a time. This is often the way things are done.

Allocated Tasks, using all class time for one topic at a time

Now we know whether the proposed topic lengths will fit into the term structure. If you don't mind topics breaking over term boundaries, then you can just continue on from here.

Sometimes, though, you want something other than "all my time on one topic at a time". This is why I create each class period as a separate resource: it lets me have a "special period" in the week where we do one topic all year for a small amount of time each week.

One long-running topic

In the example above, I've allocated periods 1 and 2 to the first four topics. The last topic - Battle Re-Enactments - we only do for one period a week but we do it over a longer part of the year. This is probably a rarer way to structure a course than the "everything on one topic" approach but it can be useful at times.

Finally, I like to reorganise the tasks into rough chronological order and start shaving off or adding hours to fit.

Chronological Tasks


When I first started using OmniPlan to design the school year, I did a few things wrong. Firstly, I used to use dependencies to force things to happen in a specific order. Today, I prefer to use resource loading and manual sorting to determine when things will happen. In the absence of any other constraints, OmniPlan will schedule tasks in their order from top to bottom. Today, I keep dependencies for things that genuinely depend on other things having happened.

For example, if I schedule a specific class for assessment, those assessments can only happen when the teaching is complete for the topic. Those two tasks clearly have a dependency. Another good example is exams: everything must be done before the exam!

The second mistake I made was to ignore Start Constraints. I should have been using these instead of introducing false dependencies. A start constraint says "this task cannot start before a certain date but can start any time after". I now use these to force certain tasks into a particular term. If I don't want certain topics scheduled until after Christmas, I give them a Start Constraint that's the first day back in January and they won't be scheduled until then. This is much clearer than making a milestone for "opening day in January" and having everything after that depend on the milestone. Those tasks don't actually depend on the milestone.

Another big mistake that it's easy to make when playing World Leader Pretend in OmniPlan is to forget about the reality of school life. Does it really make sense to schedule a big assessment on the last week of school in December? What if you're wrong about how long some of this stuff takes? Did you build in any slack at all? No? Oops.

No battle plan survives first contact with the enemy and no teaching plan survives first contact with either the pupils or the great ideas that other teachers had during the holidays. Don't forget that teaching needs a human touch, flexibility and a sense of humour too.