Jump to content

Menu

Looking for real programming resources


Recommended Posts

DS 10 has been dabbling in programming for a few years and has done pretty well with it. We have mostly just left him free to learn/do what he likes, and he has worked his way through quite a few tutorials on Code Academy (all of Python, Java, CSS/HTML and maybe more), he has reached the limit of what Scratch can do, and has done a lot of work in Python, creating encryption/decryption programs, a draw program, and several others. He is poking away at various things all the time and I don't know the full extent of what he has done or knows. DH knows a little programming (I know next to nothing) and has been able to offer a little guidance here and there, but it is not his area of expertise. It has become clear that DS has some real gaps in his knowledge, though, and needs to fill them in if he wants to start doing any real work. He is trying to do higher level, more complex things and tends to cobble together pieces of code in order to get his programs to do what he wants, but lacks a deep understanding of what is going on and how to do things the right way. This results in frustration and hours and hours of wasted time wading through documentation he doesn't understand fully. Are there any books/courses/other resources that anyone could recommend that would guide him through building deeper knowledge from the ground up? As far as his math ability goes, he is cruising through AOPS Pre-A and has done a fair amount of Jacobs Algebra, but went back to AOPS because he wanted the depth it offered.

  • Like 1
Link to post
Share on other sites

We have found a tutor, who teaches and prepares for Olympiad programming online. DS9(then 10yo) is starting next October.

But it's a very serious program with commitments for the years and with the lessons are being held twice per week plus extensive homework.

  • Like 2
Link to post
Share on other sites

Given his background, my advice is to just get a solid introductory text for programming and have him work through it systematically.

 

Deitel & Deitel texts are fairly good and come in many languages, but Tony Gaddis has several as well and of course there are other authors. Pick a genuine programming textbook---NOT a "for Dummies" or "quick start manual" or any other book (or website) that is essentially a programming "recipe book" with lots of step by step recipes.

 

Get a text meant for college freshman and have him start in chapter 1 and work through to the end. Slowly and steadily. Plan for it to take 3 years to finish the whole text. There is no royal road to programming you need to work methodically and practice regularly.

You have to do your programming drills until the structures sink in and you can use code each time, without having to think it through slowly.

 

Pick ONE language and pick ONE text book, then USE the book.

He can't skim the introductory textbook. He can't watch YT videos on the topics to avoid having to read the book. Watching other people solve the problems is NOT learning how to do it.

 

Programming is NOT a spectator sport. He must, must, must, must, must do the work himself. IF he works diligently and steadily from the beginning, then he'll be able to do the work in later chapters OR he will be able to seek help online and benefit from the explanations he's given.

 

So what ever programming text book you pick, require that he read the lessons carefully, type up the examples as he works through the chapter, then answer the quiz questions throughout the lesson.

Then at the end of the chapter have him do the chapter quizzes, and check his answers. Then when he does the programming practice at the end of the chapter, he needs to get a pencil and paper and PLAN then WRITE the program by hand.

 

After he's planned and written the program in pencil, he can take the program and type it up and run it.

 

It's the slow, diligent, often boring way, but it's the way that teaches deeply and prevents the hours of frustration over every little thing later on. To truly master the material, he should type up the programs only after planning and solving them on paper first.

 

I feel strongly that beginning programmers should learn to design the program AND write the syntax itself--not just type it and let the code editor clean up their sloppy mistakes.

 

The better he truly understands programming conceptually, and masters his fundamentals, and the stronger his skill set will be.

 

Once you master programming in ONE language, he will be able to easily apply that same thing to other languages.

  • Like 3
Link to post
Share on other sites

Given his background, my advice is to just get a solid introductory text for programming and have him work through it systematically.

 

Deitel & Deitel texts are fairly good and come in many languages, but Tony Gaddis has several as well and of course there are other authors. Pick a genuine programming textbook---NOT a "for Dummies" or "quick start manual" or any other book (or website) that is essentially a programming "recipe book" with lots of step by step recipes.

 

Get a text meant for college freshman and have him start in chapter 1 and work through to the end. Slowly and steadily. Plan for it to take 3 years to finish the whole text. There is no royal road to programming you need to work methodically and practice regularly.

You have to do your programming drills until the structures sink in and you can use code each time, without having to think it through slowly.

 

Pick ONE language and pick ONE text book, then USE the book.

He can't skim the introductory textbook. He can't watch YT videos on the topics to avoid having to read the book. Watching other people solve the problems is NOT learning how to do it.

 

Programming is NOT a spectator sport. He must, must, must, must, must do the work himself. IF he works diligently and steadily from the beginning, then he'll be able to do the work in later chapters OR he will be able to seek help online and benefit from the explanations he's given.

 

So what ever programming text book you pick, require that he read the lessons carefully, type up the examples as he works through the chapter, then answer the quiz questions throughout the lesson.

Then at the end of the chapter have him do the chapter quizzes, and check his answers. Then when he does the programming practice at the end of the chapter, he needs to get a pencil and paper and PLAN then WRITE the program by hand.

 

After he's planned and written the program in pencil, he can take the program and type it up and run it.

 

