Jump to content


Can anyone recommend a tutorial for C++?


Recommended Posts

My son is interested in learning programming. My brother, an EE, told me to download Microsoft Visual Studio and then find an online tutorial for C++. Wondering if anyone has had experience with a tutorial or book that is user-friendly for kids (son is 11). I don't have time to work with him on it, so he needs to be able to figure it out on his own. Thank you!

Link to comment
Share on other sites

I would not recommend C++ as an eleven year old's first exposure to programming. Have you already looked at Scratch? https://scratch.mit.edu/ and http://scratched.gse.harvard.edu/ (this has educator resources for using scratch which would be handy for you as well). 

Some scratch books to consider:




I'd also highly recommend code.org - https://studio.code.org/Your son might be able to handle the accelerated course.


And finally I think small basic would be a great place for him to start / enrich programming:



Small basic is from Microsoft, and it's a simplified version of Microsoft Visual Studio with a subset of basic as the programming language which makes it a much gentler place to start.




Edited by keirin
Link to comment
Share on other sites

Check out codeacedemy.com.   We use jscript at work, and it is beneficial to a few of customers to learn it too.   We recommend codeacedamy to them and it is free.  They don't have C++, but they do have javascript.   There is a great deal of commonality in the Java/C group of languages.  This uses a wizard to walk you through lessons.   After that the online lessons should be do-able for an 11-year-old.  

Link to comment
Share on other sites

One of mine enjoyed Homeschool Programming.  They don't have C++.  He used the Java and the Android courses.  They have C# and some other stuff.  He was able to use it completely on his own and did start about that age.  Homeschool Buyer's Coop often has group buys and offers on their site.  The courses are very well done. 


And the good thing with that is if you started with something that was maybe too difficult, you could set it aside and try one of their lower level courses before that. 


You could also check out your local library.  They may have Dummy Guides for that.  He could at least flip through that to get an idea of what it is like.  He may or may not be able to get started with that. 


My kid thought stuff like Scratch was very babyish.  Not all kids do though so that is also something to consider for him. 

Link to comment
Share on other sites

Might I recommend C instead? Easier to learn by far and it's widely used in industry.


The details of <insert current fad language here> is hard to grasp, but the logic of languages in general is not. 11 is probably too soon (although I learned at 11...) for all the minutiae of any language I think.


My old standby has always been 'Teach Yourself C in 21 days'. It teaches all the basics of the language and programming in general. Sadly it is not that kid friendly (no cartoon characters) but the text is not difficult to understand.

Link to comment
Share on other sites

I've taught around 200 kids programming over the last

2 years. I've used maybe 25 languages over the years, though

never "officially" had a programming job.



The problem at 4th and 5th grade, is that they can learn syntax

(where to cross your t's and dot your i's), but the synthesis of

the 5 or 10 steps to writing a program is VERY difficult. Maybe

1 out of 20 can at that age. A large minority can understand

other's programs superficially enough to modify them.


A big part of the problem is that synthesis is completely foreign

to them. No part of their schooling so far requires them to do

anything like it. They're asked to 1) follow directions 2) memorize

and regurgitate things and 3) solve simple 1 step problems.

It's the same problem that makes proofs in high school

Geometry the hardest class anyone takes.  It's the same

thing I saw good A students struggling with on math team

year after year.



At 6th grade, a bare majority can handle simple

programs, but often with a lot of handholding. Some of

my brighter students had done things on their own, but

in a limited fashion, and would often on their own

get stuck debugging for hours on 1 minute problems.

I remember doing the same on the very earliest microcomputers

in 4th-8th grade (and that was without manuals or the internet)


The other big problem they have on their own is

that at that age, critical reading skills are low. And

finding the answers to problems often requires searching

the net and reading lots of documentation and other code.



We use Scratch for the younger kids, but it doesn't help

with the synthesis part. Much of what they can do, is follow

along on a template that we show them, making their own

modifications.  And it's still a very labor intensive process, which

I handle by hiring lots of high-school and college kids as teaching

assistants.  Scratch teaches the right things with regard to

synthesizing problems, but when they get a little better, it

has a large number of other artificial barriers that you just don't get

in other languages.


For the older ones, I wrote 200 pages of lessons in C.

I mostly keep data structures, functions, and pointers out

