Home Topic 4 Last Next


Identify pre-planning in a suggested problem and solution.


Teaching Note:

Gantt charts.

Pre-ordering. Pre-heating an oven. Home/locker/knapsack.

Caching/pre-fetching. Building libraries of pre-formed elements for future use.

LINK Thinking procedurally, thinking concurrently. Connecting computational thinking and program design, introduction to programming.


Sample Question:


JSR Notes:

Intro: The Importance of Planning, and Planning itself

4.1.9 talks about inputs and output; this assessment, statement, 4.1.10 talks about "pre"-planning; and then we get into 4.1.11 and 4.1.12, pre-conditions and post-conditions - things that should be thought through when planning individual methods, along with thinking about exceptions that can happen; and planning what to do in each case with 4.1.13. But nowhere in this Thinking Ahead section is the general concept of planning, itself, put into focus!!

So keep in mind with all of the Thinking Ahead section, that the ideas all start and end with the fact that planning itself is so, so, so important in programming and software development. When you don't plan properly, you can end up having to re-work things, and end up losing months of work, or worse still, your final product can be rejected by your client.

As the saying goes: "Weeks of programming can save hours of planning". With which, the point is that it's actually hours of planning that can save weeks and weeks of correcting and re-correcting improperly planned coding.

And, yes, all of "pre"-planning, thinking about inputs and outpus, pre-conditions and post-conditions for each method, and exception planning are part of planning, but there's also the planning part of planning iteself. And it's with planning itself that details are fleshed out in some sort of a "chronological development plan". Often this takes the form of a GANTT chart - see below - which can be more outline-form, or very detailed, actual, planning.


A. Pre-planning as outlining your planning

But, back to this assessment statement, and the part of planning, which is "pre"-planning. There are actually a couple of different ways of thinking of "pre"-planning.

First of all, we can think of pre-planning as a first stage of planning in which we map out the broad parts of the overall process that will need to be further planned and outlined. In other words, the first, broad stokes of a planning process, in which you first simply identify the things that need to be planned. In this sense, we could say that pre-planning is listing things to plan, versus the actual detailed process of full planning.

Example: Pre-planning & your IBCS IA

For your big IBCS internal assessment, you will be planning, designing, programming, and impementing an original Java program for an identified client with an identified problem to solve.

The first criteria on which you are graded is Criteria A - Planning. To get an idea of some of these planning tasks, you can take a look at the IA Guide, Stages ("Criterion") A. But in terms of "pre"-planning, as in meaning the list of things to plan, here is what is suggested:

And so that structure, in an of itself, can be seen as the "pre"-planning.

: Pre-planning & your IB Extended Essay

Likewise, the outlined stages of your EE process, as seen on Mr Kelly's GANTT chart (below) are:

These, then, are the "pre"-planning stages that you have to start thinking about, and eventually flesh out into step-by-step full planning.

B. Pre-planning as "Laying the Groundwork"

The other way of looking at "pre"-planning is in terms of things that can be done ahead of time; maintenance-type jobs that have to be done sooner or later, and might as well be done up-front, even before planning for a specific job takes place. The idea here is that quite often in life, we are able to prepare for the "main event", well in advance. We "lay the groundwork" as the expression goes. Or "we line up all our ducks". And the more you can do this sort of thing, the better an event/activity or programming project is bound to go.

Along with the outline steps of a GANTT chart, the Teaching Notes also definitely point toward this way of looking at "pre"-planning.

Teaching Note General Examples
: "Pre-ordering. Pre-heating an oven. Home/locker/knapsack."

In any situation where items are needed, be it a store, or going on a holiday, there are often things that need to be ordered. That can be done last minute, on the day, but much better is to do all of that well ahead of time. It would be wise for the school store to order lots of books and uniforms well ahead of the opening day of school, for example.

And let's say you have a pizza stall at a sporting arena, in which you sell pizza primarily at the intermissions; just before the intermission, it makes sense to pre-heat the oven.

General Example: Pre-plannnig for an IASAS sporting event

You, theoretically, could hold an IASAS sporting event, gathering up and doing things as you go last minute, but it would be better to, ahead of time:



Teaching Note IT Example: "Building libraries of pre-formed elements for future use"

Building libraries of code ahead of time is another thing that, since it can be done ahead of time, why not? and that way when it comes time to use those libraries, the classes and procedured do not have to be collected; they are already there to be used. This speeds up "the main event".

The example I used in class was coming up with a bunch more sorting algorithms than you currently have. You don't necessarily locate and tweak these as you go, rather, you know sorting is something you'll need to do lots of, lots of different ways, so ahead of time you collect and prepare sorting libraries to use.


Teaching Note IT Example: "Caching/pre-fetching"

Caching is used in many senses in CS, but in terms of planning, similar to gathering up libraries of code, ahead of time, you can also gather up data, and in doing so "cache" it for use later on.

The example of this I used in class was Microsoft and other companies buying up smaller companies like Discord to get a hold of all their data about you as users. They don't even know at the time how they will use this data, but data about people is very valuable to companies if only for marketing reasons.


GANTT Charts &:

Pre-planning A, i.e. outlining your planning
Pre-planning B, i.e. laying the groundwork

GANTT charts are alse mentioned in the teaching notes, and they can serve to demonstrate both of our approaches to "pre"-plannnig.

In terms of outlining the planning: The top level outline of a GANTT chart is basically the outlining of the planning you need to do.

And in terms of laying the groundwork: Within the outline can be the "background" work that you can and should do up front. In fact, you'll note in the example below that one of the early top level stages is called "Groundwork and RQ".

A little more on GANTT Charts

Firstly, keep in mind that pre-planning and planning exist at every level of I.T., from the largest corporate project, involving thousands of people, and multi-millions of dollars, to a single small program created by one person.

Particularly for team-size planning, GANTT charts are often used to guide the process. The Gantt chart breaks the overall project into several major stages of tasks (we could term this the "pre"-planning part), and then each of them is broken down further into subtasks (we could term this the actual planning parts). The amount of time needed for each is estimated, along with the start time.

You'll note that some tasks can take place at the same time (i.e. concurrently), but others must wait for the completion of prerequisite tasks.


GANTT Chart for ISB EE
By Matt Kelly