# Solving problems

Computers are tools for solving problems, so it makes sense to spend time thinking about how to actually use them for this. The following is a list from a CourseraSpecifically, the Algorithmic Toolbox course. algorithms course:

1. Read the problem statement. What is the task? What are the resource constraints?
2. Design the algorithms. Prove its correctness and estimate its performance.
3. Implement the algorithm.
4. Test and debug.
5. Deploy / publish / etc….

## How to solve any problem

How to solve it is the name of a book by G. Pólya Pólya, G. and Conway, J. (2014). How to solve it. Princeton, NJ: Princeton University Press. that describes an approach for solving any problem. Thought it's mathematically focused, it applies well to other domains. The steps for solving problems outlined here are thus:

1. Understand the problem
1. Clearly state the problem
2. What is the goal of a solution to the problem?
3. Break down the problem into sub-problems
2. Devise a plan
1. Potential strategies:
• Eliminate possibilities
• Consider special and edge cases
• Apply direct reasoning
• Find patterns
• Draw diagrams
• Solve simpler problem
• Develop a model
• Be ingenious
2. Are there solutions to related problems? Have you seen similar problems before that you can apply to this (or to its sub-problems)?
3. Execute the plan
1. Check each step.
2. Seriously, double check your math. Simple errors always get me and they translate through.
4. Retrospective
1. Does the solution fit the problem?
2. What are the lessons learned from the process?

Last updated on 2018-04-11.

Back to the top-level.