Example One: Storing the Boat

Section: Examples
...Subsection: Example One: Storing the Boat

The STAIR process can be applied to situations that have nothing to do with computing. As an example, imagine the following situation: Tom came home one day to be confronted by his wife about the small sailboat that was filling space in the garage. She suggested he find a more efficient way to store the boat than leaving it where she normally parked her car. (Her suggestion was couched in somewhat stronger terms than this.!..) Being quite a good problem solver, he decided to apply the STAIR methodology to this problem.

Statement of the Problem
Tom thinks to himself: "I need to get this boat out of the way. It needs to go someplace where it won't be in my wife's way, but with easy access when I want to go sailing. I don't want to spend a lot of money or effort on this problem, and I want a long term solution so I don't have to deal with this again"

Notice that Tom started with as simple a statement of the problem as possible. He also listed some of the relevant constraints. He didn't worry about what the exact solution might be yet. This may not be the finished statement of the problem. Tom may find he needs to come back and refine his problem statement a little more before he can finish the solution.

Tools Available
Tom thinks: "This job might require actual physical hand tools, and I've got a pretty good set of the standard tools. Besides the obvious definition of the word tool, I might think of some of the main approaches to solving the problem as tools. I could hang the boat from the ceiling of the garage, attach it to the walls, put it in the yard, or rent some storage space."

Notice how flexible he was with the term `tool.' This approach allows Tom to think of the IDEAS he will choose from, as well as the physical entities. In fact, the actual mechanical tools that will be used will be decided much later in the problem solving process. It's way too early to worry about whether he will use a hammer or a screwdriver.

Algorithm
Tom thinks: "I'll try hanging the boat from the ceiling. This seems like the best approach, because the boat will be ugly in the yard, I can't afford rental space, and the walls are already full. I think the boat is light enough to be suspended from the ceiling safely with some ropes".

In this instance, the algorithm step involved choosing the best alternative from the tools step. At this point, he had made a decision about how he was going to tackle the problem. Notice that he also started thinking about which physical tools (in this case a rope) he would use to help solve the problem.

Implementation
Tom says to himself: "When the time actually came to suspend the boat, I quickly realized I had more to think about. I measured the ceiling, found a perfect spot, and moved the boat to the floor directly under the spot. However, I didn't know how exactly to attach the boat to the ceiling. The ceiling has wooden rafters in it and obviously I need to attach some sort of hooks to the rafters. I also noticed the rope I planned to use was kind of slippery and might not hold a knot very well."

The implementation step so far has been unsuccessful in the obvious sense; the boat is still sitting on the garage floor. Rather than being discouraged by this, Tom will use the experience as an information gathering stage for the next step:

Refinement
Tom thinks: "The ceiling idea is still a good one, but I don't have everything I need. I don't trust this rope, and I need some hooks or something. Digging through the toolbox, I found one bicycle hook that will work fine for the bow of the boat. I can attach it easily to a rafter, but I still need to hold up the back end of the boat. I noticed the straps I use to carry the boat on top of my car. They are sufficiently strong enough, but the ends of the straps are designed to fit in the rain gutter of my car. I need to find something that will allow me to attach the straps securely to the rafters. I went to the hardware store and found screen door handles! They will attach to the rafters and they are the perfect size to attach the straps to! I went back home, attached the handles, hoisted the boat up in the straps, and the problem is solved!"

The refinement step made some visits back to many of the other parts of the problem-solving process. Our handyman had to adjust his perception of the problem. Attaching the boat to the ceiling was a good idea, but Tom's first statement of the problem did not specify how he was going to do this. Finding a way to solve this part of the problem involved combining algorithm development and tool selection. The implementation happened in segments as he found more of the right ideas and tools to solve the problem. The process does not always flow in a set order, but because he used a systematic approach, he always knew how to think about solving the problem. Tom knew, for example, that his algorithm was good, but he would need to rethink his tool selection. Obviously, plenty of people solve this kind of problem without ever taking a computer science class. Tom may not even know that he was using an organized problem solving technique. The reason we begin with this problem is to illustrate that our problem solving-process is really just a somewhat formalized summary of the techniques we already recognize as problem solving techniques in many settings.


rms@cs.oberlin.edu