What is considered respectable coding abilities in industry.

  • Thread starter Thread starter nukapprentice
  • Start date Start date
  • Tags Tags
    Coding Industry
Click For Summary

Discussion Overview

The discussion revolves around the programming skills necessary for a PhD student in Energy Science, particularly focusing on nuclear materials. Participants explore various programming languages, numerical methods, and general coding abilities that are considered respectable in industry.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • One participant seeks advice on programming skills to develop during their PhD, specifically in numerical languages for algorithms, design patterns, and optimization.
  • Another participant questions the specificity of the original inquiry, suggesting that the field of study and programming paradigms are crucial for tailored advice.
  • Suggestions for popular numerical languages include R and MATLAB, along with various numerical libraries such as Eigen, ALGLIB, numPy, and JBLAS.
  • Some participants emphasize the importance of learning programming concepts over just knowing a specific language, advocating for skills like source control and productivity tools.
  • There is a discussion about the popularity of certain languages within departments, with mentions of Python, NumPy, SciPy, and Maple, and personal preferences expressed regarding these tools.
  • One participant notes that C++ is highly employable in their industry, suggesting that proficiency in C++ may provide an advantage over other languages.

Areas of Agreement / Disagreement

Participants express a range of opinions on what programming skills are most valuable, with no clear consensus on a single approach or language. Some agree on the importance of foundational programming skills, while others focus on specific languages or tools popular in academia.

Contextual Notes

Participants acknowledge that the choice of programming language may depend on departmental preferences and specific research needs, indicating a lack of universal applicability to all fields or situations.

Who May Find This Useful

Incoming PhD students in STEM fields, particularly those in Energy Science or related areas, may find this discussion helpful for understanding the programming skills that could benefit their studies and future careers.

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 8 ·
Replies
8
Views
2K
  • · Replies 37 ·
2
Replies
37
Views
10K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 27 ·
Replies
27
Views
5K
  • · 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
4K
  • · Replies 3 ·
Replies
3
Views
4K