Early Start in Computer Science?

<p>Well, maybe starting to study programming at age twelve hardly counts as “early,” as I imagine some parents who are programmers themselves get their kids started at younger ages. Anyhow, my oldest son, whom I have previously described as a math person, is getting more and more into computer science and I seek your advice on what would be good learning experiences to guide him into. My wife and I know nothing whatever about computer science. My son has had previous rudimentary study of Logo, using the MicroWorlds programming environment and Berkeley Logo with Brian Harvey’s books. Just now he finished the [first</a> course in EPGY’s C programming sequence](<a href=“http://epgy.stanford.edu/courses/cs/C11A/]first”>http://epgy.stanford.edu/courses/cs/C11A/). I crave your suggestions for other distance learning resources, good books for a young person to read about computer science, industry inside knowledge useful for teenagers, job market predictions, and anything else I should know as a homeschooling parent of an aspiring computer scientist.</p>

<p>If he likes math and programming and you’re homeschooling, you might consider working [Mathematica[/url</a>] into your curriculum. My older S took to it in 9th grade immediately, fish to water, and used it as a tool throughout advanced physics and mathematics courses for the rest of HS. I believe it has helped both his theoretical and applied thinking, and he loves to play with it, too. (When he asked for a copy of [url=<a href=“http://www.wolframscience.com/][i]A”>http://www.wolframscience.com/]A</a> New Kind of Science](<a href=“http://www.wolfram.com%5DMathematica%5B/url”>www.wolfram.com) for Christmas, I knew he was serious. He read the entire book.) I believe there’s a fairly thriving online Mathematica / Wolfram-enthusiast community also. Just a thought…</p>

<p>I know Brian Harvey recommends Structure and Interpretation of Computer Programming (known as SIC P at MIT) by Abelson & Sussman. My S read two chapters, enough to convince himself he was not a cs person. You have to learn SCHEME to do the problems. My S now uses mathematica for his work.</p>

<p>Thanks for the suggestions, Mootmom. Has your son ever tried out the book on learning computer science with Mathematica, by Maeder? We have the student edition of Mathematica, but I haven’t seen my son play with that much yet. His usual “play” now on the computer is using C++.Net to write programs.</p>

<p>Marite, thanks for the book recommendation. I see that the Scheme language is used for introductory computer science courses at State U, so that would be worth learning, I think.</p>

<p>Tokenadult:</p>

<p>I gather that SICP is really about computer science, not computer programming as such. But apparently, it is required for 2/3 of MIT students. You can look at it on MIT’s web.</p>

<p>tokenadult - your son may be interested in USACO. All of the top USACO kids are also top math competitors, and the algorithms involved are very mathematical. USACO’s free, online, interactive training materials to learn algorithmic problem-solving are excellent, but in order to access them you have to know the basics of programming in C/C++ (preferred) or Java first. My son took a 3 week crash C++ course thru Duke TIP the summer after 7th grade, and that was plenty of background to get him rolling on the USACO training materials the following school year. (he also took the AP exam in CS at the end of 8th grade and was probably over-prepared). The USACO training materials actually kept him busy for a large part of both 8th and 9th grades. By then he was able to outperform the local college CS majors and grad students he was competing with informally at their ACM practices, and it was all from the USACO training pages.
<a href=“http://www.usaco.org%5B/url%5D”>www.usaco.org</a> (my son is the short one)</p>

<p>Thanks, Texas137, I figured you would jump in here. Yep, USACO (which I first learned about from you over on Brand X) is definitely on the to-do list for this summer. Please tell me that your son, who has been conspicuously successful in this sort of thing, is largely self-taught. I’m really hitting the wall this year in terms of </p>

<p>1) what I can teach my son as a homeschooling parent in his favorite subjects, </p>

<p>and </p>

<p>2) what I can dig up locally as resources for helping him advance in his favorite subjects. </p>

<p>I’m getting frantic about summer programs and distance learning courses, because I just don’t see adequate resources closer at hand. I hope I can relax and let his self-motivation take its course. At least the price is right for the USACO stuff.</p>

<p>texas137 - I am curious about what you have to say about my CS-steeped colleagues believe. They think you can teach yourself programming, but computer science required to eventually become an architect requires actual CS theory and that requires professors. Unless of course you are Ramanujan or something.</p>

<p>Answer is not exactly on point, but he might like reading the book In Code, which is written by an Irish teenager about math and cryptography, and has introduces a number of pretty interesting concepts in a farily simple way. Check it out at</p>

<p><a href=“http://www.amazon.com/gp/product/product-description/0761123849/ref=dp_proddesc_0/104-6546677-5856738?_encoding=UTF8&n=283155[/url]”>http://www.amazon.com/gp/product/product-description/0761123849/ref=dp_proddesc_0/104-6546677-5856738?_encoding=UTF8&n=283155&lt;/a&gt;&lt;/p&gt;

<p>I bought it on vacation and enjoyed reading it, and she goes into some detail on the program mathematica. Good luck with the computer science. I found in graduate school that I really liked that area, but never had a lot to do with it hands on in my career.</p>

<p>Alumother, that’s the story from my colleagues, spouse, and Oldest Son as well.</p>

<p>Tokenadult, I agree with Alumother. While learning to program in a variety of languages is commendable, comsci is more about learning how to think in an abstract and creative fashion. As an example, below are several of the problem exercises in my son’s Intro Data Structures and Algorithms class.</p>

<p>Exercise 1 (50 points) Find a flow f for the network given in figure 5, by specifying f(u, v) for all
values of u and v. The flow must satisfy the following restriction: the amount of information flowing
out of the source S must be 12 megabits / second. Of course, the flow must satisfy the 3 properties
given above.</p>

<p>Exercise 3 (50 points) Define the positive net flow entering a vertex v by
Ev = X
u2V :f(u,v)>0
f(u, v)
Similarly, define the positive net flow leaving a vertex v by
Lv = X
u2V :f(v,u)>0
f(v, u)</p>

<p>Exercise 7 (25 points) Suppose that (u, v) is not an edge in the original network. Under what
conditions can be it an edge in the residual network? What is its residual capacity?</p>

<p>Exercise 8 (25 points) Find an upper bound on the number of edges in the residual network, in
terms of the number of edges in the original network.</p>

<p>Exercise 15 (50 points) Suppose that you use Depth-First Search to find augmenting paths,
and that the capacities of the network are integers. Show that the above algorithm runs in time
O(I(f)E), where I(f) is the maximum amount of information which can be sent through the
network. (Note: you needn</p>

<p>tokenadult ~ lot’s of good advice here. One thing we did which worked well for our homeschooled S was that we gave him some training in C++ early, and then he switched over to JAVA. Two semesters at the local community college (these were offerred online, but he went on Saturdays instead) were enough to get him to a good level, and then he took the PAHomeschoolers AP CS class, which he thought was taught at a very high level. S thinks he aced the AP CS AB test yesterday. He placed in bronze on the first try at USACO, and then unfortunately he forgot to take the subsequent tests to get to the silver level! But except for that slip up, he’s been able to get most of his training from distance learning.</p>

<p>

</p>

<p>the USACO training materials would not make someone a system architect, but it’s pretty high level and theoretical. It teaches algorithms, not programming. You definitely have to already know how to program before you could access it. But once you reach that point, it’s designed to be worked through independently.</p>

<p>Is there a point where computer science can no longer be learned independently, and professors are required? Maybe, I don’t know. But if that’s the case, it is certainly way beyond the level that most high schoolers are likely to get. They can always gets the profs when they go to college. My son will be a CS major at MIT in the fall. I’ll ask him this question in a year or so. </p>

<p>I can tell you that by doing USACO he convered on his own some equivalent to most of the algorithm courses at the local college, including graduate level courses. He didn’t cover the equivalent of every CS course, or every course a systems architect would need. He doesn’t like hardware or operating systems, for instance. He just likes the theoretical stuff, that is close to mathematics, not the part you need a soldering iron for, and not learning a lot of different programming languages.</p>

<p>Yes, my S says the same thing: the USACO is at a very high level of combined math/programming. The teaching tools on the site are excellent, and a student can work through them on his own, and learn a lot.</p>

<p>texas137, your son is extremely gifted as I can make out from your posts. I agree that people like that can do advanced level programming algorithm stuff that even some college students can’t. </p>

<p>Just wanted to say that you don’t need soldering iron for operating systems. Most of that is also software…there are device drivers, programming channel controllers (I’m talking about old IBM hardware) and such that are close to hardware (or firmware) but operating systems for most part is software.</p>

<p>My colleagues always said software guys drink wine hardware guys drink beer. Software guys have ponytails, hardware guys have beards. Every profession has its dumb jokes, right?</p>

<p>I don’t know…if you look at the usaco site, Texas137’s kid does not look like he drinks anything…yet. :)</p>

<p>Then there are the Intel hardware engineers who design integrated circuits and stuff using computers. Don’t know what they drink. I had a friend who has a Phd in Computer Architecture from U Wisconsin. He used to work on a project called Wisconsin Wind Tunnel. They designed parallel architecture computers. When I used to go to that WWD website, it all looked like software to me…</p>

<p>achat - I always figured if you were a beer-drinking, beard-wearing, soldering-iron kind of guy, you’d use it on anything, even software (kind of like duck tape). ;-)</p>

<p>I appreciate the comments in the thread on the distinction between computer science (thinking deeply about how algorithms work) and programming proper. Indeed, I hope to lay a foundation for my son to think deeply about computer science in the broad sense. After three more school years I may be able to enroll him in State U computer science courses as a PSEO student, so then he would have access to a professor face-to-face. The EPGY distance learning teacher seems to be reasonably interactive, when we need interaction with the teacher. </p>

<p>I especially appreciated the quotations from and link to an actual CS assignment at one CC student’s university. I like looking at Web sites that show actual university assignments–that’s a good reality check on what we are planning for our children’s secondary education.</p>