Computer Science Independent Study

<p>My son has some extra time in his schedule and is thinking about doing an independent study in computer science. He does stuff like this on his own all the time (he did something with Scheme this summer - which being the computer dunce I am I've already forgotten. Wrote a compiler for Scheme? But it's not written in Scheme, Mom, I just did it to undertand scheme...) Anyway he's wondering whether it makes sense to put something together to learn some Scheme since most schools seem to have that as their first programming course, or if he should learn C++ properly, a program he doesn't like much. He did the Computer AP course as a freshman and has some work experience in working with databases for websites. I think he probably knows more programming than any of the teachers at school. Any thoughts about projects that would make sense? Or how the logistics of such a project could work?</p>

<p>I heartily recommend the training material and internet contests available here: <a href="http://www.usaco.org%5B/url%5D"&gt;www.usaco.org&lt;/a&gt;&lt;/p>

<p>It's all free, and top kids win a free summer camp to train for possible international competition. You have to have the basics of C/C++, Java, or Pascal. But the language is not the important thing. The algorithms are the important thing, and they will help him with any language he uses in the future. Algorithmic programming is very mathematical, and there is a lot of overlap btwn top math competitors and top USACO competitors.</p>

<p>Thanks I have pointed him at the site. I don't know to what extent he's looked at it. He's spent the last week doing all his summer reading, but now that he's done with that I think he can give this some more thought. He's got more than the basics of Java (5 on the AP freshman year.)</p>

<p>To anyone who is interested in the USACO and the international competition (the IOI</a>), I just want to point out that for the official USACO contest (late April), there are three levels (Gold, Silver, Bronze). The top kids from the Gold Division are the ones invited to the summer camp to compete for a spot on the US IOI team. Which division you are placed in depends on your performance in the internet contests which occur about once a month starting in October. The default division is Bronze, so if you want to be in one of the other divisions (say to compete for the camp spot) you need to do one of the prior contests. See the website; it's all there.</p>

<p>I am saying this because I only found out about the existence of the USACO last year 2 weeks before the final competition. I decided to just take the Bronze version for fun / to see what it was like (I still have this year). What I found was, as mentioned by another poster, the algorithms are what matter. You are expected to know a wide variety algorithms (no internet/resources allowed) and, especially for the upper divisions, you are required to create your own (non trivial) algorithms on the spot. The AP Java course teaches you about basic programming and data structures; the USACO is closer to Computer Science. There is a big difference (mathematics and theory). Oh, efficiency is also important (runtime restrictions).</p>

<p>Anyways, I would recommend doing it. It's challenging and fun.</p>

<p>My son has been doing USACO for the past two years. It is more fun and challenging than ANY progamming courses he has taken at school (and he's at a school which offers a number of post-AP Comp Sci classes). It is all about writing elegant, fast, algorithm-based programs -- no hard-coding in this game! USACO also has a great on-line syllabus with problems to help you learn the skills to advance.</p>

<p>My son looked at the USACO materials and he's bummed because he got all excited about Scheme and LISP over the summer and now disses Java which he used to love! ARGH.</p>

<p>
[quote]
My son looked at the USACO materials and he's bummed because he got all excited about Scheme and LISP over the summer and now disses Java which he used to love! ARGH.

[/quote]

have him take a look at C++. It has some advantages over Java that might appeal to him. The training pages actually work better in C++ than in Java anyway. USACO only started supporting Java at all a year or so ago. There was some resistance to making the change. Apparently the coaching staff generally thinks C++ is better than Java, and my son the programming guru described Java to me as a watered down, less powerful version of C++. But I have also heard people argue that Java is better. It might be a personal preference thing. I don't personally program at all.</p>

<p>At the IOI (which is what USACO feeds into), they still compete using C++ (unless that changed this year). My S competes using Java, though since C++ put out a new dictionary (macros), a lot of kids have gone back to C++.</p>

<p>He's been C++ resistent for years. Though he had to learn a fair amount for a computer graphics and gaming course he took a couple of years ago.</p>

<p>The IOI definitely uses Pascal in addition to C++. Most of the Europeans use Pascal. I think that they have also recently started or have plans to start allowing Java. I know that was a major topic of discussion at the IOI in 2003 and 2004. I can find out for sure what the current status is on using languages supported at the IOI if anyone needs the info, or they can just send a post to the USACO organizers and ask.</p>