The Nonlinear Optics Web Site

The Essential Toolbox of a Physicist


The Bare Essentials

There are certain indispensable tools of the working scientist. Most of the software available on the market is not designed for the scientist, and the choice is even more sparse for the practicing physicist.

Since some of the most versatile and powerful software has a steep learning curve, it is important to choose the right tools early in life when the gray matter is still fresh, preferably in graduate school or sooner.

Common tools include a good scientific typesetting package to prepare manuscripts and high-quality documents/proposals, a bibliography program to keep a database of references, a vector drawing program for making figures, and a scientific spreadsheet with publication quality graphing package.

Other useful software packages include data fitting and analysis software, symbolic manipulator, compiler for scientific languages such as C, a presentation program for giving talks, etc. The various packages that I recommend are based on years of experience using a variety of packages. Your tastes may differ, so feel free to disagree with me!

Essential Software

At minimum, all physicists should have the following tools.

High Quality Scientific Document Preparation

Aside from actually doing research, the typical scientist spends a large fraction of time writing. This includes proposals, papers, and reports. I can not stress enough the importance of getting a package that can do everything. While MS Word can be cajoled into doing a lot of things, no piece of software can typeset a piece of physics more beautifully than LaTeX.

While LaTeX has a steep learning curve, it literally can do everything. It typesets beautiful equations, places figures in the right place, makes references and citations simple (even when cutting and pasting large chunks of a document), and never crashes. I found dealing with my 500-page single-spaced book project in LaTeX easier than writing a 30 page proposal using MS Word. A nice bonus is that many LaTeX distributions are free and all physics journals accept articles typeset in LaTeX.

What You Need

To use LaTeX, you need a text editor to create the document and a distribution of LaTeX to compile it. In a sense, the document that you create in a text editor is like a computer program, and LaTeX is like a compiler.

In my opinion, the best distribution of LaTeX is MiKTeX. I use WinEdt as a text editor because it works seamlessly with MikTeX. It runs MiKTeX at the click of a button, and opens a window with the typeset document. Also with the click of a button, it converts documents to pdf format. The downside is that WinEdt is shareware and it costs $40 to register, $30 if you are a student. But I find it worth the price.

A free alternative is TeXnic Center, which users tell me is as good as WinEdt. Note that MiKTeX is a huge package that would take forever to download. I therefore recommend that you download the small version of MiKTeX. If you use a package that is not part of the distribution, MiKTeX will automatically download what it needs on the fly (assuming, of course, you have internet access and select this option). Eventually, you'll end up getting everything you need.

So, you will need:



WinEdt or TeXnic Center

Beginners may find Michelle Krummel's YouTube tutorial on using LaTeX useful. 

Reference Databases

Reference databases are a big headache. The beauty of LaTeX is that it can call a reference from a database stored in a .bib file. While you can use a text editor to directly enter references into the database, there are several available reference managers that make it much easier.

I formerly used Endnote, but find the high price prohibitive. So, I now use a little program called JabRef, which is specifically designed to be used with Latex; and, it is free. Best of all, it does not have many bells and whistles, but does everything that a LaTeX user needs.

Download: JabRef


Vector Drawing Program

A vector drawing program is used to draw figures, and is the electronic version of a pencil/pen. "Vector" refers to the way the images are stored. Lines are characterized by the line type and endpoints. Other object types are similarly encoded to save memory. In contrast, a bit map stores all of the dots that define a line - all details that you do not need to know to run the software.

Being able to export drawings in encapsulated postscript (.eps) format or .pdf is essential. While MikTeX is compatible with several formats, I recommend using eps (or pdf) for figures.

I continue to use Corel Draw, but have not purchased a new version for quite some time. Adobe Illustrator is another good package. But, these commercial products are very expensive. I recently found a free vector drawing program called Inkscape. Based on my casual tests, I find it to be very powerful, and perhaps easier to use than Corel Draw. It's about 33MB, so takes a while to download.

Download: Inkscape

Publication Quality Graphing

Publication quality graphing software is one of the most important tools because it brings to life experimental data and theoretical results - the things that physicists produce.

By far, my favorite piece of software is Origin. It has built in data analysis functions such as least squares fitting, image analysis capabilities, and a scientific spreadsheet that allows for columns to be calculated using a huge number of advanced functions. It even has a built in C compiler with all of the NAG functions included. My favorite feature is that I can define very complicated functions using C, and compile them into Origin. So, my special functions are built in so I can use them in analyzing data or doing calculations as easily as sines and cosines. I find Origin indispensable for both theoretical and experimental work.

The downside is that Origin is pricey. On the positive side, the student version is $50.

Download: Origin

Symbolic Manipulation

I like to do all analytical calculations by hand. Sometimes, however, things get so messy that it becomes essential to use a symbolic manipulator (SM). Mathematica is the king of SMs, but I resent the yearly license fee. On the plus side, the student version never expires. Another package that I like is MathCad, which is used more by engineers, but the academic version is relatively inexpensive and the license does not expire. I also have had students who loved Maple.

Before Mathematica came on the scene, Macsyma ruled. More recently, it has been reincarnated into a software package called Maxima; and it's free!

Download: Maxima


I fell in love with Python many years ago now and still think it's great though I don't code much anymore. It is a programming language that is run easily from an interpreter window, meaning that you can combine modules that you have written (without having to compile them) as easily as in MatLab. There are so many packages available for Python that will let you manipulate matrices, solve differential equations, find roots, etc. However, I still find Origin useful for analyzing data and making the prettiest of plots very easily.

Python is free, as are most of the useful modules that you will ever need. While you can download Python and write code in any text editor, I like to use an Integrated Development Environment (IDE) because it corrects program errors while you type, and in the end, this avoids many headaches.

There are many powerful IDEs out there, many of them free. However, the ones that are the most flexible and in the long run may be the most desirable, are often hard to configure the first time. Since you want to start programming right away, I recommend WinPython for windows users.  Another advantage is that it runs off of your drive rather than being installed by windows.  I keep mine in Dropbox so it appears on all my computers without having to load it on each one.

Download (free version recommended): WinPython

Download (not needed if you use Canopy): Python