1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Courses Take Programming Course(s) or Self-Study?

  1. Jun 14, 2012 #1
    As a physics undergraduate with the desire of going to grad school for physics (specifically HEP or field), I've come to understand the importance of learning some programming. I've come to the conclusion, through this forum and personal contacts, that Matlab, Mathematica, and Fortran are user-friendly enough to pick up as needed and that the most helpful (in a broad sense) would be C++. First of all, any comments on that conclusion?

    If this is the case, the next step is learning the language, of course. My university offers C++ broken up into two semesters: intro and advanced. However, it seems that intro is very beginner and that it could be kind of.. slow. If this is the case, it hardly seems worthwhile to take up an entire semester to take the course, let alone an entire year to take both courses. I'm fairy confident in my self-study abilities, but will my knowledge of the language be proficient enough? Lastly, I've heard that learning C before C++ can kind of smooth the transition, so to speak, and gives a more thorough understanding of C++. Is this true and/or advisable?

    Thanks for the help, as always!
     
  2. jcsd
  3. Jun 15, 2012 #2
    Dive in, see how you go, then ask yourself these questions again. :) I really like this online course, don't be scared off by the name:

    http://c.learncodethehardway.org/book/

    It will get you going with C, and when you can write a basic console application, compile it, debug the thing you'll have a much better idea of how easy or hard your journey will be. At this point, the differences between C and C++ are not important, the syntax is more or less the same, and the programs are small enough that Object Oriented concepts don't really matter, just practise getting your algorithm correct. You should be able to make good headway in a few days and have a much clearer idea of how you might benefit from an intro or advanced class.

    Check out some problems to work on over at:

    http://projecteuler.net

    :)
     
  4. Jun 15, 2012 #3

    chiro

    User Avatar
    Science Advisor

    If you are going to contribute to critical parts of repositories, you should be a very mature software developer. If not, then learning things 'as you go' is probably a good way to go and if that means pre-empting this with class or two, then fair enough.

    The thing that you will have to be aware of are basically the situations like when you spend hours or days finding a bug only to have a near-aneurysm in the process. Similar things include finding weird compile errors and getting crazy kinds of program crashes, but this is what will really teach you and probably drive you up the wall as well.

    I wouldn't spend more than a year max doing classes, but I can see how doing one or two really well planned, greatly structured classes could be a very good idea.
     
  5. Jun 15, 2012 #4
    Thanks for these links. They seem quite cool :) Do you have anything else in store?
     
  6. Jun 15, 2012 #5
    As for learning C, I've heard opinions that say it won't benefit you much to learn it, and that in some cases it may just confuse you. C isn't objective, but C++ is, so there are some important differences.

    I found all my programming classes to be extremely boring since I already knew some from being self-taught. I took the beginning programming course at my school after having taught myself Python (which is a scripting language, mostly), and the Java was super easy to pick up from there. Then, I took an actual Java course, and it was a joke. Though, to be fair, my instructor and the fact that it's a community college was probably the reason it was a joke, and we went over a lot of the same material as the first class, and I got a C just out of boredom.

    So if you know you're good at self teaching, I don't think you'd have a problem with the basics. But like someone else said, advanced programming can be extremely annoying if you can't figure out what your compiler is trying to tell you. But that can theoretically be fixed by posting your code on forums or maybe networking at your university for help.

    I'm not sure what grad schools care about. I imagine that they won't care too much about a couple programming courses if you do well in your science/math courses.
     
  7. Jun 15, 2012 #6
    Sure, here's a few more:

    Google's Python Class
    Dream In Code (lot's of good tutorials)
    TopCoder (you will want a grasp on your language of choice before trying these tutorials, they are intermediate level)

    and if you are prepared to study a little more formally:

    Udacity (I'm doing free 7 week courses here to supplement my CS degree, 2 down so far and I'm pleased with the format and content)
    Coursera (these look good too but I haven't taken one yet)
    MIT Open Courseware - EE & CS Dept. (I've brushed up on some maths with MIT OCW and I was really impressed with the lectures)
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook