# How does one teach problem solving?

In teaching university level Computer Science, I find many students struggling because they lack basic problem solving skills. Having them do more practice problems does not help as they get stuck at those or somehow hack together a solution to some problems but cannot generalize to other problems. Walking them through some solutions does not help as they might understand that solution but are again unable to transfer that to another problem.

I thought math competence would ensure logical thinking and hence problem solving but I have seen enough counterexamples by now.

The conclusion I seem to be getting to is one that I do not like: problem solving is an innate skill - it cannot be taught.

How have others dealt with this problem?

• I think that it is too simplistic to categorize people as "good" or "bad" at topics as rich as "math" and "problem solving." There are many different aspects to math and problem solving, and one can be good at some aspects while being poor at others. This of course makes teaching problem solving difficult. A large amount of math education research is about how to teach "problem solving." Commented Apr 25, 2017 at 21:01
• Your real problem is that "problem solving skills" is too vague. You need to be more specific about what you want students to learn. For example, in computer science, you might teach students how to find the right tool by reading the documentation. Or how to interpret a compiler error message. These are skills that do generalize to a wide range of problems. Commented Apr 25, 2017 at 21:50
• This is much, much too broad to be suitable for the SE format. There have probably been literally thousands of pedagogical papers written on various aspects of this topic.
– user1482
Commented Apr 26, 2017 at 5:37
• George Polya wrote several very instructive and widely read books (e.g. How to Solve It and Mathematics of Plausible Reasoning) about mathematical problem solving and how to teach it. Commented Apr 26, 2017 at 8:47
• For example, in computer science, you might teach students how to find the right tool by reading the documentation. Or how to interpret a compiler error message. — * eye roll * These two examples sound like zero of the typical problems one would be expected to solve in the good CS programs I'm aware of. Commented Apr 26, 2017 at 19:30

I speak from experience teaching (and doing) mathematics, and supervising research students for some decades. First, as with nearly anything, of course there can be some degree of innate interest+capacity...

What I have observed is that ... seemingly inevitably... academic environments inadvertently train most students to worry as much about conformity to the teacher's expectations as they do about the subject itself. This tends to cause critical thinking to wither, and the whole thing spirals downward.

Also, by this point it is really not clear to me that mathematical competence is strongly related to logical thinking, and, further, I don't think problem-solving facility is much related to logical thinking (of the highly linearized sort that mathematics is often caricaturized into). If anything, the standard mathematics style seems to me to not only squelch the kind of experimental, no-rules thinking that (genuine/serious) problem-solving requires, but to strongly disavow that experimentation is a legitimate methodology.

And, indeed, in many contexts, exams and such are structured with time limitations so that experimentation is infeasible. Other traits can be rewarded in timed exams, but not experimentation, and, I think, therefore, not problem-solving (unless of a fairly stylized sort).

To draw students into a better problem-solving attitude I think requires more iteration than most courses have time for. That is, a substantially dialected/Socratic process, in which weak solutions' weaknesses are illustrated by just-slightly-hard problems that thwart the weak approach. Repeat and repeat. But this takes a lot of time, since the psychological processing of such meta-issues is not "logical", but something subtler, from what I have seen. Changing one's viewpoint apparently cannot happen overnight.

