views:

396

answers:

10

I work at a small high school that's in a very high poverty area. There are only a handful of seniors that are thinking about applying to be an engineer of some sort in college and only 1 kid that applied for Computer Science (he has a couple acceptances so far!). He's been talking to me a lot as I majored in Computer Science as well and he is very excited about it. Unfortunately, our school doesn't have a Computer Science course of any kind so he asks me a lot of stuff.

I want to help him out since he's really excited about majoring in CS but I don't know where to begin. I could say put Linux on a computer, go online and go research stuff like I did but this kid needs some direction and he doesn't even know what Linux is let alone have a free computer around for that sort of thing. He doesn't know much about CS but is keenly interested in having a computer do all sorts of things but I don't know how to help him in a meaningful way. Any advice? I'm not a teacher at the school so I'm not a great educator, I do IT at the school.

+1  A: 

What are his other hobbies/interests? Anything he could build a small app around? Something simple and console-based is probably the best way to get started, but it should be personally relevant to keep him motivated. Nothing too time-consuming either, since there's no CS program in the school he could use towards building it. It would have to be a project that you can advise on, but I don't know if you have much time to actually supervise (since you're not the teacher), so should be something that can be done mostly independently. Maybe even start with just simple HTML pages, since that can be done with nothing more than notepad and a browser (assuming here that his computer has that), and if he's good and learns CSS (and maybe soem simple JavaScript) properly, the results can be great.

FrustratedWithFormsDesigner
+4  A: 

Since you are the school's IT person (or at least one of them), would it be possible for you to install Alice on the school computers?

Zachary
A: 

Give him a book and a computer, and let him work it all out.

I recommend Deitel's Java: How to Program. Ideally, you could let him study computer science/programming for independent study credits.

Stefan Kendall
+8  A: 

Very important is to keep the fire inside burning. For that to achieve he needs small successes intermingled with some studies. Try to accomplish little practical things. Write a batch script to automatize some activity. Mock some simple web page. Program some algorithm to automatize some mathematical tasks he likely used to have in other classes. When you've played enough feed him some theory (not much). Suggest to read a few first chapter on some programming language. Better some thin little book. Some booklet on data structures and algorithms. Then practice again. And so on, in small steps, iterations if you will, but put more priority on practice not on theory. It's important to to bore him while keeping him aware there is more to CS than just coding or programming.

Developer Art
+1 for practical things. There's nothing quite like seeing the code you write actually accomplishing things to build enthusiasm to learn more when you're just starting out.
Tanzelax
That's exactly what has driven me in computers since the beginning.
Developer Art
+1  A: 

Lego Mindstorms is another good way to introduce VPL (Visual Programming Language) as well as Robotics and all kinds if CS type ideas.

Digicoder
`...in a very high poverty area...` how much do those kits cost again? I think they're working on a tight (as tight as possible) budget here.
FrustratedWithFormsDesigner
I used 8 of these for my summer project (I'm a CS university student). They are around £100 for a kit that includes the Brick, loads of lego pieces, wheels, a whole array of sensors (light, sound, ultrasound for distance...) and a bunch of other stuff. They are really fun to play with. It also includes a drag-and-drop IDE, although there are other IDEs out there if you want to get them programming in a C-like language and see 'real-world' results.
billynomates
It isn't something you should expect students to pay for. I would start out small and add to it. I'm looking to donate a kit like this to a school and help teach. If it's exciting for the teacher, it's easier to get others to share in that excitement.
Digicoder
@Digicoder: You didn't even read the whole post. The poster is *not* the teacher - they don't even HAVE a CS course. The poster is `"...not a teacher at the school so [he's] not a great educator, [he does] IT at the school."`. The poster wants to help the kid, but has little resources (time and money) to do so, so wants advice that will help make the most of what *is* available.
FrustratedWithFormsDesigner
+3  A: 

very high poverty area

Does he have his own computer? That will make a big difference in what's available

he doesn't even know what Linux is

Windows, then, to start. Something like Visual Studio Express or SmallBasic.

Joel Coehoorn
I'd still go with Linux. If somebody wants to understand computers, he needs to know different OSs. Additionally can Linux show him the spirit of sharing, and what you can achieve if you work together.
Bobby
@Bobby +1 for learning on Linux...Coming from a Windows background and learning to program in Linux (at least for me) made me even more excited about programming because you get a whole new perspective on things.
Adam Neal
Plenty of time for that later. He goes to college, he'll get access to a linux machine. Right now, he has to work with what's to hand.
Joel Coehoorn
If he has no prior experience, why not start with the OS that runs on 9 out of 10 desktops? Linux is a secondary market when you look at the numbers. People in poverty situations aren't looking to learn the spirit of sharing and may not have the luxury of donating their time to work together with others until they can get out of their own situation. They need to be marketable to empower them. Go with the numbers. Linux can always come later.
mrjoltcola
+1  A: 

First of all, I think it's great that you are putting so much effort into this.

Second of all, here is one article on different approaches: http://blogs.techrepublic.com.com/programming-and-development/?p=1511

In summary: the article talks about whether you should try learning actual industry-used programming languages (C#, Java, etc..) with somewhat real-world examples, or start with a fundamentals course that teaches concepts using a language specifically created for this purpose.

It all depends on the student. If he is a self-motivated individual, pointing him to a real-world programming language may be best. If he struggles, then you may want to point him towards the teaching languages (the article lists some).

Whatever route you go, it's important to minimize the "setup" requirements of the environment. Generally, integrated developer environments like eclipse and visual studio express are preferable since they have project templates to get you started. For this reason, I wouldn't suggest just installing linux (unless you're running eclipse in Linux).

Jeremy Bell
A: 

An alternative line here would be to see if you could get him into abstract thinking and various high-levels of Mathematics. There are various brain teasers in this space as well as various algorithm heuristics that can be useful to know here. Art of Problem Solving has some links that may be of use as the key here is that it isn't about having the technology physically as much as getting the passions going and seeing what kind of CS does he want to study. Just something I thought I'd toss out there as I remember doing Math contests in high school that helped get me into a CS program at Waterloo.

JB King
A: 

Linux is a secondary market. I'm a Linux advocate and ex-kernel hacker, but I also make a living on Windows.

Linux isn't the path to financial benefit in CS or consulting in general, if that is a concern. In a poverty situation, it IS always a concern. Save the "open source" and "sharing" for the people who can afford it and give him tools that can take him out of the poverty situation. Windows is going to expose him to the world of business apps, give him more options and make him more marketable even if he did not pursue or finish a degree and remained self-taught.

Java or .NET on Windows are both great, its hard to beat Visual Studio Express, as already mentioned.

mrjoltcola
I would love to expose him to Windows or anything relevant. The only reason I mentioned Linux is because the monetary cost to get started with Linux is very low but I am aware of the express versions of Visual Studio so that's also a good option as well.
pointdxt
A: 

Games. The key is maintaining interest. If he is intelligent enough to get a couple of CS acceptances then learning these things are well within his reach. Starting with the simple games, Arkanoid, Asteroids etc. will allow him to build confidence and expand at his own pace.

Something I found useful a while ago, in the iTunes U bit of the iTunes store (incidentally now on YouTube link text) is a computer science first year class at Stanford (CS106A) which has all the lectures to download. All the documents are available at the Stanford website. Not only would it give him a bit of a taster of university teaching methods, but it provides a good introduction to Java through the context of game design.

Smalltown2000