Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Self teaching computer programming vs taking a credit class at college

  1. Sep 10, 2011 #1
    I'm not really a big fan of computers but I understand there importance to physics. My school offers computer programming classes for engineering and science majors but I don't want a extra formal class that isn't required. Do you think it would be a good idea to self learn all of the programming?
  2. jcsd
  3. Sep 10, 2011 #2


    User Avatar
    Homework Helper
    Education Advisor
    Gold Member

    Computer programming skill is really too important to skip, although it may not be officially required. Best advice is to learn some either on your own or in a class. If you are weak at selfdirected learning, then take a course. If you are strong at learning on your own, then select the skill or language that would suit what you need to learn. The safest bet is register for a class and just follow the lessons, study, do the work.
  4. Sep 10, 2011 #3
    Yes, if you're motivated and disciplined enough.
    In a way, formal classes are best precisely because they force you to learn to material and to make exercises. While self-learning, this pressure doesn't exist and you'll have to force yourself to do the programming and the exercises. This is ok if you enjoy it, but it can be tedious if you're not a big fan.
  5. Sep 10, 2011 #4
    It would be a great challenge. There is a lot LOT of programming languages out there and to teach yourself all of them is a bad idea. Plus it would take more time than taking a formal class. I say take a class.
  6. Sep 10, 2011 #5
    Alright thanks all of you guys for the advice I'll make sure to find time to take the classes.
  7. Sep 10, 2011 #6
    I don't think I would have been able to learn programming all that well if I had tried to learn it myself. The reason is that programming is something you learn by doing, not just by reading a text. And if you're learning something by doing, you need someone to assign you problems, where you can check what you did is right or not, and someone telling you how you are doing. A large part of how I learned was by working with others, and going to the professor's office hours for help.
  8. Sep 12, 2011 #7
    I disagree about programming being hard to learn yourself. I think it is easy to learn yourself and self taught programmers generally program better and understand what they are doing more than those who learned to program through classwork.

    As you pointed out, programming is mainly learned through doing. But coming up with that something to do is really easy. To start out with, write a program that does basic tasks like reading a file, sorting the data, and writing it back (teaches sorting and file i/o). Write a program that generates all possible combinations of 4 letters (teaches nested looping). Write a program that does numerical integration. Write a basic checkers or poker game. etc etc

    Struggling to figure out how to do these things and making errors along the way is where the learning occurs. The results are pretty easy to look at and see if you got it right.
  9. Sep 12, 2011 #8
    Programming is a great thing to learn on your own. There are lots of good books which are much easier to read than physics textbooks. Way easier to teach yourself programming than say quantum mechanics in my opinion.
  10. Sep 12, 2011 #9


    User Avatar
    Science Advisor

    One of the great things about programming is that it is a very interactive process even in isolation and because of this, it does have a natural way of being able to be taught in isolation.

    As an example it is easy to check whether you are right or wrong pretty easily, because you can compile code and get a list of errors, or if it compiles correctly and crashes, then you can debug the program and find out what went wrong.

    It is a bit harder to do this when you are learning something like an applied science like physics or chemistry. There will be instances when you screw up and it's not going to be as obvious where you went wrong. It's not to say you can't figure it out, but it is different.

    If you want to do this, my advice is to pick a domain and pick a project of some sort. It can be a really small one, that might be merged into a bigger one later, that's still ok. What will happen is that you'll start with some tiny programs, and you'll learn how to make more complex programs by either taking small projects that you have written, or even external libraries, and make code that gets more complex. Since this is what you do when developing software, it will provide you with a good training ground for you to be able to do just that.

    Even if you just want to code some applied models, and you just need to do something specific, you will probably use some optimized libraries of some sort and even then you need to be able to develop software where you are taking lots of separate code bases and merging them together.

    You tend to do this in large scale development only the code bases that you are dealing with are a lot larger and a lot more complex.
  11. Sep 12, 2011 #10
    Of course, anything can be self-learned in principal, provided you have the proper resources, but it's a matter of how difficult or easier it is compared to a classroom setting. I just think that having someone to help around and give you comments about how you're doing or having people to work with helps more in a class like programming when compared to a more theoretical subject such as some area of Math or Physics.
  12. Sep 12, 2011 #11
    The OP says straight out that (s)he is "not really a big fan of computers" -- doesn't sound like a good candidate for self-study.
  13. Sep 14, 2011 #12
    I would suggest learning your first programming language (JAVA or C/++ preferably) in a classroom setting. After that, learning additional languages can be a breeze because you have a point of reference.

    The reason for the classroom setting is more than just 'learning the language', you also learn good coding habits and learn about Object-Oriented Programming in a structured manner.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook