Much of computer science involves designing completely automatic systems that will later solve some specific problem -- systems to accept input data and, in a reasonable amount of time, calculate the correct response or a correct-enough approximation.
In addition, people in computer science spend a surprisingly large amount of human time finding and fixing problems in their programs -- debugging.
The ability to understand what the goal of the problem is, and what rules could be applied, represents the key to solving the problem.
Sometimes the problem requires abstract thinking or coming up with a creative solution.
It can also be applied to a product or process prior to an actual failure event—when a potential problem can be predicted and analyzed, and mitigation applied so the problem never occurs.
Problem Solving As A Teaching Method
Techniques such as failure mode and effects analysis can be used to proactively reduce the likelihood of problems occurring.
In these disciplines, problem solving is part of a larger process that encompasses problem determination, de-duplication, analysis, diagnosis, repair, and other steps.
Other problem solving tools are linear and nonlinear programming, queuing systems, and simulation.
Well-defined problems allow for more initial planning than ill-defined problems.
Solving problems sometimes involves dealing with pragmatics, the way that context contributes to meaning, and semantics, the interpretation of the problem.