It is possible to do all of the work for this class from any modern operating system (e.g. Windows, OSX, Linux); however some of the following resources will be specific to Linux and OSX systems. Windows users may always follow the instructions below for installing a Linux Virtual Machine if desired.


It is recommended that you install a Linux Virtual Machine on your personal computer, so that you can do all of your computing work for this class on your own schedule. Follow this link for instructions on setting up a Linux Virtual Machine that should contain all of the requisite software for this class.

Alternately, if you already use a Debian-based linux distribution (Ubuntu, Mint, Crunchbang, etc.), you can try using this script to install the necessary packages for this course.

Additionally, you should familiarize yourself with the Linux command line. Follow this link for a tutorial on using Linux.


The recommended C++ compiler for this class is the GNU C++ compiler, g++, that is typically installed by default on OSX and Linux systems (as well as in the Linux VM referenced above). In addition, our computing work in this course will rely on a custom C++ matrix class, that implements a high-level and object-oriented approach to linear algebra computations in C++.

Python and the Jupyter Notebook:

For our Python work in this class, you need to install Python that includes Matplotlib and the Jupyter notebook. I recommend using the Anaconda distribution to install Python and Jupyter.

Running the Jupyter Notebook:

If your system is set up correctly, you can now run your python codes and write your reports within an Jupyter Notebook. From a Linux or OSX command line:

$ jupyter notebook

In your notebook, please use the magics command

%pylab inline

By invoking it, the IPython interpreter will import matplotlib and NumPy modules such that you’ll have convenient access to their functions.

IDEs and Editors

Computer programs may be written in any text editor (e.g. Notepad or Textedit, or even Microsoft Word when saved as plain text). However unlike man, not all editors are created equal. Here is a list of some recommended programming editors (perform syntax highlighting, etc.) and Integrated Desktop Environments (IDEs) that combine the text editor with compilers, debuggers and documentation.

Recommended C++ IDEs
IDE Windows OSX Linux Free?
Code::Blocks Y Y Y Y
QT Creator Y Y Y Y
Codelite Y Y Y Y
Eclipse Y Y Y Y
Netbeans Y Y Y Y
Xcode N Y N Y
Visual Studio Y N N N
KDevelop N Y Y Y

Of these, Code::Blocks will be automatically installed on the Linux VM or by use of the provided package installation script (run codeblocks at the command line).

Recommended C++/Python editors
Editor Windows OSX Linux Free?
Emacs Y Y Y Y
Vim Y Y Y Y
GEdit Y Y Y Y
Geany Y N Y Y
TextMate N Y N Y
Notepad++ Y N N Y

Of these, Emacs and GEdit will be automatically installed on the Linux VM or by use of the provided package installation script (run emacs or gedit at the command line).