Take Programming Course(s) or Self-Study?

In summary, as a physics undergraduate with the desire of going to grad school for physics, learning programming is important and necessary. Based on research and personal contacts, user-friendly languages such as Matlab, Mathematica, and Fortran may be helpful, but C++ is considered the most useful in a broad sense. It may be beneficial to take a C++ course, but self-study is also a viable option. Learning C before C++ may provide a smoother transition, but it is not necessary. It is recommended to try out some online courses or practice problems before committing to a class, as advanced programming can be frustrating and seeking help from forums or university resources may be necessary. Ultimately, the importance of programming courses for grad school admissions may vary
  • #1
pjl2934
25
0
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!
 
Physics news on Phys.org
  • #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

:)
 
  • #3
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.
 
  • #4
Adyssa said:
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

:)

Thanks for these links. They seem quite cool :) Do you have anything else in store?
 
  • #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.
 
  • #6
YAHA said:
Thanks for these links. They seem quite cool :) Do you have anything else in store?

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)
 

1. What are the benefits of taking programming courses?

Taking programming courses offers a structured learning environment with experienced instructors, providing hands-on experience and personalized feedback. It also allows for networking opportunities with other students and potential job opportunities.

2. Is it necessary to have prior knowledge or experience in programming before taking courses?

No, it is not necessary to have prior knowledge or experience in programming. Many courses offer beginner-level classes that assume no prior knowledge. However, having a basic understanding of computers and technology can be helpful.

3. Can I learn programming through self-study?

Yes, it is possible to learn programming through self-study. There are many resources available online, such as tutorials, videos, and online courses. However, self-study requires self-discipline and motivation, as there is no structured learning environment or instructor to guide you.

4. How long does it take to learn programming?

The amount of time it takes to learn programming varies for each individual and depends on several factors, such as the level of complexity of the programming language, prior knowledge and experience, and the amount of time dedicated to learning. Generally, it can take several months to a year to become proficient in a programming language.

5. Which programming language should I learn?

The programming language you choose to learn depends on your interests and goals. Some popular and versatile languages include Python, Java, and C++. It can be helpful to research the job market and see which languages are in high demand. Ultimately, the best language to learn is one that aligns with your interests and goals.

Similar threads

  • STEM Academic Advising
Replies
16
Views
384
  • STEM Academic Advising
Replies
3
Views
819
  • STEM Academic Advising
Replies
12
Views
1K
  • STEM Academic Advising
Replies
1
Views
885
  • STEM Academic Advising
Replies
10
Views
2K
  • STEM Academic Advising
Replies
7
Views
1K
  • STEM Academic Advising
Replies
14
Views
1K
  • STEM Academic Advising
Replies
11
Views
399
  • STEM Academic Advising
Replies
22
Views
3K
Replies
1
Views
450
Back
Top