

Ask HN: How Would You Teach Kids Computer Science and Engineering Full Time? - Malloc_Leake

I would like to do this for a living. Kids get lessons in piano, sports, etc... and I think a lot of parents would pay to have someone teach their kids how to use computers for more than checking Facebook. I also think back when I was 6 years old I would have LOVED to have someone who could have taught me how to do more with PCs than play games on them. I feel like even teaching them the very basics (simple Python, HTML) would give kids such a huge advantage when it comes to starting a career and finding good paying work in the future. You could sell it to the parents as teaching a vital skill, and to kids in any number of ways. Make an Arduino part of your lesson fee and let the kids keep a robot they built, etc... So how do you think I could make this pipe dream a reality and quit my day job?
======
shawndumas
The only advice I can give is to share my story.

I started my son at five with MIT's Scratch [1] followed up by Lego Mindstorms
[2].

I then created a text adventure engine [3] that could run adventures written
in a very simple Lua based DSL so he could make a simple text game [4]. Mom
helped with spelling and grammar and I suggested a puzzle but he wrote the
adventure himself.

Then I transitioned him to Lua on the iPad with Codea [5] and he (with a
little help from me) made a game called StarFighter [6].

I choose Lua because it is a great intro language. Very simple with
minimalistic syntax, few concepts, few primitives, few keywords, dynamically-
typed / garbage collected, variable arity, no real gotchas, good tool support,
great speed, the ability to access a key in a hash either using bracket or
dotted notation, and one of the best programming books for any language (PiL).

But it also scales well; closures, first-class / true anonymous functions,
metatables / metamethods, nice simple API for talking between script and C,
tail-call optimization, coroutines, short circuiting operators.

And, the path from Lua to JavaScript is very straightforward. In fact I'd say
that mastery of Lua would make you a mid-level JS programmer right out of the
box...

The next step was JavaScript and ImpactJS [7]. I got him two books [8][9] and
he loved them.

He is now doing HTML/CSS/JS and is in the middle of a fantastic book called
Pro Javascript [10]. Once he is done with that book I am going to consider him
on his own...

But just to give you an idea; he is 11 now and I am learning Scala for work.
He's been watching videos with me and I paused it and ask questions and then I
asked him where he thinks the presenter is going to go. He ran to his Ubuntu
desktop and apt-get'ed Scala and cranked up a REPL session and showed me; he
was correct!

\----

