What is considered respectable coding abilities in industry.

  • Thread starter Thread starter nukapprentice
  • Start date Start date
  • Tags Tags
    Coding Industry
Click For Summary
Incoming PhD students, particularly in fields like Energy Science with a focus on nuclear materials, should prioritize learning numerical programming languages such as R and MATLAB, as well as libraries like NumPy and Eigen. It's essential to develop strong programming skills, focusing on algorithms, design patterns, and optimization, rather than just familiarity with specific languages. Popular languages in academic departments often dictate the tools to learn, with Python, MATLAB, and SciPy being common choices. Additionally, mastering fundamental programming practices, such as using text editors, source control, and productivity tools, is crucial for long-term success. While specific language choice may seem significant, the ability to program effectively and adapt to various languages is more valuable in both academic and industry settings. C++ is highlighted as a particularly employable skill, emphasizing the importance of low-level programming knowledge and optimization capabilities.
nukapprentice
Messages
69
Reaction score
0
I will be an incoming PhD student this fall. I was wondering what programming skills I should pick up while a grad student. I was also wondering if someone could post an example code of what is considered good in industry.
 
Physics news on Phys.org
This is too disambiguous of a question... (1) Which field are you doing your PhD in, physics? (2) Is there a specific programming language or programming paradigm that you are looking to focus on. Object-oriented? Functional? Or a numerical language like R or MATLAB? (3) What programming skills are you looking to develop? Algorithms? Design patterns? Compilers? Optimization? Project management?

For physics, I guess I would look at numerical languages (R, MATLAB) for starters. Each has its community with plenty of rated file uploads. I would also take a look at numerical libraries such as:

Eigen (C++ 98): http://eigen.tuxfamily.org/index.php?title=Main_Page
ALGLIB (C#): http://www.alglib.net/
numPy (Python): http://sourceforge.net/projects/numpy/files/NumPy/
JBLAS (Java): https://github.com/mikiobraun/jblas

Some obvious examples of project management are:

The Linux kernel: https://www.kernel.org/ or https://github.com/torvalds/linux
Mozilla source: https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Downloading_Source_Archives
Chromium: http://www.ohloh.net/p/chrome
 
Last edited by a moderator:
Yeah, sorry I wasn't very specific in my first post. Actually I will be doing a PhD in Energy Science with focus on nuclear materials. I guess I was looking for advice with regards to numerical languages for algorithms, design patterns and optimization. Thanks meanrev for the pages and I will be sure to check them out.
 
You should learn to program. That's an entirely different thing than knowing a language.
 
It helps if you can find out what languages and libraries are popular in your department. Choosing a popular language increases the number of people you can ask for help, but it is not essential. If you can solve some numerical problems in your favorite language, that's an excellent start. Examples: diagonalize a square matrix, chi-squared test the fit of a function to some data points, integrate an ordinary differential equation. If I had known how to do those things when I started grad school, my classes would have been 1000% easier.
meanrev said:
For physics, I guess I would look at numerical languages (R, MATLAB) for starters. Each has its community with plenty of rated file uploads. I would also take a look at numerical libraries such as:

Eigen (C++ 98): http://eigen.tuxfamily.org/index.php?title=Main_Page
ALGLIB (C#): http://www.alglib.net/
numPy (Python): http://sourceforge.net/projects/numpy/files/NumPy/
JBLAS (Java): https://github.com/mikiobraun/jblas
I think these are good suggestions. At my department, Python/NumPy/SciPy and Maple are popular. I like SciPy but hate Maple and use MATLAB and Mathematica instead. I really like Eigen, but I think I'm the only person at my university who has ever used it!

As for what's considered respectable outside of academia... I've been in grad school for the last several years, so I disqualify myself from answering.
 
Yeah, sorry I wasn't very specific in my first post. Actually I will be doing a PhD in Energy Science with focus on nuclear materials. I guess I was looking for advice with regards to numerical languages for algorithms, design patterns and optimization. Thanks meanrev for the pages and I will be sure to check them out.

No problem, I wasn't calling for an apology!

I'm not familiar with energy science or nuclear materials, but at the end of the day, it's most likely that you will end up using the most popular language at your department for most of the time (I'm guessing it's probably going to be MATLAB, lots of numerical analysis and BVPs). I'd take a look at old syllabuses of computational courses you're probably going to take, to get an idea of what's popular.

Thereafter, I second both Vanadium 50 and NegativeDept's advices. In the long run, I would rather focus on better programming skills than better domain-specific knowledge of a particular language. It's like an investment with better long-term yield.

This means things like:
- Learning a text editor like Vim, Emacs - and remember to tune your editor to your preferences, e.g. low contrast color scheme.
- Learning to use source control (pulling any of the open source projects that I mentioned is a way to start)
- Learning productivity tools and ideas such as in The Productive Programmer (Ford)
- Equipping yourself with a couple of power tools in http://www.hanselman.com/blog/Scott...DeveloperAndPowerUsersToolListForWindows.aspx
- Learning LaTeX (this has been the single biggest time saver for me)
- Building GUIs

NegativeDept said:
I think these are good suggestions. At my department, Python/NumPy/SciPy and Maple are popular. I like SciPy but hate Maple and use MATLAB and Mathematica instead. I really like Eigen, but I think I'm the only person at my university who has ever used it!

I hate Maple. I think MATLAB has a similar substitute called MuPAD in the symbolic toolbox, which I've used for linear programming. Good to hear about Eigen.

As for what's considered respectable outside of academia... I've been in grad school for the last several years, so I disqualify myself from answering.

This is a good point, I can't say I'm familiar with what goes on outside of academia.

Lastly, deciding on a language is probably least important as Vanadium 50 said, but it's oddly the one question you will keep asking yourself each day as you get better (at least I do; every time I have to use a Python script to generate a C++ source and a shell script to compile it, interop Fortran and C#, manipulate strings in MATLAB etc.). C++ is probably the most employable skill in my industry, and probably most others. I generally think that someone who can program in C++ will be indifferent to programming in other languages. There are plenty of guys who can write in Java, Objective-C, Python etc., because these are relatively easy to get into, so the competition is tougher. In contrast, very few people know low-level optimizations and scaling a large number of processes across nodes.
 
Thank you so much for the help guys, especially meanrev! This is great, I now have a good starting point to get my *** in gear.
 
You're welcome.
 

Similar threads

  • · Replies 37 ·
2
Replies
37
Views
9K
  • · Replies 27 ·
Replies
27
Views
4K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 12 ·
Replies
12
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 27 ·
Replies
27
Views
3K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 7 ·
Replies
7
Views
4K
  • · Replies 35 ·
2
Replies
35
Views
13K