of the picture so that it's not much different than BASIC.


Anyone that masters the basics of C can usually do

simple arcade game type programming with a library

in the later lessons. And that is a very strong motivation for them.


I introduce Object Oriented Programming later with

Javascript or Python or Java.



Python seems to have the largest number of books out

there for learning on your own, but my experience in handing

these to 6th graders was that they still needed a mentor.


In almost all other beginning C/C++/Java (don't use C++ for

kids), the language in the books is for college aged kids, and most

kids will be lost.  Though, if you've taken the old fashioned path

and yours is living on a diet of Dickens, Austen, Dostoevsky,

Shakespeare, Homer, and Virgil, they'd probably be ok.



Edited by achong
  • Like 1
Link to comment
Share on other sites

If you want to know what the Computer Science Teachers of America recommends for K-8, I'd recommend http://www.csta.acm.org/Curriculum/sub/CurrFiles/CS_K-8_Building_a_Foundation.pdf

They give a number of options.


I've only taught high school students myself (10+ years as a computer science teacher) but I think the recommendations I gave would be a good start for a middle school student.

Edited by keirin
Link to comment
Share on other sites

Would C or C++ be a good thing to learn if you want to write scripts for an Arduino?  How about if you have a high school student who knows python and some Java?  


The language used by Arduino is C with some extras and some libraries for interfacing with the board.  I think there are alternatives to C for Arduino but you cannot interface with the board directly.  Although you can buy a Netduino, which uses the .NET framework, and then use C# (which is pretty close to Java).


Python is not supported for direct interfacing to Arduino board (though you can 'cheat' and talk to the board using the serial port).  The syntax of Python is not like C, so there will be some learning curve.  Java is like C++ but not exactly, so again learning curve but smaller.


The power for all languages lies in the functionality provided by various libraries, so there will always be some learning curve involved (for example on Arduino there is the avr-libc).

  • Like 1
Link to comment
Share on other sites

One of the problems with starting with something like Java, C, C+, Python, etc. is that it is difficult to create output that will satisify an 11 year old. The syntax for these languages is also really pesky. Chasing down syntax errors is a pain and really discouraging to newbie programmers, especially when the error is nowhere near where the program breaks down..


When I was a kid, "Hello World" was pretty cool. I can't imagine one of today's kids being nearly as excited.


So, what does he want to do with programming? Many kids think of writing games when they think programming.

If he wants to make games, Gamemaker is an easy to learn interface that can produce cool results. There are also lots of resources and a very helpful community. It also allows the kid to start with a drag-and-drop interface where he doesn't have to worry about syntax, then move to writing code with just text here and there.




If he has an iPad, there are lots and lots of apps that also teach the basics of coding and also let you make really cool apps.


I wouldn't worry too much about the specific language or programming environment. Once he understands how programming works, the basic concepts (at least the ones a middler schooler would learn) translate to almost all languages. Good programmers can pick up new computer languages even easier than a polyglot can pick up a new human language.

Link to comment
Share on other sites

Check out codeacedemy.com. We use jscript at work, and it is beneficial to a few of customers to learn it too. We recommend codeacedamy to them and it is free. They don't have C++, but they do have javascript. There is a great deal of commonality in the Java/C group of languages. This uses a wizard to walk you through lessons. After that the online lessons should be do-able for an 11-year-old.

My son started with Codeacedemy also and he was about 11 at the time. It was a great environment for him to learn in. He went on to do quite a few other courses online including python on coursera.

Link to comment
Share on other sites

I've been a professional SW eng for ~20 years, taught several people (adults and kids) - I suggest NOT going with codeacademy.


We tried it here (for python) and I was quite disappointed.  Codeacademy focuses very much on syntax - and provides almost no instruction or feedback on how to architect a program, make it testable, make it readable by anyone else, etc.  Realistically, how could it - but that's by far the more difficult portion of programming.  This is like using a grammar book to teach essay writing.


I'm unconvinced it's a good approach, even for just 'trying it out'.  IME, it creates more frustration than necessary and promotes bad habits. I think it's also likely to end up with a student who's finished the 'course' but then still can't really program anything.


I'm generally a fan of book-learning - but for most people I think you need the feedback of an actual person to learn to program. 

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...