DEV Community

Discussion on: Moving Past Tutorials: a course on problem solving for programmers

Collapse
 
swfisher profile image
Sam Fisher • Edited

Hi Ali!

I spent the weekend digging up resources for this same purpose. However, I’ll just recommend what I already know and have personally found fruitful.

The most effective (by personal anecdote) and general framework I know of is polya problem solving. In practice, I find that this technique is especially good at getting beginners (and experts) to slow down and plan the implementation rather than rush to a shaky implementation: en.m.wikipedia.org/wiki/How_to_Sol...

I highly recommend checking out the wiki page and, if interested, picking up “How to Solve It.”

A second, more in-depth set of tools I’ve found for problem decomposition is in “The Art of Insight in Science and Engineering” by Sanjoy Mahajan. The applications in this book are all towards approximation questions in physical sciences, but I argue that they are also a beautiful articulation of several key foundations for computational thinking.

Lastly, “The Algorithm Design Manual” by Skiena gives some excellent advice on how to think about finding counter examples to a heuristic in the first chapter (think small, think exhaustively, try extreme cases, etc.) I find this to be a common skill set for assessing the correctness of an algorithm you think you up.

Lastly, since problem solving is a practice before it is a theory, I highly recommend “A Mind for Numbers” by Barbara Oakley as a practical manual on what constitutes effective practice for mathematical subjects.