

Ask HN: How would you teach Java to at risk youth? - JerusaEnt

I recently had the privilege of being picked to teach Java to at risk youth, but I feel like I am in need of some advice as per where to start.<p>I'm not having an issue with dealing with the kids, it's just what angle should I start with? Should I start with the basics of what happens when you type "System.out.println()"? the JVM? OOP? Should I just go into how to do variables, loops, and if statements and let them build a slow understanding through use of the language?<p>thanks so much!
======
cheald
Show them useful or interesting examples first. If you start on mechanics
before application, you'll lose their interest.

Games a great way to do this. It's harder to impress kids these days (to whom
"game" is "Call of Duty 4" with a multi-million development budget), but it's
still a great way to make the mental connection between "I like games" and "I
can make games".

------
stephengillie
That's really commendable.

It'll be easy to bore the kids with tons of details about variables, loops,
and structures. At-risk kids are usually less curious and more interested in
usefulness (I think).

First, get their attention by giving them the fastest route to a simple
working program. Basically just show them that they can make programs that can
be useful, then help them build by being a local expert.

You can teach variables, loops, structures as your students need them to make
their programs work correctly - that way they'll have a good reason to want to
learn.

~~~
JerusaEnt
It's not going to be a one day thing. It's going to be a 3 month, twice a
week, 2 hours each.

A real course

------
breakyerself
I've done a lot of online self learning. I have to say that udacity's cs101
course has been the most useful resource I've encountered thus far. During the
course of the program we built a very basic search engine. I think structuring
the program around the goal of a functioning program that's actually
interesting was really motivational for a lot of us. Yours could be a web app
or a game or whatever, but I think it would be good to have an interesting end
goal to build up to from the basics.

------
ajuc
Does it have to be Java?

I think it's best to start with something that doesn't requiretoo much
boilerplate, allows kids to create something cool with a few lines, and has
quick feedback. Like turtle graphic in logo or python.

I've heard processing for java allows for writing simple programs without
boilerplate, and has nice einvironment. But I didn't used it, so I don't know
if it's good for kids.

------
JoachimSchipper
I'd be inclined to go for "cool" fast - games or websites built with really
bad imperative code and printf (println?) debugging.

------
Tangaroa
You might want to start with the general concept of how algorithms work, what
a computer program does, code being a set of instructions that is read by
another computer program, flowcharts, and the like.

It depends on how much time you have. If you are only meeting them one day for
a few hours, give them a page of code that does something and run through how
it works from start to bottom, then give them the basic control and data
structures like loops and lists and a simple goal like a blackjack program or
number guessing game. You may also want to make (or find online) a cheat sheet
of the language keywords and what they do, and hand a copy to everybody.

