Bits & Bytes: Lesson 1
Problem Solving in Life and Technology
How do we get there from here?
Problem solving skills are essential to success in every aspect of life. You depend upon these skills for success in your personal life and finances, in your family and civic responsibilities, and in your professional career. Everyone has skills in problem solving yet you may have wondered how it is that some people are so good at it in some parts of their lives, but so miserable at it in other parts. We all know individuals who have no “common sense” yet are “book smart”, and we know others who have incredible skills for managing their personal finances but fail miserably in their relationships. We find ourselves wondering how they (and at times, ourselves) can be so inconsistent in what appears to be simple problem solving skills. The truth of the matter is that problem solving is not simple. Problem solving skills take practice and purposeful application of rules and processes to fit specific types of problems. Most people learn these skills through interactions with family and friends, in school, or during career training. Some of it is so ingrained in our personality that we are unaware of our own thought processes. For example, when you get dressed in the morning, you probably don’t have to think through the articles of clothing you will need (pants, a shirt, 2 socks, etc.), and you probably don’t consciously determine ahead of time what order to put them on in.
There are many different kinds of problems to be solved in life and in the field of computer science, and consequently, there are different strategies to solve them. People engaged in technology and computer science share this dependency upon extraordinary problem solving skills for creating all of the conveniences, gadgets, and modern wonders we have come to depend upon. Let’s start our discussion of problem solving with a description of types of problems and explore how each of these types can be reflected in technology and computer science. Then, we’ll look at the strategies to solve these types of problems, the unique strategies of solving problems in technology, and finally, consider ways to improve one’s problem solving skills. As we go along you will have the opportunity to think about problem solving from a personal perspective.
Problems with clear-cut answers and solutions
Problems with definite answers that are solved with prescriptive strategies are the type that many of us spent years practicing in school. These are typically the problems at the end of the chapter in a math, physics, or computer science textbook. We learned that in order to get the right answers all we need to do is follow the rules described in the chapter. If only life were so simple! Individuals who are very adept at this type of problem solving are sometimes called “book smart” and are very skilled at remembering the rules. Sometimes this type of problem is referred to as being highly structured – no guess work required.
Indeed, some of life is clear-cut; balancing your checkbook, following a recipe, putting together a model, installing new software, and writing a formula to calculate the average rainfall for the year. Unfortunately, most of the big challenges in life, and in computer science, fall into other categories of problem solving.
Problems with a fairly defined outcome but with many solution strategies
Things start to get messy when we’re confronted with problems that have a fairly defined outcome but for which the solutions can be as varied as the individuals you meet in your daily commute. This type of problem confronts us on a daily basis. In comparison to clear-cut problems and solutions, these problems are only moderately structured.
In your personal life you need to feed yourself and perhaps a family. The defined outcome is that menus be nutritious, safe, and within your budget but the solutions to the problem are as varied as the cultures and tastes of the world!
Examples of this type of problem in technology include a spreadsheet to plan a budget or a job schedule to coordinate employee’s shifts. The solution is constrained by various factors such as the number of employees, the duration of each shift, etc., but the form and design of the solution can be quite diverse. For example, creating the local area network for a small business requires a fairly straightforward application of hardware, but analysis and predictions of how employees will use the network, the volume of traffic, the future plans for expansion, and the changing business needs, will all impact the final solution possibilities.
This type of problem requires not only the “book smarts” to identify the data required and the constraints of the problem, but also a certain level of creativity to imagine all the possible solutions. The technology that makes up everything from our home security systems to our automobiles, from appliances to personal entertainment devices, have created a demand for individuals skilled in solving this type of problem.
Problems with no defined solution or defined solution strategy
Now things are really getting complicated! Problems with various acceptable solutions, no known solution, or perhaps no solution at all, and a myriad of strategies to find an answer (most yet undiscovered), tend to frustrate us the most. They lack almost all structure so we are left to fend for ourselves in order to create the structure through our own values and priorities. We deal with problems in this category daily, but they often require much more time and effort to solve. We are confronted with questions such as: Where should I live? What career should I train for? What is the cure for cancer? How do we achieve world peace? What is my purpose on this earth?
We also face this type of problem with technology in our lives. What computer system will best fit my needs? How do I select a communication service? How should I, personally, deal with privacy and security? What is my role as a cyber-citizen? Sometimes we can call in an expert; sometimes we just have to solve the problems ourselves.
And of course, in the world of computer science, computer scientists, programmers, and others, work to solve this type of problem as the very core of their profession: How can a network to manage the pharmacy needs of customers across the country or around the world be created? How can the huge amounts of data gathered by national security experts be manipulated and analyzed to protect the lives and property of citizens? What simulation can be programmed to predict, even divert, hurricanes? What can be done to minimize the effects of climate change? Is there other life in the universe? What programming strategy will discover the essence of life reflected in our chromosomes?
The good news is that this type of problem generates fun and creativity in life, and in computer science! The bad news is that this type of problem solving requires effort, knowledge, and a deliberate thought process for most of us. More good news is that problem solving is a skill that can be learned and enhanced.
Analyze your ability to solve problems by thinking through the following questions.
Your answers will likely be different but here are some examples to get you thinking.
Learning Problem solving strategies
Your new understanding of the basic categories of problems faced in modern life is the first step to becoming a better problem solver. Once you recognize the type of problem you are faced with, you can select an approach that will yield the most satisfactory results. Certain solution strategies generally work best with specific types of problems.
The Request-Response-Result problem solving strategy is likely the one you are quite comfortable with because you practiced it for years in school on those 10-question worksheets and the review problems at the end of the chapter in the chemistry textbook. It’s the strategy that correlates best to the clear-cut category of problems; a request is made, you respond with steps of a rule, and the one and only correct result is achieved. It works perfectly when applied to clear-cut problems.
This strategy rarely works well when applied to other types of problems. Typically, people who go through life using only this approach to problem solving are said to see life in terms of black or white. Sadly for them, they are unaware of other strategies that work more successfully in solving many problems faced in today’s world.
In the world of technology, individuals don’t encounter too many of these problems for which they must apply the Request-Response-Result strategy because technology has been created to do it very effectively for us. You own a calculator to do math, complete with built-in square root, average, minimum and maximum functions. If you are an engineer, your computer likely has many functions built-in to solve problems of this type that are unique to your work. The same can be said for almost any job. A store attendant uses a computer to automatically calculate a discount, the tax, and the change. Emergency responders use computers that monitor patients and determine medicine dosages. Pilots use devices to determine arrival times based upon navigational data. Your microwave oven is even programmed to pop the corn with the touch of one button and the word processor I use follows rules of grammar to correct my writing!
The Request-Response-Result is the type of problems that computers are very good at solving. A computer can quickly accept a request, apply a response based upon any number of rules, and display the result. Making computer solve these problems is the work of computer programmers who create programs for computers and a wide variety of devices with embedded, or hidden, computer components in appliances, automobiles, and gadgets of all sorts.
Embedded - A hidden component of a larger system such as the computer components in your car.
These programmers design the algorithm for the computer to follow to match the data, the specific conditions, and criteria for a satisfactory result.
Algorithm - A precise and systematic method for solving a problem.
Certainly there are times while working with technology at which we use this problem-solving strategy ourselves. Successfully plugging in the components of your computer is simple if you follow the rule to match the color of the cord with the color of the socket. Installing software is a breeze if you follow the specific rules of the online prompts. Even the construction of a fairly complex PowerPoint presentation has been made easier with wizards that guide you in following the rules.
The IDEAL Problem solving strategy
With a name like IDEAL you would think that this is the best problem solving strategy available. This strategy was developed during the 1960s and 70s and is based on the idea that if you learn the strategy you can apply it to any problem situation on any topic. It is useful in many situations, and it fits well with the type of problem that is has several possible solutions. It lacks the opportunity to redo the effort because there is no built-in step for starting over.
There are 5 steps that represent the acronym IDEAL.
Identify the problem
Define the problem by sorting through the relevant information
Explore the possible options through brainstorming
Act on the strategy selected
Look back and evaluate the results of your actions
This strategy can be applied to many technology problem areas, as well as the problems and challenges of daily life. When you’re called upon to give a presentation to your work group you likely use this approach. In order to select the best format you ask yourself, “What is the goal of this presentation?”, “What constraints do I have in terms of equipment, time, skills?”, and “What is possible – PowerPoint, chalk talk, slide show, or Live Meeting?” You select a format for your presentation based upon your analysis, and after the event, you critique the outcome and add it to your list of experiences to draw upon the next time you make a presentation. This style of problem solving has likely served you very well.
The IDEAL approach can be used in selecting computer components and software, configuring a local network, and writing computer programs to solve simple problems.
The Circle-Back Model
Recent research into problem solving has found that there is considerably more to effectively solving complex problems than just knowing the steps of some particular technique. Many problems must be approached from different angles through a process of trial and error, so the opportunity to evaluate the outcome and try again is critical. The Circle-Back strategy is particularly effective in addressing technology-related problems, especially the complex problems that programmers work on. Creating software to model weather patterns, or analyze economic strategies, or control robots is not nearly as clear cut as the previous problem solving strategies would imply. The Circle-Back strategy is used when “failure is not an option”; when the problem might be worked on indefinitely and it is likely that it could take a great many cycles to arrive at a solution.
The Circle-Back method involves 3 basic steps that repeatedly cycle until a solution is achieved. Each major step has many sub-components that are customized to the situation and must be accomplished. The beginning point is to Represent the Problem clearly and fully. This step involves calling up all relevant information that impacts the problem, establishing the goal, and defining a starting point. In the world of technology and software development, this phase can take a long time and require the expertise of many individuals.
The Search for Solutions step includes refining the goal based upon the research and work done in the first step and developing a plan of action to reach the goal.
The step to Implement the Solution is the action phase and it contains the critical activities of executing the plan created in the previous step and evaluating the results of the action. Here is where an important juncture occurs; if the results do not meet the goal, the process is started again back at the first step of Representing the Problem and the Circle-Back process continues until success is achieved.
This approach to problem solving is especially valuable to computer scientists. Many of the problems they work to solve are huge and complex without predefined solution sets. The problems must be broken down into sub-problems. Each of the smaller problems is processed through the 3 basic steps and when all the sub-parts are working, the whole plan can be constructed, implemented, and evaluated.
So how does this work in technology? Imagine the task of creating a video game for the Xbox. Stating the goal is almost more than one can think about. The game must have a great story line, realistic graphics, exciting animation, fast response time, and on and on. How would you even begin? It might be reassuring to know that big production computer games require a team of hundreds of individuals. There are artists, writers, programmers, audio specialist, musicians, marketers, testers and many more. Each specialty team is responsible for its own goals and problem solving cycles. The Circle-Back approach is especially effective in complex, open-ended problems that require as much creativity as they do analytical problem solving skills.
Analyze these technology situations. Select the solution strategy you would use to solve the problem.
Strategy + Knowledge = Effective Problem Solving
Because of recent research, we now recognize that understanding and applying a strategy to a problem isn’t enough to effectively solve the problem. Researchers have found that there are many other factors that build good problem solving skills. In addition to selecting an appropriate strategy to fit the problem, you must have a deep base of knowledge in the subject area of the problem. Additionally, individuals need practice with a strategy within the context of real-world problems. This new thinking on the importance of having a solid base of knowledge in a particular subject has changed the way educators and trainers teach problem solving strategies.
This must seem like a vicious circle; how can you become a good problem solver without knowledge and experience, both which require problem solving skills to achieve? My advice is to take it slow and easy, learn as you go, call for help when you need it, and continually try to piece together what you already know about the topic with what you are experiencing in a current problem.
Start with a realistic assessment of what you know and the experiences that can be applied.
Analyze the situation – break it into smaller challenges
Draw upon your experiences with similar scenarios
Figure out what you need to know and where to find it
Come up with a plan
Repeat as necessary
Evaluate the process and add to your experiences account
Try it out
Imagine that you are having difficulties with the wireless network at home. It won’t connect each family member’s computer to the printer in the home office. In a panicked attempt to solve the problem, you unplugged everything, find the printer software, reinstalled it on every computer, hook each computer directly to the printer in hopes of helping the computers “find it”, and eventually give up and call upon the fifteen year-old living next door.
If you had the opportunity to apply strategies learned in this lesson, what might you have done differently?
You would likely recognize that this is a problem that has only one acceptable outcome but perhaps there are several actions that can be tried to correct the problem. If you could redo the situation with the problem solving strategies you just learned, you might have called in the fifteen year old first (just kidding!).
Likely you would have used the Circle-Back method with more time spent on the first step of assessing the problem and recalling other experiences you have had with the home network. You might have begun the debugging process by breaking it into smaller pieces – checking if each computer had printer drivers, checking the wireless signal strength, and the printer itself. You would have recalled what you know about networks in general. Perhaps you would have checked the computer manual to discover where network settings are controlled, you might have searched for pertinent information in the printer manual, and maybe even checked online help forums. You probably would have telephoned a friend to gather more insights from her experiences. After learning all you could, and thinking about past experiences with your wireless network, you could formulate a plan of possible actions, execute each action, evaluate the results of each action, and try other strategies until the problem was solved or until you decided to call in an expert.
Debugging - A method of discovering the source of errors causing problems in a system or process.
Certainly following a problem solving strategy doesn’t guarantee successful results every time. That is why the Circle-Back strategy is effective; it’s not an all-or-nothing scenario, and it offers opportunities for organized skill development both in the context of the specific problem at hand, and in problem solving in general.
Look back to the technology problem you described for question 6 in the first “Get Real” section of this lesson– Describe a frustrating technology related problem which you recently encountered. Solve it again in your imagination by using the strategies from this lesson to identify how you might have arrived at a better solution with less frustration.
In hindsight, what learning occurred in that experience that you can apply to a future situation?
Your answers will likely be different but here is what Kim might have said:
Recently Kim created a blog to share her ideas and experiences from her city council work. She just can’t make it look professional or feel inviting.
Her revised strategy:
In hindsight, Kim knows that this frustrating experience taught her that time spent gaining knowledge and looking at good examples is time well spent and that writing is a skill which can be transferred to new technologies.
Formalizing a plan of attack
All of us have a whole collection of rules we recite to help us with our grammar or to calculate the tip amount. These general “rules of thumb” are called heuristics. They provide a general plan for solving problems. The strategies for solving problems described earlier in this lesson fall into the category of heuristics; they offer general guidance for our actions. Computer programmers use problem solving strategies – or heuristics – to arrive at the general, overall, plain language solutions to solve problems using computers. However, computers cannot interpret our normal language; they do not make assumptions, draw conclusions, or interpret our meaning. Because computers cannot read our minds (yet!), the instructions they follow must be extremely detailed and presented in a logical order that leaves nothing to guess work. This begins the action phase – writing software – for solving problems using computers.
Heuristic - A general guideline or rule-of-thumb for solving problems.
Algorithms – The Recipe in Computer Science
Writing software, even simple programs, requires a detailed series of steps for the computer to follow. Computer programmers, sometimes called “software developers”, begin by creating a sequential list of tasks which the computer must perform in order to arrive at a solution. This task list must be translated into a specific language which the computer can understand. This list of steps is called an algorithm. Don’t let the word scare you. Algorithm is just a technical term for “recipe.” Creating an algorithm requires critical thinking about the problem plus careful analysis of the situation, and goes hand-in-hand with problem solving strategies.
Algorithm - A precise and systematic method for solving a problem.
To think about the detailed requirements of a computer program try this: Write out the instructions for making your favorite sandwich. Now, pretend you are a robot that has no history of food preparation, and no experience with making a sandwich. Envision what happens when you execute the step to “Top with brown mustard and slice.” Will the robot know you mean to open the jar of mustard, scoop 1 teaspoon from the jar, spread it evenly over the pastrami, top with another slice of bread (ideally taken from the wrapper!), and use a knife to cut from corner to corner? It’s likely that the assumptions another human would make about creating a sandwich would be skipped by the robot and you would end up with the jar of mustard sitting on top of the meat and a big mess when an attempt to “slice” occurs.
Execute - To carry out a specific instruction step such as a command in a computer program.
Writing a computer program involves a detailed algorithm containing the exact steps to execute in order to arrive at the desired outcome. Let’s look at the algorithm for a task a computer could be programmed to complete – calculating the total cost of the pizza you ordered.
Need to know the size of the pizza ordered
Need to know the price list of the restaurant
Need to know the number of extra toppings ordered
Multiply the number of extras by .75
Add the cost of the extras to the base price
Multiply the new subtotal by .06 for sales tax
Add the tax to the subtotal
Add a delivery charge of 3.00
Print all charges and the total in itemized list
After this planning step, the plain language instructions of the algorithm are translated into a programming language. There are many languages that programmers use to communicate with computers. Perhaps you have heard of Visual Basic, C#, or Java. In later lessons we will explore algorithms to describe various tasks computers are often expected to accomplish and how languages are used to describe specific tasks to a computer. Learning a computer language is not too unlike learning another speaking language such as French or Spanish. You decide what you want to say and then select the words to convey that meaning. But, more about that later…
Write the directions for making a pastrami sandwich as an algorithm. Be as specific as possible.
Your answer might be a bit different but this is how I make a pastrami sandwich.
Life presents us with problems every day, and thank goodness, problem solving is a learned skill. To become more effective, it is helpful to analyze the type of problem being confronted and select a strategy that fits the specific problem type. Problems can be categorized as:
problems with clear-cut answers and solutions
problems with a fairly defined outcome and many possible solutions
problems with no defined outcome or defined solution strategy
Solution strategies can take the form of:
Any solution strategy is most effective if it fits the needs of the problem presented. In addition to being able to analyze the type of problems being confronted and fitting an appropriate strategy to it, gathering knowledge of the topic is a vital element for success.
Technology helps us solve trivial, or clear-cut problems, as well as more complex problems that, until recently, were totally unsolvable. Computer scientists use heuristics to develop algorithms as a critical step in the problem solving process because computers can only follow very specific directions. A heuristic is a general guideline or “rule-of-thumb” for solving a problem. An algorithm is a detailed instruction list for accomplishing a task which can be translated into a specific computer language.
Join me in our next lesson when we further explore how computers can solve problems by modeling the real world and we delve into some of the inside details of computer science and programming.