I recommend maybe doing more math instead. Or pick up a book called how to solve it . Alot of the things are easily translatable to programming and computer science really is mathematics as well. They're both related.
Www.lpthw.org
Www.hackerrank.com
lots of www.google.com
And when he's not in front of a computer he should be reading
http://www.amazon.com/How-Solve-It-Mathematical-Princeton/dp/069111966X (don't let the math scare him away if that's not his thing...at its core it's a book about how to solve any type of problem)
You might want a book like <em>How to Solve It</em> which will give you a general toolkit of problem solving techniques. It's not a textbook per se, but if you're struggling with how to even approach math problems then it might be a good first step.
It isn't programming specifically, but for problem solving skills you can't get better than How to Solve it. Absolutely classic book, inexpensive, and well worth anybody's time IMO.
http://www.amazon.com/gp/product/069111966X This book is invaluable. Don't let the fact that that it was written for math teachers to learn how to cajole students into learning how to solve math problems fool you.
Anecdotally, I've found that when you're working on a problem and keep coming up with the same ideas that the easiest way out of the rut is to do something else for a while to break out of the tunnel vision. Work on a different project, read about a similiar problem, go see a movie. Doesn't matter. You just need to let your mind wander a bit so it can let go of its fixation. Sometimes I even try solving a problem I'm stuck on in a way that I "know" won't work just to get some insight into the nature of the problem itself.
Read this in my undergrad days and it was pretty good: https://www.amazon.com/How-Solve-Mathematical-Princeton-Science/dp/069111966X
I've used Brilliant.org and other sources to learn problem-solving. I think Brilliant has some nice problems and is neat for keeping track of your progress (how many problems you've solved, what difficulty they are, etc.), but I think you could learn just as efficiently using free resources or just books.
Polya's "How to Solve It" is a frequently cited book for problem-solving. If you are interested in preparing for high-school/college math competitions, then I think the wealth of resources at Art of Problem Solving, as the other reply mentioned, would be your best bet. Zeitz's "Art and Craft of Problem Solving" is another good book for getting introduced to proof-based problem solving/olympiad problems.
How to Solve it and The Art and Craft of Problem Solving are good books.
YOU BET YOUR ASS I DO
And here's one my all-time favorite mathematics channel!
If you're just starting out with the theory stuff, check out this intro course for Discrete Math!
And here's an introductory Proofs book that's really popular: "<em>How to Solve It</em> by G. Polya". It'll give you all the tools you'd need to get started doing your own proofs!
With the exception of “sleep”, all other tactics are covered in the book How To Solve It in some form.
Check out How to Solve It by George Polya.
https://www.amazon.com/How-Solve-Mathematical-Princeton-Science/dp/069111966X
PDF version (not sure its legal)
If you browse the PDF version and like it, then buy a copy.
i dont know if this helps, but i was so desperate to understand math a while back i turned to understanding math from its roots, and through some research, a lot of people mentioned this book
How to solve it: (thats the books name hahah)
this isnt your conventional book of problems and syllabus based chapters, its a more general approach on how to tackle hard problems by slowly working it out and understanding certain logic. Personally only did a bit of it but i got lazy and gave up hahah but there are some pretty cool concepts in there. You can find this book on library genesis haha :D have fun!
This the one thing I was gonna add-in is a foundation in proofs I always recommend https://www.amazon.com/How-Solve-Mathematical-Princeton-Science/dp/069111966X
If you don't wanna read the whole thing basic overview Photo of Polya's process .
"How to solve it" by George Polya. It teaches people how to break apart and solve mathematical problems building methods out of old and how trial and error can help you narrow in on a solution.
It might seem like common sense but at its core a lot of programming/computer science is the fundementals and experience applied over time as the guy above me mentioned building a mental toolbox to apply to situations.
Add onto this how to solve it by George Polya can be an easy introduction to proofs and problem solving to really understand new concepts. https://www.amazon.com/How-Solve-Mathematical-Princeton-Science/dp/069111966X
If you ever need to teach anyone else mathematics it also shows insight into how to simplistically impart mathematical thinking.
“How to solve it” is a pretty classic book that looks at some of the issues you are Looking at. Might be worth a read/browse. https://www.amazon.com/How-Solve-Mathematical-Princeton-Science/dp/069111966X
In addition to the very good suggestions of Hammack's Book of Proof and Velleman's How to Prove It, I'd add:
Get a book on proofs or intro to discrete mathematics.
This is just my perspective, but . . .
I think there are two separate concerns here: 1) the "process" of mathematics, or mathematical thinking; and 2) specific mathematical systems which are fundamental and help frame much of the world of mathematics.
​
Abstract algebra is one of those specific mathematical systems, and is very important to understand in order to really understand things like analysis (e.g. the real numbers are a field), linear algebra (e.g. vector spaces), topology (e.g. the fundamental group), etc.
​
I'd recommend these books, which are for the most part short and easy to read, on mathematical thinking:
​
How to Solve It, Polya ( https://www.amazon.com/How-Solve-Mathematical-Princeton-Science/dp/069111966X ) covers basic strategies for problem solving in mathematics
Mathematics and Plausible Reasoning Vol 1 & 2, Polya ( https://www.amazon.com/Mathematics-Plausible-Reasoning-Induction-Analogy/dp/0691025096 ) does a great job of teaching you how to find/frame good mathematical conjectures that you can then attempt to prove or disprove.
Mathematical Proof, Chartrand ( https://www.amazon.com/Mathematical-Proofs-Transition-Advanced-Mathematics/dp/0321797094 ) does a good job of teaching how to prove mathematical conjectures.
​
As for really understanding the foundations of modern mathematics, I would start with Concepts of Modern Mathematics by Ian Steward ( https://www.amazon.com/Concepts-Modern-Mathematics-Dover-Books/dp/0486284247 ) . It will help conceptually relate the major branches of modern mathematics and build the motivation and intuition of the ideas behind these branches.
​
Abstract algebra and analysis are very fundamental to mathematics. There are books on each that I found gave a good conceptual introduction as well as still provided rigor (sometimes at the expense of full coverage of the topics). They are:
​
A Book of Abstract Algebra, Pinter ( https://www.amazon.com/Book-Abstract-Algebra-Second-Mathematics/dp/0486474178 )
​
Understanding Analysis, Abbott ( https://www.amazon.com/Understanding-Analysis-Undergraduate-Texts-Mathematics/dp/1493927116 ).
​
If you read through these books in the order listed here, it might provide you with that level of understanding of mathematics you talked about.
How to solve it is worth looking into.
Polya was writing specifically about math but it is still the best problem solving heuristic I know of.
http://www.math.uchicago.edu/~may/VIGRE/VIGRE2011/REUPapers/Lian.pdf
https://www.ocf.berkeley.edu/~abhishek/chicmath.htm#i:foundations
In particular:
http://www.amazon.com/How-Solve-It-Mathematical-Princeton/dp/069111966X
http://www.amazon.com/How-Prove-It-Structured-Approach/dp/0521675995
http://www.amazon.com/Naive-Set-Theory-Paul-Halmos/dp/1614271313
http://www.amazon.com/Mathematical-Introduction-Logic-Second-Edition/dp/0122384520
I recommend:
In my experience, developers who say they've "hardly ever needed math to write a computer program" are the ones whose programs would benefit the most from a little more mathematical thinking. Here's a thread on HN where I talked a bit about how recognizing monoids when they crop up can lead to simpler, more sensible interfaces.
Do you understand what unknown variables are and why you are solving for them? Do you know why you are asked to move variables from one side to another?
Regarding problem solving...
If you are dead serious and really want to learn problem solving as a general skill, and are willing to read something that has a few examples a bit over your head but is extremely helpful in general, then may I suggest George Polya's How to Solve It. It is written at probably a high school geometry level but many of his discussions are generic enough that they should give you some insight into the problem solving process.
Essentially Polya wrote a book (maybe the book) on problem solving patterns i.e. when faced with a problem ask this set of questions and try strategy A or B, etc. He has I think 12 core questions to always ask. I found it very helpful myself. The first third or so of the book is a narrative of him showing how an ideal teacher would apply his teaching methods to guide students to discover concepts on their own.
A PDF of his original 1945 edition is available here: https://notendur.hi.is/hei2/teaching/Polya_HowToSolveIt.pdf
But a new edition paperback is on Amazon for $14, I have it and have made tons of pencil notes in the margins.
BTW if you do try to read it, you only need to know a few things to have the first part make sense. A "rectangular parallelipiped" (horrible name) is just a rectangular prism, so imagine it is your classroom's four walls floor and ceiling, etc. If you know how to find the diagonal length of a square or rectangle (the length of a line between two opposite corners) you probably know enough to basically follow along since that is the core of his example. If not, here's the trick, just divide the square (or rectangle) into two triangles and apply the pythagorean theorem. A huge part of his problem solving method revolves around asking yourself if you know of a similar problem with a similar pattern that you can adapt to solve your current problem. It's like being asked to find the area of a half circle, you don't know the formula, but you know the formula for the area of a circle, so you can use that as a base and adapt it to the problem of the half circle.
BTW 2: Math is hard. For everybody. People who are good at math paid for it in blood sweat and tears.
You could just do all the exercises on Khan Academy and that should cover all your bases.
If you're majoring in math, these books might come in handy.