Starting from Fall 2016, COMS 3136 & 3157 will no longer use CLIC machines. Instead we will use our own server running on Google Cloud Platform. The details will be announced later, but our new servers will be configured the same way as the CLIC machines. The setup instructions below still apply, except that you are no longer using clic.cs.columbia.edu. The server names will be announced later.
All hw assignments in this class will be graded on one of the CLIC machines. All CLIC machines have identical configurations:
Ubuntu Linux 12.04 64-bit.
This means that either you do all your programming on CLIC or you make sure your submission will run on CLIC before you submit.
If you are NOT familiar with Linux environment, you need to become familiar with it ASAP. I recommend you spend some time this week in the CLIC lab to learn basic Linux. This link came up top when I googled for “linux tutorial for beginners”:
The first 5 chapters (up to “Tutorial Four”) cover the basics to get you started. (Don’t bother with the rest of the chapters.) You may also want to go to a bookstore and pick up a good book on using Linux. There are many.
Even if you are planning to use the CLIC machines remotely, I recommend you visit the lab at least once and make sure you can login and work there. This might come in handy, in case your home internet connection is down, for example.
If you don’t want to work in the CLIC lab, you can access the CLIC machines remotely from your own computers.
On a Mac or Linux, launch the “Terminal” app, and type:
ssh -X YOUR_UNI@clic.cs.columbia.edu
On Windows, you can use MobaXterm.
Being able to log in and work on a CLIC machine is all you need for this course. This section talks about how you can setup your own Linux machine to work locally on your own computer instead of connecting to a CLIC machine. If this does not interest you, you can skip this section. Or maybe skip this section for now, and come back to it later if and when you find working remotely on a CLIC machine less than satisfactory.
First off, before you submit your homework, you should move your code to your CLIC account, test it, and submit it from there. Even if you run the same Ubuntu 12.04 64-bit, things may break in a different configuration (CLIC can have a different version of gcc, for example.) So always test on CLIC before you submit.
For Mac and Windows machines, there are three ways to setup a UNIX environment:
Programming on Mac
Mac is UNIX, so it is very similar to Linux. If you install Xcode, you get gcc. However, there are enough difference in them so that fixing up your code to run on CLIC won’t be completely trivial. If you go this route, make sure you leave at least a few hours before the deadline to do the testing on CLIC in case something weird comes up and you don’t know how to fix it. In my opinion, this is not worth it, especially when you have the option (3) below.
Programming on Windows
Windows is very different from Linux. Its native programming environment (Microsoft Visual Studio) looks and acts nothing like Linux.
There are ways to make Windows look and feel similar to Linux. These involves installing 3rd party extensions such as Cygwin or MinGW. But they are not the same. (It’s been a few years since I tried them, but I don’t think they changed much.) There are just too many differences to make this a viable option. Not recommended.
Running Linux as a virtual machine in Mac or Windows
You can run Linux in a virtual machine using VirtualBox. You can use VMware too, but it’s not free, so I don’t see the point when VirtualBox free and just as good. (CRF gives you VMware for free, but it will expire in one year.)
Download VirtualBox and install it.
Download Ubuntu Linux 12.04, 64-bit from http://www.ubuntu.com/. You will get a .iso file, which is a CD-ROM disk image.
Run VirtualBox, create a virtual machine, and install Ubuntu Linux into the VM using the CD image you just downloaded. See VirtualBox manual, chapter 1, “First Steps”.
The official way to code in this course is to use a text editor and command
line tools. There are two popular text editors in the UNIX environment:
Emacs and Vim.
They split power users and programmers in UNIX world into two camps (that
constantly make fun of each other). The choice between them largely boils
down to personal taste. I recommend you pick one of those as your editor
and start using it, learning tips and tricks as you go. You can start with
the built-in tutorials: run
vimtutor at the command prompt for Vim, and
click on “Emacs Tutorial” under Help menu for Emacs. Emacs and Vim have
been ported to virtually every platform, so you can install and use them on
your PC or Mac as well.
Another possibility is Nano (also called Pico). Nano is very easy to use, especially for beginners, but it is rather limited in functionality. It is only recommended for those who are new to UNIX and feel there are just too many things to learn before you get to do anything. Even so, I recommend that you switch to either Emacs or Vim as early as possible.
The application that you interact with in a terminal window – the thing
that prints the command prompt and carries out the commands that you type –
is called a “shell”. First, you need to make sure you are running a correct
shell. Try typing
echo $SHELL. You’re good if you see
not (and you’re not a UNIX wiz who actually want something different),
contact CRF and tell them to change your
login shell to “bash”. Until they do, you have to manually type
as soon as you login in order to switch to a bash shell session.
There is something you need to add to the
.bashrc file in your home
directory to setup your shell environment for this class. Add the following
line at the end of your
.bashrc file in your home directory:
(You should of course replace your_editor with either vim, emacs, or nano, depending on what editor you actually use.)
Log out of the computer and log in again. Type
echo $EDITOR to see if
your modification to
.bashrc has taken effect. If it hasn’t, try adding
the following lines to
.bash_profile file in your home directory:
if [ -f ~/.bashrc ]; then source ~/.bashrc fi
Here are some UNIX commands that you should get comfortable with. You can
man command to display the manual page for any given command.
man, cat, less, rm, cp, ls, ll (an alias for ls -alF), pwd, cd, mkdir, alias, locate, gcc, make, touch
Here are some more that you will find handy:
clear, history, date, mv, grep, diff, find, tar
Last updated: 2014–01–20