• I am not sure mathematics is that linear. To me, trying to construct a proof and trying to write an algorithm are very similar types of thinking. Commented Apr 25, 2017 at 21:40
• @PatriciaShanahan, indeed, I do not at all view mathematics as "linear", but I mention that as a common fallacy or mythology... which I suspect often enters discussions as an implicit hypothesis, etc. E.g., traditional textbooks mostly have pretended that "logical linearization" is a sacred thing in math, and I have witnessed many teachers playing along with that, specifically announcing that "(linear) logical order/correctness" is foundational... No, I do not at all promote this myself, nor do I function "linearly", although I once thought this was an ideal to aspire to. :) Commented Apr 25, 2017 at 22:03
• Maybe high school mathematics is over-emphasizing using existing techniques and reading proofs, compared to writing your own proofs. Commented Apr 25, 2017 at 22:35
• @PatriciaShanahan, indeed, as far as I can tell, high-school math in the U.S. is intellectually quite degenerate... although students at that age don't necessarily help resist such degeneration. There is also the problem of "every student gets through", ... apparently despite their own non-cooperation and self-destructive behaviors? High school teachers are busy with lots of social issues. Also, upon considerable observation, statistically (my apologies to individuals!!!) high school math teachers are singularly ignorant of their own subject, especially anything that has happened within ... Commented Apr 25, 2017 at 22:45
• @BenI., although it is obviously easy to caricature my remarks as being the stereotypical buck-passing, I do not intend it as such. In the U.S., it is literally the case (in several states I've lived) that to teach math in k-12 one is not required to know much about it, and textbooks are not chosen by teachers. The bachelor's degree and master's degree officially relevant to teaching math do not contain many math courses. They wouldn't help meet certification, in any case. I'm not insulting any individuals to observe this. Commented Jun 1, 2017 at 20:51

Your conjecture, that problem solving is innate and cannot be taught, does not hold water. It does come more easily to some people than to others, but problem solving skills can be developed in all students. Here are some things the instructor can and should do to help this happen:

1. The instructor should structure things very clearly, and train students to go through a sequence of steps despite the anxiety they may feel.

2. Allow sufficient time. If you pose a warm-up problem at the beginning of class that you think will take three minutes, and at the three-minute point 20%, or even 50%, of the class is finished, you didn't give it enough time.

3. Show worked examples, explaining how you got from Point A to Point B.

4. Show the students how to recognize certain patterns. (So as to reduce the problem down to one they've already solved.)

5. Be clear about what, if anything, needs to be memorized.

6. Check each student's mastery of the basic procedures and understanding of the material that has been taught. Any vagueness in the student on the basics will create stumbling blocks that will interfere with problem solving.

7. Assign regular practice problems for doing at home.

8. Model positive self-talk.

Exactly what the sequence of steps will look like depends on the type of problem to be solved.

(a) Check if every term in the expression is a multiple of the same thing (consider both letters and numbers).

(b) Check if it's one of the special cases (perfect square, difference of two squares). (You have to get students very comfortable recognizing these special cases by introducing them early in the course, and coming back to them plenty of times, in different guises, and you need to make sure students are seeing the pattern.)

(c) Analyze the signs to decide if you need two factors with a positive sign or two different signs.

(d) Write down the various possible factorizations of the first and third coefficients.

(e) Try out some combinations. When you have something that you think will work, put in the signs (positive? negative?) and then multiply to see if it's working.

(f) If you get stuck, write a table of values (x, y) and draw a rough graph. See if you can discover, by looking at the graph you drew, where the curve crosses the x-axis. If necessary, fall back on polynomial division to see if your guess works, and to find the other factor.

Example 2. Coding or developing an algorithm.

(a) Sometimes it's helpful to draw a rough diagram showing input and output. Starting out with a drawing can be quite freeing.

(b) Try out a particular input and make sure you know what needs to happen to it in order to yield the desired result.

(c) Write down some processing steps. It's okay if it's in English initially.

(d) Try out your algorithm or code on some input data. If that seems to work, try some slightly odder input data. Adjust the procedure if necessary.

(e) Reread the problem to make sure you didn't misunderstand something.

Example 3. Word problem.

This has some similarities with the other examples; rough sketches can be particularly helpful here.

In addition to ideas from above: At the end, check the units, comparing the problem statement against your solution.

Example 4. Writing a proof.

Break up the problem into smaller parts if possible. Write down what the general goals are, i.e. what you need to prove.

The beginning proof writer would do well to write down, at each step, what needs to be shown. In the beginning, verbosity can sometimes help maintain focus. If appropriate, draw pictures, try cranking out the results for some simple input values, and then with more complex input values.

If the student gets stuck, s/he should be trained to write down all the facts given in the problem, and any possibly relevant theorems that have been learned so far.

Don't be afraid to jump temporarily to an intermediate step and, for the time being, assume we can show a certain result that will help us get to the end goal.

Beginning proof writers can benefit greatly from using a two-column format, where for each and every assertion listed in the left-hand column, some justification must be written down in the right-hand column.

At the end, reread the problem.

General comment: In the U.S., the key places where students are typically expected to make a quantum leap in problem solving:

• two-step word problems (usually first assigned in 4th grade of elementary school -- example: "The area of a rectangular doghouse floor is 15 square feet; the length of the floor is five feet; find the perimeter of the floor of the doghouse" found at https://www.engageny.org/resource/released-2016-3-8-ela-and-mathematics-state-test-questions)

• geometry (usually taken in 8th, 9th or 10th grade of secondary school)

• linear algebra (STEM students usually take this in approximately the sophomore year of college)

For sociological concerns about students' general difficulties with problem solving, it can be helpful to identify at what points in the educational system the quantum leaps are expected to occur. When working with a particular student, it can be helpful to identify at what point his or her difficulties began.

In addition to content knowledge students need exposure to a process for problem solving such as the following.

1. Define the problem-it's amazing how often students cannot articulate what the issue is.

2. Develop a criteria for the solution-this is not about creating an answer but for developing a set of characteristics the answer should possess. Often the teacher provides this in the assignment requirements

3. Generate potential solutions-don't judge them just make them. This is brainstorming.

4. Judge each solution according to the criteria in step 2-if a solution does not meet the standard it's removed.

5. Select the most appropriate response.

This process works in most disciplines and is particular useful for situations that have multiple approaches.

I too have some experience teaching problem solving both at the university level and to military officers. Here are just a few of my thoughts...

Problem solving can be viewed as formal i.e. using a specific process in a bounded reality scenario, using only a specified number of factors and seeking to find the optimal solution. Contrasted against the formal approach, is the naturalistic approach such as recognition primed decision making that seeks a workable but not necessarily optimal solution. The formal approach is cumbersome and often times to slow for practical application in real world environments.

I generally teach a naturalistic approach using the following guiding steps:

1. Define the problem, what are you trying to decide or solve?

2. Define your terms, people from different field do not use terms in the same way e.g. “attitude” means one thing to psychologist and something different to an aeronautical engineer.

3. Consider all your facts. Do you have any constraints = things you must do, and any limitations = things you cannot do.

4. Consider any assumptions, assumptions must be valid, that is they are based on a fact, and necessary, that is you must make the assumption to complete a line of reasoning.

5. Determine any screening criteria; is there anything that automatically eliminates a particular solution or type of solution?

6. Brainstorm initial solutions. If students get stuck coming up with solutions I have them consider an alternative viewpoint i.e. what would you NOT do... this can assist in jump starting their thought process. I also remind them to avoid “assuming” a problem away. I have found that students often make an assumption(s) without being aware they made one. Finally, consider second and third order effects.

7. Select best usable solution.

Although this is presented as a stepwise process it is fairly easy to remember. I focus on the first four steps because students typically want to just get to the answer and fail to really define the issue/problem and associated fact and assumptions. Note that this approach does not attempt any mathematical pair-wise comparisons among competing solutions.

I have struggled with teaching problem solving too, and gave a top-down approach a chance. That's the technique that has best worked for me, so I started teaching it about 15 years ago to my engineering students, and I honestly feel they have improved at it. I made an online course about it on udemy in 2016, and recently wrote a book about it (The Top-Down Approach to Problem Solving).

The technique is suitable for any type of problem. It's a generic algorithm:

1. Understand the problem.
2. Decompose the problem into a few subproblems.
3. Solve each subproblem the same way.
4. Return each solution to its parent problem. Yeap, it's a depth-first search algorithm.

In the book, we go through a bootcamp of problems solved with this method for the reader to get a hang of it. It has problems in many areas: Electric circuits, mechanics, time and speed, probability, calculus, programming, and so on.

• This was once known as Structured Programming. Both Pascal and Modula/Modula-2 were based on this idea. Algol similarly. The concept of nested functions supports the ideas. Commented Nov 24, 2021 at 13:20
• I though it was called modular programming. Commented Nov 25, 2021 at 16:49