Our Most Powerful Tool - The STAIR Steps for Solving Problems

Section: Our Most Powerful Tool - The STAIR Steps for Solving Problems

Problem-solving can be seen as more of an art than a science. Each person has different ways of approaching problems. Our intention is not to limit your problem-solving processes to our way of thinking, but to give you a framework you can fall back on when you are stuck. We have developed a method called STAIR which has proven to be a helpful problem-solving tool.

STAIR is an acronym. (Get used to it... Computer scientists LOVE acronyms!!) Each letter in the word STAIR represents a part of a general problem-solving strategy.

S - State the problem
This step seems obvious enough, but it is often the one people skip. We frequently start solving problems before we really think carefully about what problem we are trying to solve. The result is confusion and wasted time. Take the time to describe carefully to yourself what you are trying to accomplish. Avoid the temptation to couch this problem description in technical terms. At this stage of the process, all your thoughts should be in ENGLISH (or, of course, whatever other human language you think most comfortably in). Some problems are best described with sketches or other tools (like flowcharts and data diagrams) which will be discussed later. Use whatever you need to make sure you have a firm understanding of what you want to accomplish. It's best to write this down on paper so the problem statement can be checked later if you get confused. If you don't know where you are trying to go, how will you know when you get there?

T - Tools for the job
Once we know what kind of a job we want to accomplish, we can begin to explore which tools we might use to solve the job. We are using the term tool in a very broad sense. A tool might be a command, a button on a toolbar, a selection on a drop-down menu, a strategy, a program, or something else, depending on the kind of job we are trying to do and the context in which we are working. Knowing the capabilities of a certain program, and the kinds of things different types of computer applications can do are the main ways you add new tools to your toolbox of computing skills. As you gain experience, you will constantly be adding new tools of all kinds to your repertoire. Even the STAIR strategy itself can be considered a tool. Most of the time, there is more than one tool available to do a job. At this point, just list the available tools. Later on, you will decide which tool or tools to use. You might need to come back to this list if you chose an inappropriate tool the first time through the process.

A - Algorithm development
An algorithm is a computer science term for a strategy or plan of action. Part of developing an algorithm is choosing an appropriate tool or set of tools from the previous step. The other component is determining how those tools will be used to solve the problem. As with the other steps, the algorithm can vary widely in the type and complexity of the strategy you will use. In simple problems, your algorithm may be as simple as saying "I'm going to try pressing this particular button on the menu bar." A more complex problem will probably require a more complex algorithm. As before, it is a good practice to write down your algorithm on paper.

I - Implementation of the algorithm
It is interesting to note that none of the above steps require the use of a computer. The implementation step is the actual process of translating our human thought into something the computer can understand. In simple problems, our algorithm may be implementing a command or two. Implementation can mean "just do it" when we are dealing with these simple problems. Programmers think of the implementation step as translating the algorithm into some type of computer programming language. The process is the same regardless of the complexity of the problem.

R - Refinement
We like to think if we learn a skill and prepare ourselves properly, we can solve a problem on the first attempt. Experience shows us this is not usually the case. It is normal for a computer user to attempt a solution several times before the problem is solved. A skilled problem solver will analyze what happened, review the other steps, and try again. Each unsuccessful attempt should bring you closer to an understanding of the problem and its solution. Refinement usually means going back and looking at the previous steps critically. Ask yourself if you really defined the problem properly. If so, have you used all the possible tools at your disposal? Are you sure there is not a tool available that you have overlooked? Did you choose the best algorithm for the job? Did you implement the solution properly? (You would be amazed at the number of computer errors that are the result of simple typing or spelling errors!) Again, you will find that practice will make you much more confident at this critical stage of the process.


rms@cs.oberlin.edu