It's the slow, diligent, often boring way, but it's the way that teaches deeply and prevents the hours of frustration over every little thing later on. To truly master the material, he should type up the programs only after planning and solving them on paper first.

 

I feel strongly that beginning programmers should learn to design the program AND write the syntax itself--not just type it and let the code editor clean up their sloppy mistakes.

 

The better he truly understands programming conceptually, and masters his fundamentals, and the stronger his skill set will be.

 

Once you master programming in ONE language, he will be able to easily apply that same thing to other languages.

 

Thank you -- this is exactly what I suspected. Now, I just have to convince DS to give it a try. He isn't interested in YT videos or quick start/flashy stuff. He wants the real deal, but isn't sure he wants to do the real work. We'll see how it goes.

 

Link to post
Share on other sites

Thank you -- this is exactly what I suspected. Now, I just have to convince DS to give it a try. He isn't interested in YT videos or quick start/flashy stuff. He wants the real deal, but isn't sure he wants to do the real work. We'll see how it goes.

 

 

As far as my experience with 10 year old kids go, that attitude is par for the course. Perhaps he's too immature to appreciate the benefit in that approach now and maybe, just maybe it isn't worth the battle if it'll extinguish his interest prematurely. You have to know your kid.

 

I have let my math-accelerated kids skip the AoPS series because they really don't like the books and I think that forcing them through it would possibly extinguish their interest in mathematics prematurely. Instead we use less popular or even unknown series and do math our own way.

 

For my kids, Information Technology is a required subject from 3rd grade. We're in it for the long haul. There is no reason to race through. Our track isn't perfect or seamless. You can use smaller books on smaller kids and build up and on gradually.  My kids are NOT independent at all, but if I work with them and stay involved, they can work at high levels.

 

Hello World! Python for Kids and Other Beginners is a good first book to work through cover to cover for kids.

Python Programming for the Absolute Beginner is another book with good reviews and might be ideal to work through cover to cover.

 

Once he's completed a few smaller books cover to cover, then get a "real" textbook and set the goal to work all the way through the text GRADUALLY.

 

Many programming texts I have seen have a section in the preface or introduction that talks about the organization of the text, this section may have a flowchart which shows which chapters HAVE to proceed which, this chart is helpful in helping you break down other texts and even just deciding what you're student is ready for.

 

So you might just do chapters 2-6 slowly and methodically of your "real" text book that first year.

Then you can decide do you want to do the Object Oriented chapters?

If so you'd do chapters 7, 11, 15 and 16, in that order.

Or maybe you want to do some work with files next?

If so you take 6 months and work methodically through chapters 8, 9, 10 & 13.

 

Then, spend a summer building interesting programs from a list of projects that you get off line and see how you do.

Next school year you can go back to your "real" text and work through chapters 12, 14, 17, 18 and 19, the only chapters you have not studied yet, while still working on programming projects in your own time.

 

This can easily take 3 years to do, or longer, but the end result is that if you kid wants to write programs, he's got the foundation to do it, and more importantly he'll know the fundamentals well enough that he can ask good questions and actually understand the responses that he gets from online coding forums. He will see that he understand the examples that he comes across and won't be so easily frustrated.

Edited by Gil
  • Like 1
Link to post
Share on other sites

He has already made the call to take the arduous route in music for both piano and violin and in math, and he sees it paying dividends. DS isn't afraid of the work (the violin in particular has been a serious challenge, but once he decided to go all in, he has excelled) and I suspect he will come around on programming too. He wants to do it right, but it's hard and slow. I can't blame him for his reluctance.  I always admire him when he decides to do things right, and then follows through with impressive dedication.

 

Thank you for your insights -- I really appreciate it.

Link to post
Share on other sites

He has already made the call to take the arduous route in music for both piano and violin and in math, and he sees it paying dividends. DS isn't afraid of the work (the violin in particular has been a serious challenge, but once he decided to go all in, he has excelled) and I suspect he will come around on programming too. He wants to do it right, but it's hard and slow. I can't blame him for his reluctance.  I always admire him when he decides to do things right, and then follows through with impressive dedication.

 

Thank you for your insights -- I really appreciate it.

 

There is no blame or shame in being reluctant to do hard things. Its the natural and normal response. That's why we call those things "hard".

 

He's just 10. If he's interested and willing then just have him work through and complete a couple of quality smaller books first, then he can spend the middle or high school years doing the hard work of diligently completing a "real" text in waves. Then he can decide from there what's next.

 

Personally I feel there is wisdom in limiting and later balancing how many "hard things" your kids have to do at once.

 

I limited The Boys to 1 hard thing at a time for elementary years, and in middle school they're learning to take on 2 hard things, and in high school the plan is 3 hard things at a time so that hopefully by the time they are adults, they'll be able to handle 4 or 5 "hard things" at a time.

  • Like 1
Link to post
Share on other sites

Your student is still quite young. It seems that a fun approach to it now would be better in the long run. Maybe something like the high end Lego Mindstorms.

https://en.wikipedia.org/wiki/Lego_Mindstorms

Learning to "hack" these off the shelf items is where he could really learn.

 

Maybe there are other similar items out there to look at.  My kids are teenagers so I don't keep up with it.

 

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...