[PROBLEM-SOVLING]: Added (very) rough draft of problem solving links (#2993)

* Added very rough draft of problem solving links.

* Apply suggestions from code review

Additional books and refs from @bobahop.

* Apply suggestions from code review

Cleaned up formatting a bit.

* Update docs/PROBLEM-SOLVING.md

* Added Kurtis Pykes article.

* Added problem-solving doc to config.

* Apply suggestions from code review

Co-authored-by: Bob Hoeppner <32035397+bobahop@users.noreply.github.com>

Co-authored-by: Bob Hoeppner <32035397+bobahop@users.noreply.github.com>
This commit is contained in:
BethanyG
2022-05-21 12:17:26 -07:00
committed by GitHub
parent dd4adabb51
commit ca04c76510
2 changed files with 53 additions and 4 deletions

42
docs/PROBLEM-SOLVING.md Normal file
View File

@@ -0,0 +1,42 @@
# Problem Solving Strategies
As the first article here states, `Problem solving is a meta-skill`.
We find that often, the syntax or structure of a programming language isn't the most difficult part of solving a challenge - figuring out _what to code_ or _where to start_ is.
Developing strategies and a system to break down problems into code-able steps is a **great** skill to cultivate.
Below are some community-sourced articles, videos, and books that can help you develop this super-skill.
- Free Code Camp offers a good overview article on [How to Think Like a Programmer - Lessons in Problem-Solving][free-code-camp-think-like-a-programmer].
- Kurtis Pykes writing for Towards Data Science has a nice [hands-on tutorial for problem-solving][Kurtis Pykes: Hands-on Tutorial - How to Improve Your Problem-Solving Skills as A Programmer].
- UC Berkeley has a nice PDF summary of [G. Polya's Problem Solving Techniques][g-polya-how-to-solve-it-summary].
- Originally written in 1945 as guidance for tackling complicated math problems,[G. Polya's How To Solve It][g-polya-how-to-solve-it] (full book) is still _excellent_ advice for problem-solving in general.
- Mentioned in the Free Code Camp Article, V. Anton Spraul's [Think Like a Programmer: An Introduction to Creative Problem Solving][v-anton-spraul-think-like-a-programmer] is a more modern and programming-focused take on the same general methods Polya outlines for mathematics.
- [Felienne Hermans][felienne-hermans] is more focused on _how_ people learn the art of coding and how that maps to learning in general.
She has written [The Programmers Brian][programmers-brain-free-online], with strategies for reading code better, thinking about code clearly, writing better code, and becoming a better code collaborator.
- You can order a physical copy of her book [here][programmers-brain-manning].
- She also has two interesting videos on the same topic: [How to Teach Programming (and other things??)][felienne-hermans-how-to-teach-programming] and [Programming is Writing is Programming ][felienne-hermans-programming-is-writing-is-programming].
- [Algorithmic Thinking (Daniel Zingaro)][daniel-zingaro-algorithmic-thinking] from No Starch Press and [How to think like a programmer (Paul Vickers)][paul-vickers-how-to-think-like-a-programmer] also cover problem-solving when coding.
- [Computational Thinking: A beginner's guide to problem-solving and programming (Karl Beecher)][beecher-computational-thinking] and [Computational Thinking for the Modern Problem-Solver (Riley and Hunt)][riley-and-hunt-computational-thinking]. Also offer strategies for thinking about problems and breaking them down for coding solutions.
- [From Computing to Computational Thinking (Paul S. Wang)][wang-computational-thinking] is a bit more generalized and academic, but offers problem-solving strategies and structures that can apply to more than coding, and does not require prior programming knowledge.
Some of the books above may also be read through the Association of Computing Machinery library.
Membership (paid) information is available at [acm(dot)org][association-for-computing-machinery].
[Kurtis Pykes: Hands-on Tutorial - How to Improve Your Problem-Solving Skills as A Programmer]: https://towardsdatascience.com/hands-on-tutorial-how-to-improve-your-problem-solving-skills-as-a-programmer-83f0a8d1082f
[association-for-computing-machinery]: https://www.acm.org/membership/membership-benefits
[beecher-computational-thinking]: https://www.karlbeecher.com/project/ct
[daniel-zingaro-algorithmic-thinking]: https://nostarch.com/algorithmic-thinking
[felienne-hermans-how-to-teach-programming]: https://www.youtube.com/watch?v=g1ib43q3uXQ
[felienne-hermans-programming-is-writing-is-programming]: https://www.youtube.com/watch?v=uO3a4HIBDU4
[felienne-hermans]: https://www.felienne.com/
[free-code-camp-think-like-a-programmer]: https://www.freecodecamp.org/news/how-to-think-like-a-programmer-lessons-in-problem-solving-d1d8bf1de7d2/
[g-polya-how-to-solve-it-summary]: https://math.berkeley.edu/~gmelvin/polya.pdf
[g-polya-how-to-solve-it]: https://press.princeton.edu/books/paperback/9780691164076/how-to-solve-it
[paul-vickers-how-to-think-like-a-programmer]: https://www.researchgate.net/publication/236270907_How_to_Think_like_a_Programmer_Problem_Solving_for_the_Bewildered
[programmers-brain-free-online]: https://www.manning.com/books/the-programmers-brain#toc
[programmers-brain-manning]: https://www.manning.com/books/the-programmers-brain
[riley-and-hunt-computational-thinking]: https://www.amazon.com/Computational-Thinking-Problem-Textbooks-Computing-ebook/dp/B00IZL9NQI
[v-anton-spraul-think-like-a-programmer]: https://archive.org/details/think-like-a-programmer/page/n19/mode/2up
[wang-computational-thinking]: https://www.amazon.com/Computing-Computational-Thinking-Paul-Wang-dp-1482217651/dp/1482217651/ref=mt_other?_encoding=UTF8&me=&qid=

View File

@@ -5,28 +5,35 @@
"slug": "installation",
"path": "docs/INSTALLATION.md",
"title": "Installing Python locally",
"blurb": "Learn how to install Python locally to solve Exercism's exercises on your own machine"
"blurb": "Learn how to install Python locally to solve Exercism's exercises on your own machine."
},
{
"uuid": "8508154c-70e2-4f98-8262-20190db15c1f",
"slug": "learning",
"path": "docs/LEARNING.md",
"title": "How to learn Python",
"blurb": "An overview of how to get started from scratch with Python"
"blurb": "An overview of how to get started from scratch with Python."
},
{
"uuid": "8666f259-de7d-4928-ae6f-15ff6fe6bb74",
"slug": "tests",
"path": "docs/TESTS.md",
"title": "Testing on the Python track",
"blurb": "Learn how to test your Python exercises on Exercism"
"blurb": "Learn how to test your Python exercises on Exercism."
},
{
"uuid": "f18d3af2-fb71-41c6-984a-32b3ba86bf02",
"slug": "problem-solving",
"path": "docs/PROBLEM-SOLVING.md",
"title": "Problem Solving Resources",
"blurb": "Learn some general problem-solving techniques to help you with programming."
},
{
"uuid": "73ced51d-76d0-45af-952c-8a6d7b5f3f7a",
"slug": "resources",
"path": "docs/RESOURCES.md",
"title": "Useful Python resources",
"blurb": "A collection of useful resources to help you master Python"
"blurb": "A collection of useful resources to help you master Python."
},
{
"uuid": "0dbb029b-ec67-4bbe-9ff7-483bf3a96af1",