<p>The USA Computing Olympiad (usaco.uwp.edu) is a programming contest, and they recently posted their contest schedule for the year. The first contest will be held on October 17-20, and this is the qualification round, which places people into divisions, but you can move up anytime throughout the year if you do really well. They allow C/C++, Java, and Pascal, and everything is done online, so you don't need to get your school involved at all. And then the top 16 participants will be invited to the week-long training camp, and from there, 4 people will be selected to go to Bulgaria for the IOI. And then they also have a training program online.</p>
<p>I'm not going to prepare for this contest (never knew about it until this post), but I'm still fairly interested in this subject, being a semi-computer geek (or more like semi-gaming nerd), I know a couple thing about C++ and etc. Those basic computing algorithms and stuff, you can read a few online tutorials and get a basic outline of how it works. I don't think classes are necessary, and I don't know a class that exists for this kinda thing. Maybe there are a couple good ones. I honestly think reading a couple online tutorials (which can be "courses"), and maybe even a few books and etc will get you prepared. </p>
<p>I don't know about it, but from the looks it seems to be a pretty difficult contest to get far, so if you're aiming for that level, eh, read a couple of those good programming books, get used to the language, principles, algorithms, and problems. I'm not an expert on this so I can't help a lot. It looks interesting though.</p>
<p>The training program is at ace.delos.com/traingate, and that's basically all I've used to prepare. It assumes basic programming knowledge though of one of the languages, but you could probably pick that up from online tutorials or books.</p>