Post Made Community Wiki by greyfade
source | link

I have taken a bunch of programming classes in my life from high school to College. I can say that I really didn't learn too much from my first c++ class other than how to print things to a stream.

My advice, as a young student, who has only for the past few years had any real work being a developer, is to not dumb things down on them. Tell them what they are doing and how it works down to the operating system level (No need to get into comp eng IMO).

I think teaching them C is a better way to go about it (it will still almost always compile as C++ as you know). Teaching them what the terminal really is, how their program interacts with it, that a string is an array of chars ended with a \0 in memory, what malloc is and how C++ abstracts it, how a char and an int are stored in memory, ect... These things are what makes someone actually know how to solve a problem when they come across it in development.

I can not stress the importance of letting the kids program and being there mainly to answer questions. In my experience, you learn a language by using it. Books and lessons can be helpful and are necessary to get started, but in the end, I say give them a C/C++ file and say: This is an example of X, I'd like you to do Y(which can be done by hacking X). Show them how to use man pages(if they are using *NIX) or show them and let them explore the std libs to figure out things on their own.

TL;DR Let the kids teach themselves. Be there to provide structure and answer questions.

Also: Linked lists are the truth!