<p>I have never tried programming before. I consider myself to be somewhat computer savvy, and I do alright at Calculus (B/C+ grades). Where do I start? What kind of compiler is a good for a new programmer? Any tips? Thanks in advance.</p>
<p>Any thoughts on what language you’d like to start with? C++ and Java seem to be the standard choices at universities, so if you have an idea of the language your chosen school prefers, that would be a good place to start. I took C++ using Gaddis’s Language Companion and Microsoft Visual Studio Express (free to download and use), and it was an alright experience. I’d encourage you to download Visual Studio and bop around with that for a while using cplusplus.com as a reference. That way you can see what it’s about before sinking any money into it.</p>
<p>Thanks for the suggestion. I have downloaded Express and checked out the website you suggested. I thought it would be difficult to get started, but it has been fairly easy getting my feel of the basics. Codecademy seems helpful too. Thanks again!</p>
<p>Codeacademy Python is a great way to get logical basics if you go that route. Probably the truest programming language on there. I wish they would expand into C / Java soon.</p>
<p>Here are some introductory CS books you may want to read and try the examples and exercises in:</p>
<p><a href=“http://mitpress.mit.edu/sicp/”>http://mitpress.mit.edu/sicp/</a>
<a href=“http://composingprograms.com/”>http://composingprograms.com/</a>
<a href=“http://www.htdp.org/”>http://www.htdp.org/</a></p>
<p>Having been a TA for introductory computer science for 3 semesters, I’m not going to recommend starting with Java or C++. They have a lot of tricky errors, a steep intro learning curve, and can more easily introduce some poor programming practices if not learned correctly.</p>
<p>My recommendations would be Python (starting with Codecademy and then moving on to using PyGame or doing project Euler), or Racket. Racket isn’t a commonly used language outside of teaching, but it’s great at teaching design principles, and once you know it then it’s relatively easy to translate the knowledge to new languages and keep good habits. You can also program Racket completely within the DrRacket interface with no need to worry about compatibility or different OSes.</p>
<p>I also agree Python is a good start. I’m personally a C fan, but I didn’t “get” C until after I spent some time with “easier” languages like Python.</p>
<p>There are a million books and websites on learning Python, so it can get overwhelming. I personally recommend starting with:</p>
<p><a href=“Think Python: How to Think Like a Computer Scientist”>http://www.greenteapress.com/thinkpython/thinkpython.html</a></p>
<p>What I like about this book is that it teaches Python and programming concepts you can use in other languages.</p>