Recommended Software
During my undergraduate degree and PhD I have found many handy tools and libraries. Here is a list of software I think others may also find useful.
As I use Debian based GNU/linux operating systems and am a supporter/user of open source software, many of the recommendations will fall into these categories. However the majority of the software packaged listed are cross-platform.
Finally many of the software packages are provided for free by volunteers, if you find them useful please consider donating.
Contents
In no particular order.
Geany - Small lightweight IDE
Code::Blocks - C, C++ and Fortran IDE
Texmaker - LaTeX editor
Octave - Matlab clone
Graphviz - Graph visualization
Valgrind - Memory error detector
Gprof - Profiler
Astyle - Code Formatter
Dia - Diagram creator
Inkscape - Vector graphics software
Meld - Visual diff and merge tool
Imagemagick - Converts and edits bitmaps
Jabref - Bibliography reference manager
Openscad - Programmers 3D CAD modeller
FreeCad - Parametric 3D modeller
Naturaldocs - Multi-language documentation generator
Swig - Generate scripting interfaces to C/C++ code
FANN - Fast Artificial Neural Network Library
Geany

Geany is the IDE I use day to day (in fact I am editing this website using it right now!). It is very simple but has all of essential features of any IDE (syntax highlighting, auto-completion, code navigation etc). It also has a really nice plug-in support with many plug-ins available including a spell checker and debugger integration.
Geany is basically a tabbed text editor with a file manager and terminal bolted on the sides. It does a good job of getting out of the way of programming and is very simple to use. It also has configurable build, compile and run buttons which can be directed towards Makefiles :)
Website: www.geany.org
Licence: GNU GPL
Price: free
Packages: geany, geany-plugins
Code::Blocks

Code::Blocks is a much more fully featured IDE than geany. It has many features associated with more mature IDEs. However it is not a general IDE, it is build primarily for use with C, C++ and Fortran (only for the hardcore!). It also has a plug-in system with many additional packages available.
Website: www.codeblocks.org
Licence: GNU GPL
Price: free
Packages: codeblocks, xterm
Texmaker

Texmaker is a fully featured LaTeX editor. I use it for nearly all of my document creation. It includes auto-completion, a spell checker and a build in pdf viewer. It also allows for custimisible quick build options (perfect for when you needer to run pdflatex+bibtex+pdflatex+pdflatex+viewPDF).
For those unfamiliar with LaTeX it is a document creator (think of it as an alternative to word). You describe the document in a scripting style language and then compile it into a document. It produces beautiful documents, with great support for mathematical equations. It is widely used in the academic world for publications. Although there is a learning curve it more than worth it.
Website: www.xm1math.net/texmaker
Licence: GNU GPL
Price: free
Packages: texmaker, texlive-full
Octave

I love Matlab, it a great tool for number crunching, analysing data, plotting results and testing out new ideas quickly. However, Matlab is expensive (£85 home user, £1,600 commercial user). That is where Octave comes in. Octave is a free Matlab clone which is almost as good. It has many of the features of Matlab with many of the toolboxes proved (either by Octave or other users).
Recently Octave also brought out a rather nice IDE which is very similar to Matlab's. It has many of the nice features of the Matlab IDE including integrated documentation support.
Website: www.gnu.org/software/octave
Licence: GNU GPL
Price: free
Packages: octave
Graphviz

This one might not be useful for everyone, but if you need it, its great! Graphviz is used to plot graphs, not bar charts, but vertices and edges. If you have some graph based data and want to visualise it, Graphviz is the one.
Website: www.graphviz.org
Licence: GNU GPL
Price: free
Packages: graphviz
Valgrind

