<p>Seems like most everyone in the program has been coding since elementary school. I took AP Comp Sci in senior year, got a 4 on the AP, and tested out of one semester because of it, but due to some scheduling complexities I'm not even in a real CS class this semester. (Next, however, I will have both Object-Oriented Programming and Optimization.)</p>
<p>Is there anything I'd really better learn now so that, even if I'm not technically behind, I'll know enough to get internships relatively early, be capable of undergrad research, be as prepared for jobs as my major-mates, and in general hold intelligent discussions on the subject? C++, perhaps? (I've tried the Bloodshed compiler, but it's horrible.)</p>
<p>Focus on studying GitHub projects and papers on subjects that interest you. Or maths.
Take part in open source projects asap.</p>
<p>Also, study some of the new programming languages to see which ones you like and what they’re like and what are their differences. There are so many new languages available that while e.g. C++ is popular for lowish level application programming, there are new alternatives being developed (e.g. [The</a> Rust Programming Language](<a href=“http://www.rust-lang.org/]The”>http://www.rust-lang.org/)). And mentioning C++ and CS in the same sentence is comical (C++'s design is horrible, not something someone with a bit of PLT [programming language theory] background would recommend or design nowadays).</p>
<p>Pick up one interpreted language e.g. Python or Ruby. It ought to be the one that you’ll use for many things (prototyping, scripting software, applications where the execution speed of an interpreted language is not a problem etc.).</p>
<p>Learn what functional programming is about.</p>
<p>Java remains a very beginner-friendly programming language. The syntax is easy (in my opinion), and apart from that I’d gain expert knowledge in some popular scripting languages, i.e. PHP, Perl or Ruby. PHP is one of the most widely used server-side scripting languages and is one of the most widely used languages in general as well. If you have real expert knowledge with PHP, its libraries and some of the frameworks, as well as with Java, you won’t have a hard time finding a job, unless you’re not planning on being a software engineer, data scientist, systems engineer, etc.</p>
<p>Don’t be too intimidated by the other students. Prior programming experience certainly helps, but it’s not as big of a deal as you might think, and once you get into your upper division courses, you’ll pretty much be on equal footing with the other students.</p>
<p>In my career, I’ve worked with software engineers who boast about having started programming when they were 10 years old or whatever, but you wouldn’t know it by looking at their spaghetti code.</p>
<p>Why not just figure out what language your Object Oriented Programming course is using and learn that in advance? To prepare yourself for the optimization class, you could brush up on your linear algebra (for linear optimization) and your calculus (for nonlinear).</p>