I'd like to add some Computational Science to my Resume

Click For Summary

Discussion Overview

The discussion centers around the importance of programming skills for a career in chemistry, with a focus on which programming languages to learn. Participants share their experiences and recommendations regarding various programming languages, including MATLAB, Python, C, C++, and Java, and how these relate to computational science and data analysis in chemistry.

Discussion Character

  • Exploratory, Technical explanation, Debate/contested

Main Points Raised

  • One participant expresses a desire to improve their programming skills for their chemistry career, noting a lack of recent experience and seeking advice on prioritization of languages.
  • Another participant emphasizes the usefulness of programming methodology for solving computational problems and recommends starting with C, followed by C++ or Java.
  • A suggestion is made to learn Python alongside other languages, highlighting its libraries like Numpy and Matplotlib that are similar to MATLAB.
  • One participant defends MATLAB's utility, arguing that it is widely used across various scientific fields and is particularly effective for handling matrix data.
  • Another participant counters that while MATLAB is useful, Python offers similar capabilities and is a more versatile general-purpose language, suggesting it as a better first choice for learning.
  • Concerns are raised about the limitations of Python in large-scale software development and high-performance computing, but these are deemed less relevant for beginners.

Areas of Agreement / Disagreement

Participants express differing opinions on the relative usefulness of MATLAB versus Python, with some advocating for MATLAB due to its widespread use in academia, while others argue for Python's versatility and ease of learning. No consensus is reached on which language is definitively better for the original poster's needs.

Contextual Notes

Participants mention various programming languages and their applications without resolving the debate over which is most suitable for a beginner in chemistry. The discussion reflects a range of experiences and preferences, indicating that the choice of language may depend on individual goals and contexts.

DDTea
Messages
133
Reaction score
0
I'm finding that having at least *some* background in computer programming will be useful to my career as a Chemist. My background in programming is rather weak and rusty; I took a course or two in BASIC back when I was in middle school and then another in JAVA in high school. I've never used either since then (~7 years). So for all intents and purposes, I consider myself a beginner. Although I'm not looking to become a computer scientist and I don't terribly *enjoy* programming, I don't want to shy away from it either.

This winter, I'm planning to take a course on MATLAB simply because it will help with some of the math courses I'm planning to take. From what my friend tells me though, MATLAB is more of a "data cruncher" and, although good, not as "useful" as C, C++, JAVA, or Python. So naturally, I'm looking to learn at least one of those languages.

I'm interested in other people's advice regarding how I should approach this and what I should prioritize. I'm paying for classes out of my pocket right now and I'm also working full time, so I probably won't be able to take a course in *everything* (which I'd love to do), which is why I need to prioritize.
 
Physics news on Phys.org
As an engineering undergraduate, I find that programming methodology is useful for solving both abstract mathematical and general computational problems. I took my first course in programming (and computer science) as a freshmen and loved it immensely.

In my two exposure modules to computer science, C and C++ were taught and used. I think these two languages are considered "general-purpose" languages even though C is strictly procedural and C++ is objected-oriented?

After that, I had to work briefly with C# and Java on my own. Had to use Matlab/GNU Octave for an internship project. Had to learned half a dozen engineering simulation packages. I found that the exposure to C/C++ allowed me to pick up all those easier (not that I consider myself an expert in any of those languages- I just know enough to use them as tools.).

I think you should enroll yourself in an introductory computer science course that focuses on programming methodology, in C. After that, either C++ or Java.
 
Learn python on the side for fun. Numpy (the big numeric computation library) and matplotlib (the big plotting library) are analogous to MATLAB and have lots of functionality/interaction directly lifted from matlab, so you may not feel so lost.
 
DDTea said:
This winter, I'm planning to take a course on MATLAB simply because it will help with some of the math courses I'm planning to take. From what my friend tells me though, MATLAB is more of a "data cruncher" and, although good, not as "useful" as C, C++, JAVA, or Python. So naturally, I'm looking to learn at least one of those languages.

I'm interested in other people's advice regarding how I should approach this and what I should prioritize. I'm paying for classes out of my pocket right now and I'm also working full time, so I probably won't be able to take a course in *everything* (which I'd love to do), which is why I need to prioritize.

Ahem, Matlab 'not as useful'?! Your friend is wrong :smile: but then, of course it depends what you want to use a language for. Languages are often suited to certain tasks - the reason MATLAB might be thought of as a 'data cruncher' for instance, is that it's designed to handle data input as matrices. It's then very fast at processing large matrices - or large amounts of data. Matlab is definitely one of the most commonly used programming environments across an entire university. Possibly the most common - engineers use it, mathematicians use it, physicists use it, and I've seen life scientists use it - many of which can afford to use it exclusively for their work. All of my research is done in matlab. I can use C++ and a couple of other languages, but MATLAB does everything I need.

I would say that unless you've any reason to think that c++ or python will specifically be useful to you, stick with the MATLAB course. Matlab is pretty straightforward to get started in - there are lots of resources and tutorials out there and it's extremely powerful. Most chemists I know don't have any/much programming experience, bar Excel.
 
fasterthanjoao said:
I would say that unless you've any reason to think that c++ or python will specifically be useful to you, stick with the MATLAB course. Matlab is pretty straightforward to get started in - there are lots of resources and tutorials out there and it's extremely powerful. Most chemists I know don't have any/much programming experience, bar Excel.

I disagree on that. While MATLAB certainly is useful, I'd still go for Python first. The main reason being that nearly everything you can do in MATLAB, you can do in Python, too (look up scipy and matplotlib!), but the reverse is not nearly remotely true.[1]
Additionally, Python is a real general purpose programming language with a very clever and versatile design, and probably both the easiest to learn, easiest to apply, and most powerful general language all in one combination. Its main problem is that its dynamic design is not well suited for large scale software development or for high-performance computing (in the sense of writing hpc kernel routines in it)---but these aspects are unlikely to be a major concern when starting.

So my advice to the OP: if you learn only one language, let it be Python. With Python alone you can already tackle almost all small to medium sized programming and scripting tasks you are likely to come across. Of course it helps to know some more basic language like C or C++ (or even Assembler) to get some feeling of what the high level programming constructs are actually doing. But this is not mandatory when starting out.


[1] Of course this is related to lots of MATLAB's functionality being somewhat glorified LAPACK wrappers in many respects...
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 1 ·
Replies
1
Views
863
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 7 ·
Replies
7
Views
4K
  • · Replies 6 ·
Replies
6
Views
2K