Valgrind is *the* tool for chasing memory leaks in executables/binaries. Its not the most glamorous tool on this list but when your need it, its there. It can do a lot more than memory error detector, but that's all I use it for. Also, it has a really nice icon!
Website: www.valgrind.org
Licence: GNU GPL
Price: free
Packages: valgrind
Gprof
Again not the most exciting tool but really useful when you need it. Gprof can profile C, C++ and Fortran applications. It can show you a flat profile (time spent in each function) and a call graph (what functions call what other functions and the time spent in each). You typically use C, C++ or Fortran because you want fast code. Gprof helps you write fast code. Enough said.
Website: www.cs.utah.edu/dept/old/texinfo/as/gprof.html
Licence: GNU GPL
Price: free
Packages: binutils
Astyle
If there's one thing which gets programmers irrationally angry its code formatting. Tabs vs space, brackets on separate lines - you get the idea. Enter astyle. Astyle lets you take a C / C++ / Objective‑C / C++/CLI / C# or Java source file and easily format it to your own desires. There are many build in styles including K&R C, GNU and linux but you can also define your own. This means you can take other people code and have it meet your strict formatting desires; sigh of relief.
Website: www.astyle.sourceforge.net
Licence: GNU LGPL
Price: free
Packages: astyle
Dia

Dia is a very simple program for creating diagrams. Think of it as the MS paint of the vector diagram world. There is next to no learning curve and it can export bitmaps and vector graphics.
Website: www.dia-installer.de
Licence: GNU GPL
Price: free
Packages: dia
Inkscape

Inkscape is a fully featured vector graphics package for creating professional looking images. There is a learning curve to Inkscape but once you get the hang of a few tricks it very powerful.
Website: www.inkscape.org
Licence: GNU GPL
Price: free
Packages: inkscape
Meld

It is often useful to be able to compare two (or more) documents for differences. For instance to see the changes made to a source file or latex document. There are many tools available for such a task but none half so beautiful as Meld. They really have just nailed it. Highly recommended.
Website: www.meldmerge.org
Licence: GNU GPL
Price: free
Packages: meld
Imagemagick

Imagemagick is a little gem of command line tool if you ever need to convert one image format to another. The syntax couldn't be simpler and its very powerful. Another handy feature is it allows to to quickly change the quality of an image. It also has many editing tools but personally for image editing I like a GUI ;)
Website: www.imagemagick.org
Licence: Apache 2.0
Price: free
Packages: imagemagick
Jabref

Jabref is a tool for managing your .bib bibliography files used by Latex. It provides a nice GUI to your .bib files and allows for easy editing. It also allows you to include notes and link to papers stored on your machine.
Website: www.jabref.sourceforge.net
Licence: GPL
Price: free
Packages: jabref
Openscad

Openscad is a scripting language for describing 3D objects. If your not used to standard CAD packages, but have some basic programming skills, Openscad can get you a long way. Its very powerful and very simple and as its a scripting language you get parametric modelling from the get-go.
Website: www.openscad.org
Licence: GPL
Price: free
Packages: openscad
FreeCAD

FreeCAD is a full blown parametric 3D modeller. As a result it has a reasonable learning curve but is remarkably powerful and feature rich. However FreeCAD is still in its initial development phase so you have to be forgiving with some interesting behaviour from time to time. I find the nightly builds to be very stable if you don't mind compiling it yourself.
Website: www.freecadweb.org
Licence: LGPL
Price: free
Packages: freeCAD
Naturaldocs
Writing documentation for code is dull, so very dull. That's why tools which convert your well commented code into full API documentation are great. Of the many tools which do such a thing I find Naturaldocs one of the nicest. The main selling point for me was the format of the comments processed by Naturaldocs look like the sort of comments I would write anyway. For this reason switching to its use was painless. The documentation it produces looks rather nice too. Its also compatible with many languages which is also nice.
Website: www.naturaldocs.org
Licence: Affero GPL
Price: free
Packages: naturaldocs
Swig
Swig is one of those tools that I think more people should at least know about. Swig can be used to call the functionality of compiled C / C++ programs form MANY scripting languages. This is really useful when you want to combine the speed of C / C++ with ease of say Python. A use case would be a games engine. Games engines are mostly required to be as fast as possible. For this reason they are often written in C++. Using Swig the logic of the game can then be written in a friendly scripting language and the functional of your nice fast games engine called from there. There are obviously many other applications such as physics simulations, CAD engines etc. O yes and its really simple to use - a nice bonus.
Website: www.swig.org
Licence: GPL
Price: free
Packages: swig
FANN
FANN is a really nice, really fast, really simple and really well documented artificial neural network library. If you are interested in chucking a neural network at a problem then I recommend using this library. It has also been bound to many languages so you can pick your particular favourite poison.
Website: www.leenissen.dk/fann/wp/
Licence: LGPL
Price: free
Packages: libfann2