<p>In high school, I took AP Computer Science. I had a terrible teacher, and had some pretty serious senioritis, which ended up with me getting only a 3 on the AP exam.<br>
Truthfully, I put in very little effort in understanding the subject.</p>
<p>I'm going to be a sophomore at Stanford this year. I will be taking the intro programming class this fall to see if I end up liking it.</p>
<p>Certain subjects, you can study hard in and do well: chem, bio, stats/applied math
Subjects that are more.. intuitive (you either have it or you don't): english, math, physics (especially higher level theoretical, abstract classes).</p>
<p>What's your opinion on CS? Can you study your way to being good at CS?</p>
<p>Also, what's about the average GPA for a CS major? Supposedly it's a few tenths lower than humanities/social sci majors'? Would a 3.7 be impossible, counting grade inflation and very competitive peers?</p>
<p>(For the record, I really think that you can be phenomenal at any subject. It just depends on how much you like it and how much time you have or want to spend.)</p>
<p>Getting a 3.7 from Computer Science at Stanford will be very challenging.
Partially because its CS and partially because its Stanford, many of your peers coming in will have a good amount of prior knowledge and may have been coding since 8th grade.</p>
<p>With that said, if you were sharp enough to get into Stanford in the first place, I am sure you can be successful as a Software Engineer (or whatever your eventual goal is).</p>
<p>I personally think that programming aptitude is largely innate. Obviously it takes a lot of experience and aptitude to become great, but without aptitude, you’ll just be mediocre at best.</p>
<p>Doesn’t mean you shouldn’t try it and see. Worst thing that can happen is you do poorly and drop the course.</p>
<p>Computer science is often misunderstood by new students (and completely misunderstood by the public). Take your average high school senior and they will be vaguely familiar with physics, chemistry, biology, mathematics, engineering, English, history, psychology, art, music, and so on. If you ask them about CS, it’s a very good bet their response will relate to programming. That’s not incorrect, but it’s like asking somebody about biology and receiving a response that relates to microscopes. Just as (I expect) it would be more likely to hear about “DNA” and “cells” rather than “microscopes”, it <em>should</em> be more common to hear “algorithms” and “abstraction” when asking about CS.</p>
<p>Nearly every CS program I have seen starts out with a few semesters of programming courses. I believe this is mainly because it trains your mind to think logically and it offers a foundation from which you can appreciate and relate the topics you start to learn. After a couple semesters, the curriculum shifts gears into more abstract concepts such as data structures, algorithms, and complexity theory. Unfortunately, this makes a programming class (or two, or three) a poor gauge of how you will do in computer science. If you enjoy programming, that’s no guarantee you will enjoy CS (and the other way around!).</p>
<p>Your comment about being able to become “phenomenal” through hard work is difficult to comment on. A lot of the upper-level undergraduate content of CS is conceptually challenging and cannot be mastered; some concepts are deeply humbling and at times mind-blowing. To have the belief that you can pound through everything with determination might kill your confidence when you run into things harder than programming. If you reach graduate school in CS, you will get a more mature appreciation for these things as well as a more solid grasp for what CS is.</p>
Of course you can. I don’t happen to believe that you can study your way to being a superstar at CS - to get to the top, hard work is not really enough in CS, Physics, Mathematics, etc. With hard work, and the intelligence/capability you must have to have gotten into Stanford, though, you can be a better and more valuable engineer than 99% of the people who will be competing with you for software engineering jobs, and probably somewhat competitive at lower-ranked university positions.</p>
<p>Especially passacaglia, that explanation changes how I see CS. A lot of people make the major seem like a bunch of classes of straight programming, but then again, I’ve only been talking to friends in my class. </p>
<p>I’ll just dive in this quarter and see what happens. : ) Really appreciate the advice.</p>
<p>With regards to Stanford, your best bet is to talk to some of the professors about your concerns. The way courses are taught can vary quite widely. Also, according to what a Stanford CS grad told me, exams may be weighted in ways that heavily penalize incorrect answers to questions the professors feel the students should be able to answer.</p>
<p>IME, conceptually challenging work doesn’t begin until high-level undergrad work, if not grad work. At that point, no amount of studying will do it: either you get it or you don’t. </p>
<p>OTOH, getting an A in intro programming classes will boil down to work ethic, your personal standards, and time management. Little else.</p>
<p>At Stanford cs, gpa is tricky thing. Definitely not a typical cs mill. I suspect that many people who get >3.8 gpas don’t accumulate valuable work experience. Meanwhile, many kids with 3.5 or less are busy accumulating valuable experience/contacts in silicon valley.</p>
<p>^ Naturally, many people at Stanford have >3.8 GPA and excellent work/research experience. I guess what I’m saying is that you should aim high in all departments, regardless of where you’re going.</p>