[1]: [http://scratch.mit.edu/](http://scratch.mit.edu/)

[2]: [http://mindstorms.lego.com/en-
us/default.aspx](http://mindstorms.lego.com/en-us/default.aspx)

[3]:
[https://github.com/shawndumas/adventure.lua](https://github.com/shawndumas/adventure.lua)

[4]:
[https://github.com/shawndumas/adventure.lua/blob/master/theT...](https://github.com/shawndumas/adventure.lua/blob/master/theTenthFreighter.lua)

[5]: [http://twolivesleft.com/Codea/](http://twolivesleft.com/Codea/)

[6]:
[https://gist.github.com/shawndumas/2762088](https://gist.github.com/shawndumas/2762088)

[7]: [http://impactjs.com/](http://impactjs.com/)

[8]: [http://www.amazon.com/HTML5-Game-Development-ImpactJS-
Cielen...](http://www.amazon.com/HTML5-Game-Development-ImpactJS-
Cielen/dp/1849694567/ref=sr_1_1?ie=UTF8&qid=1374590779&sr=8-1&keywords=impactjs)

[9]: [http://www.amazon.com/Building-HTML5-Games-ImpactJS-
Introduc...](http://www.amazon.com/Building-HTML5-Games-ImpactJS-
Introduction/dp/1449315178/ref=sr_1_2?ie=UTF8&qid=1374590779&sr=8-2&keywords=impactjs)

[10]: [http://www.amazon.com/Professional-JavaScript-Developers-
Wro...](http://www.amazon.com/Professional-JavaScript-Developers-Wrox-
Guides/dp/0764579088)

~~~
marpstar
This is awesome. My girlfriend and I were just talking yesterday about our
2-year-old and how I want to write games with him once he's old enough.

I begged my parents for LEGO Mindstorms when I was a kid but we couldn't
afford it. I'm hoping that he'll be as interested in learning to code as I was
when I was young.

------
throwaway3929
You've rubbed me the wrong way. I'm sorry if what follows hurts your feelings.

Kids should learn how to program because they're interested, not because you
want to quit your day job.

Marketing a camp for kids as a "job skill" is completely disgusting. It's like
you're giving baseball lessons to kids while promising the parents that it
makes kids more likely to play in the MLB later on in life. It's crass and
insincere.

Kids like to play, have fun and be happy, not sit in a room and learn HTML. A
real "benefit" you could provide is a safe haven for gifted kids who don't
have the benefit of rich parents or even a caring school district, centered
around programming, that markets itself as a "special place" for smart,
sensitive kids who need that environment. Fill it with lots of cool science
toys, challenging books and make it a happy place. Some gifted kids go home to
a scary, dark place, and you could provide a haven for them, instead of
setting unrealistic expectations for overbearing soccer moms.

"So how do you think I could make this pipe dream a reality and quit my day
job?"

If it's such a pipe dream, remove your head from your ass and figure it out
yourself. This is advice from the bottom of my heart to you. Finding your own
"path" is a struggle, especially if you want to blow the system and do your
own thing. Asking this question is a bad first step.

It's not a "pipe dream" though - you just don't want to work 8 hours a day and
will market to pushy parents who want their kids to become startup
millionaires to do it.

Working with kids takes a special kind of love, patience and understanding.
They are very impressionable, and gifted kids are extraordinarily sensitive,
speaking from the experience of being one. If you want to work with them just
to make money, do the world a favor and find another scheme (there are lots of
ideas to make money and carve your way in the world). If you'd like to talk
about how to nurture bright kids who are interested in programming, you'll
find a different type of commenter coming out of the woodwork, and I'll be
happy to give you my perspective.

~~~
Malloc_Leake
Heh, no hurt feelings here and I don't think you really needed to make a
throwaway account just to play devil's advocate. I guess "how do I quit my day
job?" sounds a bit off when you put it like that. I recognize that most good
teachers work more than 40 hours a week and I wouldn't mind doing that. I
didn't bring this up yet, but my wife is a social worker and I admire her for
what she does every day, helping people who really need it. I just feel like
if I could teach kids advanced computer topics it would be a better
(subjective) use of my talent than working directly or indirectly for the
military. If I just wanted money the path of least resistance is right in
front of me. I could leverage this internship for any entry level software
engineering job and at a lot of companies / locations be making plenty to
provide for my family. I just wouldn't be happy.

~~~
throwaway3929
By the way, if I were a highschool student, I would totally take a programming
class in this vein, so don't take me the wrong way.

May I suggest age-segmented lessons? Pretty pictures for a little kids who
want to play with it, and a focused curriculum for older kids?

~~~
Malloc_Leake
Of course, you can't teach 6 year olds the same way you teach 12 year olds,
their brains aren't even fully formed yet. That was already a given ;)

------
japhyr
I lived in NYC in the mid-late 90's, and people who were good at teaching math
were getting ~$80/hour tutoring kids, and helping them prep for the SAT. If
you live in a place that could support it, I imagine you could get a decent
rate tutoring kids interested in programming. It's an interesting thought,
with parallels to developing a freelancing/ consulting business.

I was never keen on the idea, though. The thought of only helping kids whose
parents are rich enough to pay $80/hr felt like I was just widening the
already-deep achievement gap. If you have any of this sentiment, you might try
to put together a cohort of four kids, and charge each $20/hr.

~~~
Malloc_Leake
I actually am about to send an email to the local Youth Council of a city near
mine for exactly this reason. I am going to ask them if they'd be interested
in sponsoring me so that any kid who is interested could learn.

------
thekiwi99
I think since I'm in high school, I can shed some light on the kind of demand
there is for what you're describing. Generally, parents would be happy to sign
their kids up for an intro programming class. When I was in elementary school
I certainly did at least a few, ranging from a robotics focused one, to one
specifically with UDK for games.

I'm not sure how the classes are marketed for parents, but to kids, the
thought of building your own robot, or creating your own game is very
exciting. Obviously, the reality of the class is that instructors end up
spending the majority of their time working out technical issues and helping
the kids whose parents signed them up for something they have no interest in.
It happens to be much like a typical classroom. I didn't end up learning
nearly as much as I wanted from any of the classes, and spent most of the time
working ahead with little to no supervision.

I think the main thing you have to decide if you really want to do this, is
whether you want to teach the kids who have the interest, and the basic level
of experience, or the ones whose parents are looking for a good way to spend a
few weeks. It sounds like you, like me, fall into the former group. If you're
really passionate about what you're teaching, it will be a much better
experience for everybody involved if you can get those kids. I can't offer
much more advice than that, only being in high school, but I'd be happy to
answer any other questions (or try to answer for my parents).

As somewhat of a disclaimer, I'm not sure where you live, but where I am
(Northern Virginia) _many_ of these kinds of classes/camps offered after
school, or during the summer. Of course, this has to do with the region, so
take that with a grain of salt.

~~~
Malloc_Leake
I can't say I'm surprised by your experience, which is why I figured at most I
would only teach a group of 5-6 kids at a time. Then they would each get
individual attention while still being able to work together to solve
problems, and I wouldn't have 10-20 Arduinos to debug at once.

------
mknappen
Teaching is a catering gig. You must set out an assortment of foods and hope
that the majority of the plate appeals to a palette that isn't your own.
Children are finicky eaters. They lack the vocabulary and experience to tell
you when a flavor isn't working for them. You have to puzzle out the
situation, which oft times looks suspiciously like boredom or defiance, and
seamlessly redirect to another dish. In many ways, adults are easier students.
Cooking for someone excited about eating is a joy.

Start teaching by teaching. Approach your local [Parks and Rec Department,
Adult Ed program, homeschool group, SBA/SCORE office, science museum] about
offering a short intro class. Be modest in your proposal but be prepared to
exceed the lessons outlined. You just don't know your student base yet.
Different programs will bring in different kinds of people. Experience will
allow you to dial in your favorite student type as well as your methods and
materials before going independent. You may even keep these gigs as a steady
source of new private students and cash. Try it out.

(As an aside: Six year olds are still learning basic grammar structures and
logic. Many still need physical objects to perform basic math equations. Even
those who appear to grasp abstract concepts are often "looking" at objects or
example situations in their mind's eye. Programming is a stretch at this age.
Isla succeeds because offers immediate and "tangible" feedback and works using
a basic adjective-noun structure young children understand. Scratch is a steep
step up from Isla. Probably age eight would be the soonest a typical child
would enjoy playing with the language without an adult sitting next to them
helping.)

------
thejteam
I think a computer-themed after-school care program plus summer camps is a
good idea. As another poster mentioned, however, you would end up with the
problem of teaching a bunch of kids that are only there because their parents
work and need day care. My daughter is going through this right now. She is in
an electronics camp for the week. On the plus side the counselors love her
because she is one of the only kids in the class that pay attention. On the
downside, she is one of the only people in the class that pay attention.

Alternatively, I've heard of franchises that market to existing daycares to
come in once a week to do computer classes, charging the parents a nominal fee
per session.

I'm very interested in hearing other people's ideas, this is something I've
looked into and would be interested in doing as well.

~~~
Malloc_Leake
I actually stopped my own daycare's director today and she brought this exact
approach up. She is going to try to get me in contact with a group of other
instructors that do this at her location.

------
ddxexex
Well summer is almost over now, but I would think starting off doing a summer
day camp would be best. So your biggest problems there are that you need a
location and legal protection. If the local University doesn't offer something
like it, you could take to someone in the CS department and pitch your idea.
They'd also have some of the resources you'd need like a computer lab, and
then they would also do a good deal of the administrivia (fliers, insurance,
etc.)If it has good results you might be able to convince the uni to take you
on as some sort of employee. Best of luck!

------
ScottWhigham
I think that Lego Mindstorms are a great intro, and that's something parents
can wrap their heads around and "sell" to their children. We have a franchise
company down the street from me that does summer camps built around Mindstorms
- [http://www.bricks4kidz.com/](http://www.bricks4kidz.com/). It seems to be a
fairly large franchise also. My 9yo son is taking their "Introduction to Game
Programming" weekly camp/class in a few weeks. Might be worth looking at their
curriculum/marketing for ideas.

~~~
ramalhoorg
Mindstorms used to be great, but compared to Arduinos and the whole ecosystem
that sprang up around them, it is just too expensive, too proprietary and too
limited. Here is one example: [http://www.seeedstudio.com/depot/shield-
bot-p-1380.html](http://www.seeedstudio.com/depot/shield-bot-p-1380.html) a
pre-assembled $69 robot where you plug an ordinary Arduino Uno or compatible
board, with a chassis full of possibilities for expansion using off-the-shelf
components. For block-oriented programming there is now Scratch which is free
software and works with Picoboards (also open hardware) and Arduinos.

~~~
Malloc_Leake
Yeah, there are just so many possibilities now. There is something wrong with
your link, though.

------
gthompson
My son (6yo) is very interested in learning programming and I don't have the
skills to help him advance beyond Scratch. If you would be interested in
teaching him remotely, pls email me at gthomps at gmail. Thanks!

~~~
Malloc_Leake
I am flattered by your interest, but I really am more interested in teaching
kids in person, and with teaching aids like robotics kits that I can inspect
for problems when the kids need help. I think kids that young need something
they can hold in their hands to make it all seem more real, though I do not
have a degree in childhood education to back up that opinion ;)

------
scep12
I really love this idea. I had always wanted to go back to my middle school /
high school and try to get the school to allow me to run a programming course
on the weekends.

