Programming Advice for Physics BSc Student

In summary, the conversation focused on the speaker's interest in summer research positions and their lack of programming experience. They planned to take summer courses and self-teach programming skills to increase their chances of obtaining a research position. The conversation also touched on the question of which language to focus on, resources for self-learning, and recommended methods for teaching oneself programming skills. The speakers recommended C++ and Fortran for scientific applications, while also mentioning Python and R. They also suggested finding online tutorials and practicing with different languages, as well as working with complex and broken libraries to improve programming skills. The importance of being proficient in multiple languages in an industrial setting was also emphasized.
  • #1
DClancy
12
0
Ok, let me introduce you to my problem. I am very interested in and am actively applying to many summer research positions but I find myself somewhat limited towards what I can apply for.

My issue is that most of the positions, if not all, want programming experience and I have only done 1 first year java programming course. So my thoughts are that if I fail to get a position for the summer, I will take summer courses AND also try to teach myself some programming skills to increase my competence in that realm and show employers that I am serious about obtaining a position in research.

The question is,
1) What would be a good language to focus on?
2) Where might I potentially find good resources for self learning
3) Do you have any recommended methods for teaching myself some programming skills.

I am just finishing my second year at the university of victoria in a physics BSc and I love what programming I have done, so anything that seems particularly relevant to physics research would likely be a good idea!

Thanks in advance for potential input.
 
Physics news on Phys.org
  • #2
what kind of research do you want to be involved with?

I would suggest learning C++ if you are wanting to impress, java is more of a stepping stone in learning how to program (although java has its benefits, C++ is miles more suited to scientific applications).
 
  • #3
DClancy said:
1) What would be a good language to focus on?

C++ and Fortran are the main programming languages. People also use Python and R for various things

2) Where might I potentially find good resources for self learning

I'd start with www.astro-sim.org[/url] and [PLAIN]http://www-theorie.physik.unizh.ch/astrosim/code/doku.php

3) Do you have any recommended methods for teaching myself some programming skills.

Download an open source astrophysics package and start figuring out what makes it work.
 
Last edited by a moderator:
  • #4
While learning languages is always a plus, I'd suggest you might want to learn programming. There's a big difference between being able to cobble a program together and knowing how to program.
 
  • #5
Would C++ be a good intro into programming for someone who doesn't have any experience or should I start with java as the OP did? Vanadium do you have any resources that teach the programming basics? Thanks in advance.

Joe
 
  • #6
C++ is OK to start with. I wouldn't recommend FORTRAN; it has a reputation of being bad for everything except number crunching. Personally, I never liked Java because of its limited functionality and slowness.

As to how to start, I'd suggest finding an online tutorial and following it. Make sure to read EVERY word and do EVERY exercise. If you skip a few sentences because they seem boring, you'll forget what they said a few weeks later.
 
  • #7
I started by learning java in school. It seems to be the popular choice in programming languages for schools. Recently I have begun programming in python, and it is so amazing. Python is such a great language I can hardly describe it. It makes everything so simple so that you can focus on the actual programming and not the implementation. It is also, imho, the perfect level to program on. It is high enough so you don't have to hold its hand for everything, and low enough so you can do a lot of stuff still.

So, as you can tell, I am a big fan of python. With that being said, I am not sure if I would recommend python as a first language. It makes things to simple (which is not bad at all) but as far as learning programming I think that if it were my first language then I would have missed out on some insightful things, (but I'm not sure of this).

I think java is a great beginning language because there are A LOT of tutorials and information on the web. There are so many great tutorials/documentation out there. It is also (from what I have heard) a bit more friendly than c or c++.

So personally I would recommend java or python for you first language, and python for your final language because its beautiful :).
 
  • #8
Also if you want to do industrial numerical programming, you are going to have to learn some C++. Why learn C++ if it's a pain-in-the-rear-end language? It's because it's a pain-in-the-rear-end language. People figure (usually correctly) that if you can program in C++ you can deal with anything else.

The other thing is that more languages is better, so being proficient in three languages is better than just knowing one regardless of what that language is. Any industrial setting will have you program in several different languages, and there are situations in which you'll be asked to program in a language that you've never seen before in your life.
 
  • #9
The other thing is that you'll learn a lot by trying to read code and by changing code. One of the things that helps me write good code is haven't dealt with trying to read bad code. Also, just trying to download code and get it running will teach you a lot of stuff.
 
  • #10
twofish-quant said:
The other thing is that you'll learn a lot by trying to read code and by changing code
On this note, work with some really complex and somewhat broken libraries and APIs. (Play with facebook's or google's if you want something sort of fun.) Get used to bad documentation and finding answers on random mailing lists. Learn to debug code. A friend's first project at a job was making a massive program using an internal API. The API was the documentation.

Any industrial setting will have you program in several different languages, and there are situations in which you'll be asked to program in a language that you've never seen before in your life.
Even better is when it's an internal company language, so the only people who can help you out are your fellow employees and the docs.

I've been doing lots of python for the past couple of years, so I vote for that as a starter language. I've gotten much better at C/C++ by messing around with python 'cause it got me programming, and that's really the most important thing for learning to code.

Another good place to start on coding projects is project euler.
 

1. What programming languages should Physics BSc students learn?

It is highly recommended for Physics BSc students to learn Python and MATLAB as these are widely used in the field of physics for data analysis, simulations, and mathematical modeling.

2. Is it necessary for Physics BSc students to have programming skills?

Yes, having programming skills is becoming increasingly important in the field of physics as it allows for efficient data analysis, simulations, and modeling. It also opens up opportunities for research and job opportunities.

3. What are some tips for learning programming in the context of physics?

Some tips for learning programming in the context of physics are to start with the basics, practice regularly, and focus on problem-solving rather than just memorizing code. It is also helpful to work on projects related to physics to apply your programming skills.

4. Are there any online resources for learning programming for physics?

Yes, there are many online resources available for learning programming for physics such as online courses, tutorials, and coding challenges. Some popular resources include Codecademy, Coursera, and YouTube channels like "The Coding Train" and "Computerphile".

5. How can programming skills benefit a Physics BSc student in their career?

Having programming skills can greatly benefit a Physics BSc student in their career as it allows for more efficient data analysis, simulations, and modeling. It also opens up opportunities for research and job opportunities in fields such as data science, computer modeling, and software development.

Similar threads

Replies
28
Views
689
  • STEM Academic Advising
Replies
2
Views
1K
  • STEM Academic Advising
Replies
6
Views
605
  • STEM Academic Advising
2
Replies
50
Views
4K
  • STEM Academic Advising
2
Replies
63
Views
5K
Replies
20
Views
389
  • STEM Academic Advising
Replies
4
Views
811
  • STEM Academic Advising
Replies
10
Views
1K
  • STEM Academic Advising
Replies
16
Views
2K
  • STEM Academic Advising
Replies
16
Views
1K
Back
Top