Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

What software is useful for a physics major?

  1. Apr 10, 2013 #1
    I am just finishing my freshman year as a physics major. I am wondering what software might be useful to get my hands on at this point?

    In chemistry, we used computers with Linux because he said they are able to process the information much faster than a Windows-based computer. Will most of the computers I use later on for physics be Linux-based as well? That was the only time I ever used Linux, so I was wondering if I might want to familiarize myself with it more? I have a spare hard drive that I don't use much at all at this point, so I can toss whatever I'd like onto it and was thinking of adding a Linux OS. Is there any point in doing so?

    What other software is useful? I have seen Wolfram's Mathematica included as well, although I don't have the spare cash for the version I would want to get right now. If anyone has any other suggestions (even if I can't afford it now, but would be useful for when I can), I would appreciate it.
  2. jcsd
  3. Apr 10, 2013 #2


    User Avatar
    Science Advisor

    Hey Ascendant78.

    I would recommend MATLAB, Maple, R, and some of the programming environments like Python, C++, and FORTRAN.
  4. Apr 10, 2013 #3
    It depends on the native platform each respective software is designed for. I believe most applications/programs are built for Windows, and optimized for Windows to utilize the hardware more efficiently. While there might be some hacks or side-support for other OSs like Linux or OSX, Windows probably gets the most customer support as I think they are funded with the most money. Linux is mostly supported by volunteer developers and such, but I don't think it's enough to compete with Windows development due to sheer amount of overwhelming finances. I think Linux would most likely be used in a programming environment, but in terms of software Windows should be your primary workstation in the future.

    As a free Mathematica alternative, I use Maxima (wxMaxima for Windows if you want a GUI)
  5. Apr 10, 2013 #4
    GNUPlot is the easiest and most powerful free graphing software I've found so far. Handles all sorts of data sets and with very little work (5 minutes of googling) you can plot almost anything. As freeware matlab alternatives, there's Scilab (debugger is horrible) and Octave(never tried). Python with its math packages is just as -if not more- powerful than all of these.

    There's also a freeware alternative of Origin for Linux (powerful GUI-baed program for windows pro graphs and analysis) but I forget what it's called.

    Get Texlive2012 and a latex compiler like Texniccenter installed on your machine and some latex templates for your school projects, lab reports, etc... Best to learn how to use it gradually before having to rush things when you have to do a senior thesis or whatever.
  6. Apr 10, 2013 #5
    Thanks so much for all the information. I don't have any classes planned for summer (mainly because all the ones I need next semester aren't offered during the summer), so I am going to put this information into a to-do list for over the summer. I'll be sure to check all of these things out.

    I'm really glad you told me that about Linux, because from what my chemistry teacher told us, he made it out like pretty much anyone in any science field needs to know Linux. Maybe it's just because of the particular software that he uses, but he said with Windows, the calculations take about 1,000 times longer with the program. Anyway, if I won't be using it later on down the road, I'm not going to waste time learning it.
  7. Apr 11, 2013 #6


    User Avatar
    Science Advisor

    I would strongly recommend to go in the direction of learning to get at grips with Unix/Linux.
    Chemists were much more affine to windows, so if even your chemistry teacher recommends Linux,
    you know what will be the recommendations of your future physics teachers!
    In physics you will be writing much of the software you need yourself and you will need to work with large amounts of data.
    Unix offers very efficient tools for these tasks and that free of charge.
    Which program do you want to use under Windows to edit a text file of say 1GByte of ascii data? Excel?
    It is certainly true that more professional work is invested in Windows products, but this work is only to a small amount spent into scientific software. Look at the actual popular assessments of Windows 8 They are completely centered on the new surface and the lack of the system button.
    Do you really think that the amount of work spent in development of this new surface will help you solving a differential equation?
    Windows is sometimes advantageous when you are in need for dedicated drivers for some custom components as these are sometimes only available for Windows systems.

    My advice is to get acquainted as soon as possible to work with text commands rather than GUI.
    Learn 10 finger system.
    Get used to some powerful editor like emacs or vim.
    Learn latex to write up your results and papers. You don't want to waste money on inferior solutions like mathtype
    to set equations in word and on costly reference managers like endnote.
    Get accquainted to the unix shell bash if you do not love to watch this cute little dog in windows searching in vain for your files for hours.
    You will need some programming language like C++ or python, perl, not only to solve complex equations but also to handle your data.
  8. Apr 11, 2013 #7
    Thanks for the information DrDu, I appreciate it. Although I've worked with computers since the Commodore 64, I haven't toyed with computer programming at all since that system, so this is all new and foreign to me. I've heard of some of the names mentioned here and there, but that's about it. I will be sure to look into all those things you mentioned.

    The 10 finger system is just learning to type with all 10 fingers, right? If so, I learned that back in high school (~120WPM at this point). Not sure if it meant something else as far as programming or something, so thought I'd ask.
  9. Apr 11, 2013 #8


    User Avatar
    Gold Member

    I feel that Mathematica is the most useful so far, as a theoretical physicist. I do a lot computationally, but don't really need super-computer power speed, and Mathematica allows for an easy interface for creating code that you don't need to compile, automatic diagram creation, and instant results with customizable plots. If only their LaTeX out worked well...
    Thats the other. I spent time writing papers in undergrad in Word with the equation editor. NEVER AGAIN. Get TeXmaker and a LaTeX distribution, and you can write all of your papers in beautiful type, with easily inputted equations (after a brief learning curve). If you ever make it to the field or grad school, you'll most likely be seeing it again. Better to learn it sooner.

    Really that's it. You'll need something that can handle symbolic algebra/manipulation and can do different types of integrals, both algebraically and numerically. You'll need good plots. Don't even think of using Exel...
  10. Apr 12, 2013 #9
    I'd recommend running Linux in a virtual machine (VMWare or Virtualbox), then you can keep Windows (or OSX or whatever) as your main OS, and run Linux in a window (or fullscreen) as you need it. Linux is a very nice OS for programming, there's A LOT of great software for crunching data, graphing data, etc, it's a very nice programming environment, and it's free.

    The Linux Mint distribution is great and it's super easy to learn. And come to grips with some basic console commands, you don't need much, but there are very powerful tools for the command line (like grep) that will save you a ton of time in the long run. Some basic Bash scripting and/or Python or Perl programming skills will serve you very well too.
  11. Apr 12, 2013 #10
    Thanks again, you've all been so helpful. I sincerely appreciate all the advice.

    One other thing I'm wondering... with so many suggestions here so far, where is a good place to start with all this? I don't know computer programming yet, so should I start with something like C++ or FORTRAN? Maybe familiarize myself with Linux? I'm just thinking computer programming first, because a lot of what all of you mentioned seems to be something to do with programming code, and a program that allows me to do it won't do me much good without knowing how to actually do it, right?
  12. Apr 12, 2013 #11
    I am glad to see opinion's emphasis back to Linux and scientific software.

    And don't get fooled with the Commercial vs Free argument...

    The chances of a commercial software being bad is low simply because the business model forces them to go bankrupt as users stop paying money for it....not because all commercial software is created great.

    And so, while it is possible to point to free software that is bad (it is not forced to go away), that does not mean there is no commercial software that is great...and there plenty; moreover, they get famous by their own merit and not thanks to some marketing engine.

    Start with Linux itself, for example...it is great and free.

    So, in regards to Adyssa's advice, I would actually recommend the opposite! Run Linux as your primary OS and THEN Windows on top of it...after all, Windows is a lot more likely to get infected, corrupted to the point where you will need a lot of acrobatics to recover. If Linux is your primary OS, it runs fine for the longest time without a problem and when Windows crushes, you simply re-image your Windows and move on.
  13. Apr 12, 2013 #12
    Start with python and primary modules for scientific computing like numpy, scipy, matplotlib.
  14. Apr 15, 2013 #13


    User Avatar
    Science Advisor

    Just wanted to add that when I was recommending unix-based systems this includes also modern apple, e.g. OS X systems. They are quite attractive as there are more commerical drivers available than for linux and you can run also e.g. word in case you have to communicate with administration without need for virtual machines or the like.
  15. May 26, 2013 #14
    Python has loads of versions and different quirks to be learned for each. It's more of a hobbyist programming language. Physics is primarily used in engineering. As such, an engineering environment such as Mathlab or Mathematica with System Modeler would be my first recommendation.
    The material you can use to study python is quite poor if you don't have a teacher to give you a study path. On the other hand, in most integrated programming solution you can access an online help system from your interface to get quick answers for each of your questions.
    The amount of data available on the web about python is great, but it is never standardized. You will spend many hours trying to find out why a piece of code you just found doesn't work on your python version. Once again, the integrated commercial tools succeed at giving you an edge to achieve your ideas...
    If you are truly serious about programming, I would suggest you sign up for a c++ programming class.

    I am a big fan of Mathematica. I've used maple to solve polynomials and to understand certain problems before also. I think the programming and the graphs of mathematica is simpler and more precise. Maple has speed advantage over mma for certain equations (by advantage I mean orders of magnitude). I'm an information science and computer engineering student as a programmer amongst other things in the past.
  16. Jul 4, 2013 #15


    User Avatar
    Gold Member

    If you go with the Linux route (I highly recommend you at least familiarize yourself with it; also, the comments in this thread about LaTeX are spot on. Learn it early.), I would bring the Sage package to your attention. It brings together Maxima, Python, numpy, and many other FOSS projects with a common interface. I would say that the output of Sage is better than Mathematica's, even, because of its tight integration with LaTeX.
  17. Jul 11, 2013 #16
    Good luck!!

    Hi there, It seems to me that you have a lot of information now, so that's why I wonder if you really need something else, but I think the best of street knowledge is out there for free, it comes from the experience that someone else had it passes to you like a finger snap. So, currently I'm doing a grad school (master) on a branch of science that unites chemistry, physics and engineering. Material's Science and in my experience there would be a lot of things I will most certainly if I could go back in time that I would do it properly. Ok long story short
    1) I would definite take some courses (even autodidactically) on PROGRAMMING.
    Yes it is true, someone said that there would be a lot of things that you'll have to build on your one that does not exist already and in theoretical physics there's a lot of algorithms to do too.
    2) I have recently had to installed again Windows because the software I need to use the Graphic User Interface (GUI) only works with win but the cluster of PC's in which the server version of the soft is put uses a linux based system I can tell you mi lap has a dual boot and when I am in the win partition it's speed gets palpable down, yes no one says that is easy to installed it to fix some bugs etc etc but for me you need to know as many OS as you can or need.
    3) I use MAPLE in both OS systems and I really recomended to you, you even get a discount if you are student, but there's again that old trouble, some will speak up for free software some will speak up for commercial soft so it's really up to you, I agree wiht GNU plot It saved my ... several times.
    This is so important that I'll put it with capital letters.

    Good luck and enjoy the ride
  18. Jul 11, 2013 #17
    Start with python, it is an introduction to scripting languages. you won't need markup languages for physics. just scripting languages.

    Learning linux is the best thing you can do for yourself. I say that because I am an IT major and I am very biased, obviously. Linux is what you will want to use when you start learning languages because of the opensource software that is available to you... interpreters, editors, etc.
  19. Jul 11, 2013 #18
    Well, thanks for the additional feedbacks. They are much appreciated.

    With how much feedback I have gotten on here, I do have a long list of things to do. With most of the summer over already, I found most of my time this summer has been put into:

    1. Studying for the GRE. Yes, I know it is early, but I figure the more time I have to study, the better I can do when I actually take it. Plus, I figure if I can prepare myself to take it sometime this coming semester, it will leave next summer wide open for me to do REUs, excluding a move at some point for my transfer.

    2. Studying Spanish. I figure the higher I place, the less courses I will have to take to fulfill the foreign language requirement later on, giving me the opportunity to immerse myself in more physics courses. Although I heard German is the recommended language for physics majors, I already took a couple Spanish courses in high school, figure it would come in far more useful in daily life, and I just don't have the time to learn another new language from scratch at this time.

    3. Refreshing myself on the calculus from this semester. Since each consecutive course in calculus builds on the previous ones, I really wanted to make sure I have it all down pat. Despite getting an A in the course, I felt there were some things that we rushed through and want to make sure I didn't forget any of it during my summer break. Doing so has really helped me gain a deeper understanding (and appreciation) of many of the methods.

    4. Learning Linux. Despite putting hours and hours into it, I still don't really feel like I know it all too well. Maybe it's just because I'm comparing it to the decades of experience I have with Windows. I know the very basics as far as organization of files, a few dozen of the basic commands, and a general idea of how the OS works. At this point, I am happy leaving it at that until the time comes where I need to learn more.

    5. Skimming through physics research. I am only skimming because most of the technical nomenclature goes over my head still. However, I skim through them here and there to at least get an idea of some of the things being researched in different fields.


    Anyway, I really do appreciate all the feedback on here. It has given me a lot of things I want to look into.
  20. Jul 20, 2013 #19
    As an IT guy, I wouldn't recommend putting too much emphasis on learning Linux. The system changes from distro to distro and from version to version. There's no standard and no foreseeable standardization. Only the Kernel is trustworthy to remain highly efficient, stable and interoperable. If you're not going to be a network engineer or a web programmer, you shouldn't worry about linux too much. Linux servers = amazing; linux desktop = time sucking devices. Hopefully android OS will come to desktop one day and finally offer a viable alt to MS and Apple...

    Learn programming imo.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook