Hacker News new | ask | show | jobs
Ask HN: How would you teach Java to at risk youth?
6 points by JerusaEnt 5154 days ago
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.

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?

thanks so much!

6 comments

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".

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.

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

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.
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.

I'd be inclined to go for "cool" fast - games or websites built with really bad imperative code and printf (println?) debugging.
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.