The prevalent paradigm in modeling human cognitive capacities focuses on computational explanations. When it comes to mathematical problem solving, this approach appears to imply that the complexity of a problem can be equated with the complexity of the cognitive task of solving the problem. But in the computational approach we are concerned only with the optimal algorithms for solving problems, whereas human cognizers use many heuristic tools (e.g. diagrams) that make their solutions computationally unoptimal. In this talk, I propose a contrast between optimal and humanly optimal algorithms, which gives us a wider framework in which to study cognitive complexity.