<p>How much computer programming knowledge does the average computer science major have when entering the university? I have some computer programming knowledge, but mostly just CodeAcademy stuff for HTML and Javascript, as well as a little bit of Java. I could write a game of rock-paper scissors or make a makeshift calculator program, but not much beyond that. I will take AP computer science next year, but I am worried about doing the major at a school like Purdue (which has a high drop-out rate for it) as it seems that many kids have been doing it for a long, long time. </p>
<p>If any of this matters:
SAT Math - 800, Math II-780 (I'm kicking myself about those stupid mistakes I made on the SAT II because it was just after school was out for the year and I was quite tired/burned-out)
PSAT - 227
GPA - 4.0 UW for now, am taking AP Calc BC, Physics C, Chem and have A's in all of them easily<br>
~90 on AMC 12, 4 on AIME last year
I know I have the math/science skills, but programming worries me because it seems that there are so many kids who start programming in elementary or early middle school. I feel like it would be an enormous disadvantage to compete against them. What I'm wondering is, what % of computer science GRADUATES didn't start coding until at least high school and had minimal experience until college? I know a substantial # start off with none, but what about those who actually make it through?</p>
<p>EDIT: Just to be clear, what I really would like is some statistical analysis of computer science majors, especially at upper-end schools like Purdue, to see the percentage of students enrolled and graduates who had extensive prior knowledge(particularly before high school) and the correlation between prior knowledge and program success(which would count against me) and the correlation between program success and GPA/SAT/math ability (which would count for me).</p>
<p>I’m taking AP Comp Sci right now, and some students have extensive programming knowledge, some have some programming knowledge, and some have none at all. At least in this class, it doesn’t seem to matter how much you’ve coded before. The best performers in the class are pretty much scattered across the board with one having programmed a lot before, most knowing how to program before (maybe a bit more than rock-paper-scissors, though), and some never having coded before. </p>
<p>I think the reason that comp sci has such a high drop-out rate lies in the people that are attracted to it. A lot of the people that do poorly in AP Comp Sci at my school are people who may spend a ton of time playing videogames or watching anime, and who think they are good with computers without ever actually having coded before. About half the kids that take AP CS have never taken an AP class before, and it’s mostly these kids that don’t do so well. At least in my class it seems that it’s more about how smart you are than your experience, because there are kids with lots of tech-experience (one kid is the webmaster of a bunch of churches, runs some linux server from his home, etc.) who still don’t do as well as really smart people who are just beginning.</p>
<p>Also at Purdue, judging by your stats, you will be one of the most well-prepared incoming students. I wouldn’t feel behind at all. If you really want to get WAY ahead of everybody by the time college rolls around then you might want to pick up C (not C++, but C). You’re going to learn Java in your AP CS class so don’t worry about that, it’s a fine OO high-level language to learn and generally if you’re coding simple stuff on your own time you only need to know one high-level language. If you want a better understanding of the nuts-and-bolts of coding, though, you should pick up something like C.</p>
<p>Er, while I agree with most of what the above poster said, you should probably get a better understanding of overall programming before delving into lower level languages. </p>
<p>While learning about memory management will definitely help you later on (it gives you a good intuition about what will and won’t perform well), I’d recommend learning more immediately useful languages (like Ruby and Scala).</p>
<p>Learning different paradigms help you grasp the overall “big-picture” of computer science, but you really should have ~2 years of solid programming experience under your belt before you start troubling yourself with learning languages for the sake of learning languages. Too many of my friends have gone down the path of learning ~10-20 languages without ever even learning about basic data structures like stacks, queues, or trees.</p>