Most important programming languages in theoretical physics?

<p>Hey everyone, I was wondering if anyone could give me any insight into this. I'm in a CC right now and majoring in physics, and planning on transferring to Uni as a double major in physics and math...and I'd like to minor in philosophy. I know that a knowledge of computer science is important for virtually any scientific field though, and quite important for theoretical physics. What programming languages would it be good to know?</p>

<p>I'll be taking a basic calculus based course in C++ programming before I transfer, and I'll be taking an Intro to Computer Science course as part of the requirement for the math major. I don't know that I'll be able to squeeze in a second minor in CS, but I'd like to try to squeeze in at least a couple additional CS courses.</p>

<p>So, which programming languages will be the most important for me to know? Should I take a couple courses in discrete structures and data structures? Any help would be greatly appreciated! :)</p>

<p>As for languages, I’d imagine C/C++ and Java. Those are used for everything.</p>

<p>Matlab is also used a lot for mathematical programming, but wait until you’ve taken linear algebra for that one.</p>

<p>I’d take a data structures class and an algorithms class over discrete structures.</p>

<p>What’s a “basic calculus based course in C++ programming?” I’ve never heard of calculus and C++ combined into a basic programming class.</p>

<p>A “computing for engineers” course could use MATLAB.</p>

<p>At some schools, the introductory CS course sequence will include use of several programming languages, to get you to think about CS in different ways. This may be more valuable than focusing on one programming language.</p>

<p>

</p>

<p>Yeah, from what I’ve gathered, MATLAB is a language that I should hold off on until later. I’ll also keep that in mind about data structures and algorithms. That seems to be the consensus on other forums too.</p>

<p>Allow me to clarify the course I’m taking…It’s part of my requirement for transferring into UIUC as a math major. The course is called “Computer programming for math and engineering.” Here’s the course description.</p>

<p>“The syntax of a high-level programming language is studied and applied to problems in mathematics, science and engineering. An emphasis is placed on the structured development of algorithms to solve these problems. The programming language features that lend themselves to problems in these areas such as special variable types, library and user defined functions, and subprograms are dealt with in more detail. Applications involving methods of finding roots of functions, numerical techniques of integration and differentiation, vector and matrix operations included.”</p>

<p>The prerequisite for the class is Calc I…but I won’t be taking the course until my last semester before transferring, so I’ll actually already have completed Calc I, II and Diff EQ…and I’ll be taking it at the same time as Calc III.</p>

<p>The book for it isn’t posted anymore, because they only have it at my school during spring semester. I forget the exact book title, but it was a C++ book. It may have been this one [C++</a> for Engineers and Scientists: Bronson: Amazon.com: Kindle Store](<a href=“http://www.amazon.com/C-Engineers-Scientists-ebook/dp/B00B7L0GFU/ref=sr_1_9?ie=UTF8&qid=1369540102&sr=8-9&keywords=c%2B%2B+science+engineering]C++”>http://www.amazon.com/C-Engineers-Scientists-ebook/dp/B00B7L0GFU/ref=sr_1_9?ie=UTF8&qid=1369540102&sr=8-9&keywords=c%2B%2B+science+engineering)</p>

<p>

</p>

<p>I believe that’s the basic structure of the Intro to CS course that I’ll be taking at UIUC. It’s kind of unusual how that will work out…because I’m required to take a course that is devoted to C++(as far as I can tell) before I transfer, and then I’ll be taking an introductory course that touches on several languages after I transfer. I’m taking another computer class as part of my associates, but it’s more of a word processing, excel, multimedia, security type class…part of the requirement for my associates(they call it a “personal development” class). </p>

<p>On the Physics Forum, I got some links to start teaching myself some languages, because they recommended that I get some experience in before I take a C++ class. Given that I won’t be taking that class until spring 2015, I should have plenty of time to work on some. They recommended Python as a good introductory language, and I was pointed towards this book as a good self-teaching guide. [Think</a> Python: How to Think Like a Computer Scientist](<a href=“http://www.greenteapress.com/thinkpython/]Think”>Think Python, first edition – Green Tea Press)</p>

<p>Anyone have any thoughts or input on that? Any good self teaching resources to recommend?</p>

<p>You can also read this book if you want to get an introduction to computer science:
[Welcome</a> to the SICP Web Site](<a href=“http://mitpress.mit.edu/sicp/]Welcome”>http://mitpress.mit.edu/sicp/)</p>

<p>A variant of that book using Python can be found here (under “reading”):
[CS</a> 61A Spring 2013: Structure and Interpretation of Computer Programs](<a href=“http://www-inst.eecs.berkeley.edu/~cs61a/sp13/]CS”>CS 61A Spring 2013: Structure and Interpretation of Computer Programs)</p>

<p>Those links are awesome! I just spent some time browsing around on them, and they look like they’ll be very helpful in the future. Thanks!!</p>

<p>Python and C++ are the ones I hear from the theorist profs and grad students I talk to.</p>

<p>But “knowing languages” is a teensy-weensy, itty-bitty part of programming and knowing things like algorithms, data structures, design patterns (look it up), refactoring, good software engineering principles, etc. are far more important than learning a particular language.</p>

<p>Seriously. Especially since many languages ape each other’s syntax (C, C++, Java, and C# all have many syntactic similarities) I wouldn’t worry about picking the right language. You’ll use a variety of languages anyway. You may find one research group uses Python for everything, and another uses C++ or Java.</p>

<p>Thanks for the advice. That seems to be the common thread I’m hearing from everyone I’ve talked to. I’ll definitely be keeping that in mind. I’ll definitely be taking a number of CS courses in the future, but for know I’m just going to start trying to accumulate as broad of a knowledge about it as I can. I may still end up minoring in CS…not sure yet. In either case, I’ll definitely be taking several CS courses at minimum. </p>

<p>Thanks everyone for the help.</p>

<p>I suggest C++, but honestly programming languages are just tools to be used. Don’t think too much about the languages, because what really matters is the ability to code.Just learn to program (by learning one language well) and everything else is easy.</p>

<p>Thanks for the advice. I’m going to continue teaching myself Python for now, but I’m going to try to expose myself to as many different types languages and get as broad of a knowledge base as I can before taking any upper level programming courses.</p>