Mathematics has formed a partnership with computer science, since at least the 1940s. Devising algorithms and turning them into computer programs is akin to deconstructing a problem, a proof, or a theory into its key components. In other words, a computer can be used to attack the problem of decidability, discussed in the previous chapter, on the basis of the validity (or not) of some algorithm. This chapter deals with this key notion, completing the chain of ideas described in this book that started with Pythagoras. Although not named in this way, the concept of algorithms goes back to Euclid and his Fundamental Theorem of Arithmetic. Computers are adept at solving all kinds of problems that involve pattern and structure. They do so by computing all possibilities for a problem, rather than providing a theoretical explanation for the solution. The latter is left up to the programmer—in this case, the mathematician.