All your programming assignments must run on nunki.usc.edu which is a Unix machine running Solaris or on a Ubuntu 14.04 or 16.04 machine running inside VMware/VirtualBox/VagrantBox. In order to get on nunki.usc.edu, you need to ssh into it. Unfortunately, our ssh connection over the campus wireless network can be slow or unreliable. To save frustration, it may be better to develop your work on a Linux machine and occasionally copy your code to nunki.usc.edu to make sure that your code works on both machines.
Please understand that Linux is not Solaris. Your code may work perfectly on Linux but fail to even compile on nunki.usc.edu! Therefore, you must not assume that whatever that works on Linux will work on nunki.usc.edu. The only way to make sure is to do rigorous testing on nunki.usc.edu, if you want to make sure that your code runs perfectly on nunki.
To minimize hardware incompatibility, the best way to run Linux is to install Linux into a virtual machine. This can be a lot of work. Fortunately, there is something called Vagrant that's not too difficult to install. (Although it may not be so easy to use if you are not familiar with the commandline interface of Linux/Unix since its desktop is hidden from you.) Vagrant can work with different virtual machine environments (some would call them "virtual machine containers"). We will use VirtualBox below since it's available for both Windows and Mac machines.
All examples below will assume that you have a 64-bit machine since it's more common these days. Although inside a virtual machine, we will run a 32-bit Linux system (Ubuntu 14.04) since nunki.usc.edu is a 32-bit machine.
The problem with Windows is that it doesn't run Unix with X11! In order for you to ssh into nunki.usc.edu, you have to use something like X-Win32. You can get X-Win32 from the ITS Software site. But the problem with X-Win32 is that it only works if you are on the USC networks (due to licensing). If your wireless connection is unstable, we are back to our original problem. So, our first step would be to install Cygwin. Please follow these steps to install Cygwin before proceeding.
Here are the quick and dirty steps to install Vagrant with VirtualBox:
Mac Os X is running Unix, but it's not running X11. Therefore, you need to first install X11. Download and install XQuartz, which includes X11 server and client software. After it's installed, run XQuartz.app from the Utilities folder in Applications. You should get a window with "xterm" in the titlebar. This is your "terminal" window running a Unix "shell".
The rest of the procedure is the same as for Windows! The only difference is that instead of using a Cygwin Terminal, you will be using a "terminal/xterm".