<p>I am thoroughly convinced that the best way to excel in programming is to teach yourself. What books and languages should I look into first before anything else? I have very limited experience other than a C programming course I took at a community college. I am a petroleum engineering major and believe that teaching myself computer science will be a marketable and useful skill in the future.</p>
<p>C is a great starter language, so a good start. However, what languages you want really depends on what you want to do as you are learning these on your own time. Python / C are both great for learning the CS basics, but there’s so many languages out there that knowing what exactly you want to do would be very helpful as you already have some background.</p>
<p>I recommend Ook:</p>
<p><a href=“Ook! - Esolang”>http://esolangs.org/wiki/ook</a>!</p>
<p>On a more serious note, if you have already studied the basics of C and would like to pursue C further, I recommend The C Programming Language. C++ will make your life much easier, though. MATLAB or Mathematica are academically useful languages (I cannot speak to use in industry). Python is fairly ubiquitous. R and SAS are good for data analytics. As said, it depends on your interests. Visual Basic in all its variations is very common, but do not use it to learn programming. It will teach you bad habits and melt your brain.</p>
<p>I learned Python and some web design basics through Codecademy. Matlab is a really useful skill in the sciences. I know of science majors who have gotten internships in large part because they knew how to use Matlab.</p>
<p>Be careful when teaching yourself, though, that you don’t fall into bad habits. Follow design guidelines and learn to comment your code well. I have been a tutor for an intro CS course for a number of semesters, and sometimes the worst students are those who learned to program on their own and developed some really awful habits that are hard to break. These things may feel like a pain now, but any future employer will appreciate someone who doesn’t just write hacky code that works, but writes clean, well-documented code.</p>
<p>Try reading this book and doing its examples and exercises:
<a href=“http://composingprograms.com/”>http://composingprograms.com/</a></p>