Trying to resolve stupid C programming problem re. hashing. Taking a break and saw this. Brought back memories. I hated school/hated homework/detested being forced to work at stuff that others wanted me to do. Really hated school. Never did more than bare minimum, but then I discovered I could study in a library, and read what I wanted. Was a joy.
Read everything. Teachers would give me stupid childrens books, but when they left, I would find the advanced science section and just read stuff. This is a good teaching algo. Tell the kid the library is a dangerous and forbidden place, then let him go there. Here is idea for you. I recall my mom bought me flash-cards, and she sat with me until I was able to learn/memorise the multiplication table. At the time, I recall being very surprised that I could actually automatically memorize all these number combos. Honestly didn't believe I could do it. I thought it would take months, took about 1 or two nights. So I could do it, it was big revelation.
Here is idea: Work very carefully, using rewards of some kind, to show 8-year-old son the algorithms for doing the homework - the specific steps that one has to follow to get it done. Kids don't know this - they don't know the algo for studying and learning new stuff. Some don't even know they can memorize (which, actually, you can - quite a lot actually - there are teachable tricks to memory work). For example, if he has to add some big numbers together, make sure he understands the process for breaking them down in to little, easy to add numbers, and then putting them back together again. I remember being kicked out of class for talking and missing where they taught the process for long division. Annoyed me for years. I just missed it. Finally, got some other student to show me.
For adults, so much of what we do is automatic, we have trouble recalling how and when we learned it. I am perhaps a bit of an outlier, as I recall exactly, and specifically, how and where I learned just about every key thing. Each was a big surprise.
I remember learning how to study and pass exams. Also thought I was just too stupid to do it. I just didn't know the algo. Teach the kid to write down stuff, and show him how it does two things. First, it lets you go back and almost cheat - you can refresh yourself quickly on something really complicated, just by skipping thru your notes. And secondly, the very act of looking, thinking, writing, and then looking at what you wrote, serves to load the data into your "necktop" computer - ie. your brain. It is about 100 times better than just reading the material. Just the act of copying the stuff onto paper - study notes, a work-book, a computer-screen, etc.. will help massively. This, I recall, was a huge revelation.
Oh, and teach clearly, that any big, ugly problem, can usually be broken down into smaller and smaller pieces, so that each small piece can be solved. Then, you just re-assemble the pieces carefully, and voila, the problem almost appears to have solved itself. (Convergence by step-wise refinement, top-down planning, PERT networks, GANTT charting, all that project management hoohaw is just specific formalizations of a very general way of working). But kids don't know this, unless someone tells them carefully, and then maybe shows them. If math is a problem, it is usually because the math teacher is bad. (Maybe that is you? I recall my father - who was a smart guy - could not teach to save his life. He was clever, but he lacked the ability to make simple cognative leaps. He had little imagination. My mother was the genius - she could just look at a problem, and see straight thru the fluff, and nail the key fact, and ask the key question. But I believe these skills are teachable. There is a famous teaching experiment re. trading, (google "the silence of the Turtles", a chapter in a financial book about trading commodities). Bottom line was, if people are able to learn the basic rules, and the rules were correct, you could teach ordinary people to trade the commodity markets successfully, and make big money. This result defied all commonly held views in pedogological, financial and psychological research, and contradicted the widely held economic view that markets are somehow efficient. It all came down to just teaching people some basic procedures - algorithms - on how to do something that was only of medium level difficulty.
So, this is the algo for your son. Make sure he knows - step by step by step - how he can solve a certain class of problems. Math is an easy place to start. The rules are simple, can be understood, and then applied. And you can then check that you did it right. Get him to draw a flowchart of how to solve a tough problem that he feels he can't do. Keep re-enforcing, by gentle explanation, over and over, that everyone faces these issues, and everyone everywhere has to do some form of this thing he is learning how to do. Everybody has to begin somewhere. Work with him on the basics, if he does not have the basics. (lots of kids don't now.). When he figures out something, make sure to give some positive response.
And try to find out what really excites him. Use that both in the re-enforcement regime, and frame the stuff he has difficulty with terms of that thing he likes. Old example: kids that didn't think they could do math, but liked baseball, could be taught a lot of math and stats just by keeping track of scores, RBI's, batting averages, league tables, etc. Or, if they liked cars, they could learn basic calculus concepts by looking at how the speedometer needle moved... stuff like that. Find things that he likes, and frame hard problem-solving work within the context of the environment that surrounds the stuff he likes. That way, it holds his interest long enough for him to maybe learn the key concepts, so that the homework becomes easier as time goes on.
Hope some of this helps.
Oh, and limit TV and computer games. Especially computer games. Too much gaming degrades imagination and social skills, really limits kid's mental growth.
Hope something helps. Best of luck.